Ka *_* Rl 5 networking linux proxy iptables
我有一个在端口 X 上运行的 Web 服务。它从来没有打算在本地网络之外运行,但我想通过 Internet 访问它。因此,我需要将所有传入数据包的源 IP 地址更改为本地地址(例如 192.168.2.100)。否则,Web 服务会响应错误。
所以这是我需要的:
如果我使用公共 IP X 从我的家庭计算机发送数据包到我服务器的公共 IP 地址 Y,则源 IP 地址(在这种情况下 X)需要更改为本地 IP 地址(例如 192.168.2.1) . 之后,数据包应该传递到在端口 80 上运行在同一服务器上的 Web 应用程序。
好的,现在我想我明白你想要什么了。这是一个非常特殊的情况,与我之前发布的普通端口转发方法不同(见下文)。以下规则应该这样做。
我假设如下:
<x>: 服务器的公网IP<y>: 客户端的公网IP<a>: 服务器的内部 IP ( 192.168.2.1)<b>:客户端的内部“伪造”IP ( 192.168.2.100)<if>:外部接口(即eth0)仅 SNAT
此规则将更改数据包的源地址:
iptables -t nat -A INPUT -p tcp -d <x> --dport 80 -s <y> -j SNAT --to-source <b>
Run Code Online (Sandbox Code Playgroud)
结合 DNAT 和 SNAT:
这些规则将改变数据包的源地址和目标地址:
iptables -t nat -A PREROUTING -i <if> -p tcp -d <x> --dport 80 -s <y> \
-j DNAT --to-destination <a>:80
iptables -t nat -A INPUT -p tcp -d <a> -s <y> --dport 80 \
-j SNAT --to-source <b>
Run Code Online (Sandbox Code Playgroud)
不要忘记接受过滤表中的数据包。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 \
-j DNAT --to-destination 192.168.2.1:80
Run Code Online (Sandbox Code Playgroud)
这会将8080外部接口(在本例中eth0)上的传入数据包上的端口转发到内部主机192.168.2.1到端口80。用您的设置替换interface、protocol、dport和to-destination。
此规则将接受修改后的数据包:
iptables -A FORWARD -i eth0 -p tcp -d 192.168.2.1 --dport 80 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12893 次 |
| 最近记录: |