使用iptables双重DNAT
使用iptables双重DNAT
一、需求
由于企业内部网络安全问题,往往只开启一个端口供企业外部业务与也企业内部服务器访问。因此需要在企业网关的前端接一个前置机(192.168.0,91),用于供端口映射处理。
整体架构如下,其中:
前置机:192.168.0.91
企业网关:192.168.0.2,开发端口9000
企业内部服务器:192.168.0.92
客户端 → 192.168.0.91:2001 → 192.168.0.2:9000 → 192.168.0.92:2001 客户端 → 192.168.0.91:2002 → 192.168.0.2:9000 → 192.168.0.92:2002
二、实现步骤
步骤1,前置机(192.168.0.91)设置第一层转发
# 清除可能产生干扰的现有规则 (谨慎操作) # iptables -t nat -F # iptables -t mangle -F # 在mangle表的PREROUTING链给数据包打上标记 iptables -t mangle -A PREROUTING -p tcp --dport 2001 -j MARK --set-mark 1 iptables -t mangle -A PREROUTING -p tcp --dport 2002 -j MARK --set-mark 2 # 将包标记保存到连接标记中 iptables -t mangle -A PREROUTING -p tcp -m mark --mark 1 -j CONNMARK --save-mark iptables -t mangle -A PREROUTING -p tcp -m mark --mark 2 -j CONNMARK --save-mark # 您原有的DNAT和MASQUERADE规则保持不变 iptables -t nat -A PREROUTING -p tcp --dport 2001 -j DNAT --to-destination 192.168.0.2:9000 iptables -t nat -A PREROUTING -p tcp --dport 2002 -j DNAT --to-destination 192.168.0.2:9000 iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.2 --dport 9000 -j MASQUERADE
步骤2,在企业网关(192.168.0.2)上设置第二层转发
# 在mangle表的PREROUTING链恢复连接标记到数据包 iptables -t mangle -A PREROUTING -p tcp --dport 9000 -j CONNMARK --restore-mark # 基于数据包标记进行DNAT,不再使用--sport iptables -t nat -A PREROUTING -p tcp --dport 9000 -m mark --mark 1 -j DNAT --to-destination 192.168.0.92:2001 iptables -t nat -A PREROUTING -p tcp --dport 9000 -m mark --mark 2 -j DNAT --to-destination 192.168.0.92:2002 # 您原有的SNAT规则保持不变 iptables -t nat -A POSTROUTING -p tcp -d 192.168.0.92 -j MASQUERADE
浙公网安备 33010602011771号