Linux iptables NAT 透明代理教程

目录

应用场景

在具备外网和内网访问条件的接口服务器上部署 iptables 端口映射,将外网端口转发到内网服务器。

假设:

  • 接口服务器的内网 IP:192.168.1.2,外网 IP:8.8.8.8
  • 内网服务器 IP:192.168.1.3,端口:1234

核心命令

DNAT(目标地址转换):

iptables -t nat -I PREROUTING -p tcp --dport 1234 -j DNAT --to 192.168.1.3:1234

MASQUERADE(源地址伪装,实现透明代理):

iptables -t nat -I POSTROUTING -p tcp --dport 1234 -j MASQUERADE

查看 nat 表:

iptables -t nat -L

删除 nat 表配置:

iptables -t nat -F

启用 Linux 路由转发:

echo 1 > /proc/sys/net/ipv4/ip_forward

持久化配置

iptables 设置在服务器重启后失效,需要写入 /etc/rc.local。示例 rc.local:

#!/bin/sh
#
# rc.local
#

iptables -t nat -I PREROUTING -p tcp --dport 1234 -j DNAT --to 192.168.1.3:1234
iptables -t nat -I POSTROUTING -p tcp --dport 1234 -j MASQUERADE

iptables -t nat -I PREROUTING -p tcp --dport 5678 -j DNAT --to 192.168.1.4:5678
iptables -t nat -I POSTROUTING -p tcp --dport 2222 -j MASQUERADE

iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.5:80
iptables -t nat -I POSTROUTING -p tcp --dport 80 -j MASQUERADE

echo 1 > /proc/sys/net/ipv4/ip_forward

exit 0

#iptables #网络排查