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