场景
假如你在用 resin 调试一个 Web 程序,需要频繁地重启 resin。这个 Web 程序需要开在 80 端口上,而 Linux 限制 1024 以下的端口必须有 root 权限才能开启。但是你又不愿意在调程序的时候总是开着一个 root 终端。在这种情况下,你可以把 resin 开在默认的 8080 端口上,然后使用 iptables 来实现和真的把服务开在 80 端口上一样的效果。
方法
将与 80 端口的 TCP 连接转接到本地的 8080 端口上。使用 DNAT (Destination Network Address Translation) 技术可以满足这一要求。因为 iptables 在处理本地连接和远程连接的方法不同,所以需要分开处理。下面假设本机的 IP 是 192.168.4.177
。
远程连接
远程连接指的是由另外一台机器连接到这台机器上。这种连接的数据包在 iptables 会首先经过 PREROUTING 链,所以只需在 PREROUTING 链中作 DNAT。
# iptables -t nat -A PREROUTING -p tcp -i eth0 -d 192.168.4.177 --dport 80 -j DNAT --to 192.168.4.177:8080
本地连接
本地连接指的是在本机上,用 127.0.0.1
或者本机 IP 来访问本机的端口。本地连接的数据包不会通过网卡,而是由内核处理后直接发给本地进程。这种数据包在 iptables 中只经过 OUTPUT 链,而不会经过 PREROUTING 链。所以需要在 OUTPUT 链中进行 DNAT。除了对 127.0.0.1
之外,对本机 IP (即 192.168.4.177
) 的访问也属于本地连接。
# iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8080
# iptables -t nat -A OUTPUT -p tcp -d 192.168.4.177 --dport 80 -j DNAT --to 127.0.0.1:8080
注意事项
你也许需要通过以下命令打开 IP 转发:
# echo 1 > /proc/sys/net/ipv4/ip_forward
在进行试验时,如果要重新设置 iptables,需要首先清空 nat 表:
# iptables -F -t nat
分享到:
相关推荐
将本地3389端口 转发到192.168.10.210的22(主要访问到本机的15210端口,就会跳转到192.168.10.210的22) 【步骤】 1、 首先应该做的是/etc/sysctl.conf配置文件的 net.ipv4.ip_forward = 1 默认是0 这样允许...
本地端口转发是指将远程服务器的端口转发到本地机器上,实现本地访问远程服务器。下面是一个示例配置: 1. telnet-server 服务器配置 首先,需要在 telnet-server 服务器上安装 telnet 服务,并禁用客户端直接访问...
此外, socat可以与其他工具结合使用,如iptables,实现更复杂的网络策略。 socat-1.7.3.2是 socat的一个版本,可能包含了该软件的一些修复、优化和新特性。用户可以通过下载并安装这个版本来使用 socat。在实际...
另外,如果你熟悉iptables,也可以使用iptables进行端口转发。例如,以下命令将外部IP(202.106.0.20)的2533端口的流量转发到内部IP(192.168.1.88)的80端口: ``` WAN_IP="202.106.0.20" iptables -t nat -A ...
端口转发可以通过操作系统内置的命令行工具(如Linux的iptables或Windows的netsh),或者第三方软件(如SSH的端口转发功能)实现。 具体操作步骤可能如下: 1. 定义一个本地端口,例如8080,作为转发的入口。 2. ...
- 甲使用客户端软件发起连接,通常使用一个临时端口(通常是大于1024的端口)。 - 乙的Telnet Server监听的端口通常是23号端口。 #### 九、总结 iptables是一款功能强大的工具,通过灵活配置可以满足不同场景下的...
具体的iptables规则包括但不限于:允许本地网卡访问、允许内网ping操作、允许远程主机已经建立的连接流量、转发内网地址流以及将特定端口的流量重定向到内网服务器。最后,文章还演示了如何保存和恢复iptables规则,...
说是一个功能,其实是两个用法,一称之为本地端口转发,一称之为远程端口转发。 SSH端口转发其实就是类似iptables的端口数据转发功能,也即是将请求在某一个指定端口的数据,转发到另外一个指定的端口上。呵呵,很...
- Iptables本身不直接处理数据链路层的信息,但可以通过与其他工具(如ebtables)配合使用来实现对数据链路层数据包的过滤和修改。 #### 六、扩展与兼容性 - **版本兼容性**: - 本文档提到的iptables版本为1.2.7...
其中,`LOCAL_PORT`是你希望监听的本地端口号。 3. **接受连接**:通过`serverSocket.accept()`方法等待客户端的连接请求。这将阻塞直到有连接到来。 ```java Socket clientSocket = serverSocket.accept(); ``` 4...
#### 二、iptables的使用 iptables的命令格式较为复杂,一般格式如下: ```bash iptables [-t 表] -命令 匹配 操作 ``` - **表选项**:指定命令应用的表。 - **命令选项**:指定iptables的执行方式,例如插入规则...
`iptables`是Linux系统下常用的网络管理工具之一,主要用于实现包过滤、网络地址转换(NAT)等功能。通过配置iptables规则,我们可以对进出系统的数据包进行精细控制,从而达到网络安全防护的目的。 #### 二、...
皮纳特纯 Python 中的 DNAT 端口转发异步(使用非阻塞库) 没有依赖与 PyPy 兼容用例您需要将端口从执行机器转发到另一台主机例如,您想通过 Web 服务器临时将 SSH 转发到 NAT 主机您的应用程序是多进程的,不能保证...
iptables是Linux系统中的一种强大的网络访问控制工具,主要用于在内核级别的netfilter模块下实现包过滤、网络地址转换(NAT)以及数据包修改等功能。它对于网络安全和服务器管理至关重要,尤其是在企业环境中。 1. ...
iptables中的filter表包含三种主要链:INPUT(用于处理入站数据包)、FORWARD(用于处理转发数据包)和OUTPUT(用于处理出站数据包)。默认情况下,这些链的策略都是ACCEPT,这意味着所有的数据包都会被接受。但出于...
JNA允许Java代码直接调用C/C++的函数,例如Windows的`CreateFileMapping`和`MapViewOfFile`,或者Linux的`iptables`命令,从而实现更灵活的端口映射策略。 5. **Java RMI(远程方法调用)**: 虽然RMI主要用于对象...
它包含三个内置链:INPUT(处理进入的数据包)、FORWARD(处理转发的数据包)和OUTPUT(处理本地生成的数据包)。 - **nat** 表: 用于实现网络地址转换(NAT)等功能。它包含三个内置链:PREROUTING(修改进入的数据包...
在这个“两小时玩iptables”的教程中,我们将深入理解iptables的基本概念、主要功能和使用方法。 首先,iptables是基于Netfilter框架的,Netfilter在Linux内核中构建了一个钩子系统,允许iptables在数据包经过网络...
使用私有IP地址的ISP B.5. 放行DHCP数据 B.6. 关于mIRC DCC的问题 C. ICMP类型 D. 其他资源和链接 E. 鸣谢 F. History G. GNU Free Documentation License 0. PREAMBLE 1. APPLICABILITY AND DEFINITIONS ...
如果你需要更底层的端口转发,可以使用Linux的内核功能和iptables工具。编辑`/etc/sysctl.conf`,将`net.ipv4.ip_forward`设置为1,以启用IP转发。然后,使用iptables命令进行端口映射: ``` # 转发请求 ...