iptables实现端口转发

实现使用防火墙9898端口访问内网front主机的22端口(ssh连接)

1. 防火墙配置(lb01)

# 配置iptables
# 这条命令的作用是将所有目的地为192.168.100.155且目标端口为19898的TCP数据包的目标IP地址改为10.0.0.148,并将目标端口改为22
iptables -t nat -A PREROUTING -d 192.168.100.155 -p tcp --dport 19898 -j DNAT --to-destination 10.0.0.148:22

# 注意!需要配置一条出来的SNAT
# 没有这一条SNAT,进出流量的端口是不匹配的,因为iptables没有会话保持功能,是包匹配的
iptables -t nat -A POSTROUTING -d 192.168.100.148 -p tcp --dport 22 -j SNAT --to-source 192.168.100.155:19898

  • iptables:这是用来设置、维护和检查Linux内核防火墙的命令行工具。
  • -t nat:指定要操作的是nat表。iptables有多个表,每个表包含不同的链,nat表用于处理网络地址转换。
  • -A PREROUTING:-A表示向链中添加一条规则,PREROUTING链在所有数据包进入本机之前应用,这是设置DNAT的理想位置。
  • -d 192.168.100.155:指定目标IP地址为192.168.100.155,即只有目的地址为这个IP地址的数据包才会受到这条规则的影响。
  • -p tcp:指定协议为TCP。
  • –dport 9898:指定目标端口为9898,即只有目标端口为9898的TCP数据包才会受到这条规则的影响。
  • -j DNAT:-j表示跳转目标,DNAT表示执行目标地址转换。
  • –to-destination 10.0.0.148:指定转换后的目标IP地址为10.0.0.148。这意味着所有目的地为192.168.100.155且目标端口为9898的TCP数据包,在经过NAT转换后,它们的目标IP地址都会被改为10.0.0.148:22。

2. 内网服务器配置(front)

无需配置

测试

  • 未配置策略
    ssh连接请求超时
    :22

  • 已配置策略
    ssh正常访问成功
    需要注意的是,必须配置回程的SNAT,因为iptables没有会话保持功能,是包过滤防火墙。若不配置,会导致来回的端口不一致而被丢弃。
    在这里插入图片描述

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐