iptables 是 Linux 操作系统中一个功能强大的防火墙工具,它用于配置网络传输相关规则,以控制进入和离开系统的数据包。iptables 可以执行多种任务,包括过滤基于源/目的 IP 地址、端口号、协议类型(如 TCP、UDP)等条件的数据包,以及实现网络地址转换(NAT)、包内容修改等高级功能。

将请求192.168.0.31的请求重定向至127.0.0.1

一、测试最终IP访问

  • curl http:/127.0.0.1:8080

二、配置

  • 查看原iptables规则 sudo iptables -L -n

  • 启用 IP 转发功能 echo "1" > /proc/sys/net/ipv4/ip_forward

  • 允许本地路由 sysctl -w net.ipv4.conf.all.route_localnet=1

  • tcp流量重定向 iptables -t nat -A OUTPUT -p tcp -d 192.168.0.31 --dport 8080 -j DNAT --to-destination 127.0.0.1

    可选参数 –dport 8080

  • 返回流量重定向 iptables -t nat -A INPUT -p tcp --sport 8080 -j SNAT --to-source 192.168.0.31

    可选参数 –sport 8080

三、测试重定向ip访问

  • curl http://192.168.0.31:8080

四、持久化

  • 保存规则 sudo iptables-save > /root/.iptables.rules
  • 恢复规则 sudo iptables-restore < /root/.iptables.rules
  • 机器启动时自动恢复 echo "iptables-restore < /root/.iptables.rules" >> /etc/rc.local

当前方法可能会对docker内部网络通信产生影响,进而导致容器产生异常,手动重启容器,故需要观察使用是否会产生影响