iptables端口使用两个接口将公共网络转发到专用网络

iptables端口使用两个接口将公共网络转发到专用网络

iptables 端口从公共接口上的传入连接转发到专用接口。

我想做以下事情(在kali linux中):

1.) 来自外部的传入连接到达公共接口(例如 wlan0、119.118.117.56:8080)

2.) 使用私有接口(例如 eth0、172.20.15.5)将 119.118.117.56:8080 转发到 172.20.15.9:443

3.) 获取从 172.20.15.9:443 到私有接口(eth0、172.20.15.5)的响应

4.) 将响应从私有接口(eth0、172.20.15.5)转发到公共接口(wlan0、119.118.117.56:8080),以将响应发送回公共接口上的传入连接

答案1

我们可以使用一条DNAT规则来拦截传入数据包并将其重定向到内部 IP:

iptables -t nat -p tcp -A PREROUTING -j DNAT -d 119.118.117.56 --dport 8080 --to-dest 172.20.15.9:443

除非内部设备172.20.15.9使用172.20.15.5作为默认网关,否则我们需要伪装数据包:

iptables -t nat -A POSTROUTING -d 172.20.15.9 -j MASQUERADE

您还需要允许来自外部的转发(最初传入)连接:

iptables -I FORWARD -i wlan0 -p tcp -d 172.20.15.9 --dport 443 -j ACCEPT

并允许在内部接口上传入答案:

iptables -I FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

另外,必须在内核中启用 ip_forwarding:

sysctl net.ipv4.ip_forward=1

要使此更改永久生效,/etc/sysctl.conf请使用以下行进行编辑

net.ipv4.ip_forward=1

相关内容