温馨提示×

debian iptables如何 nat

小樊
63
2026-09-01 18:34:01
栏目: 智能运维

在 Debian 下使用 iptables 做 NAT(通常是网关/软路由场景),一般步骤如下。


一、开启内核 IP 转发

编辑配置文件:

sudo nano /etc/sysctl.conf

取消或添加这一行:

net.ipv4.ip_forward=1

立即生效:

sudo sysctl -p

二、基础 NAT(MASQUERADE,最常用)

适用于:内网 → 外网(动态 IP,如拨号、DHCP)

假设:

  • 内网网卡:eth1
  • 外网网卡:eth0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

允许转发:

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

三、静态公网 IP 的 NAT(SNAT)

如果你有固定公网 IP(如 1.2.3.4):

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 1.2.3.4

四、端口映射(DNAT,外网访问内网)

例如:把外网 80 端口映射到内网 192.168.1.10:80

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80

并允许转发:

iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT

五、保存 iptables 规则(Debian)

Debian 11 及以下(iptables 传统)

安装工具:

apt install iptables-persistent

保存规则:

netfilter-persistent save

规则位置:

/etc/iptables/rules.v4

Debian 12(可能使用 nftables)

查看当前后端:

update-alternatives --list iptables

如果是 iptables-nft,规则仍可用 netfilter-persistent 保存。


六、常见排错

  1. 不能上网

    • 检查 ip_forward 是否开启
    • 检查 FORWARD 链默认策略
  2. NAT 不生效

    iptables -t nat -L -n -v
    
  3. 防火墙挡住

    iptables -P FORWARD DROP   # 不建议初学者用
    

如果你说明:

  • Debian 版本
  • 网络结构(几张网卡、是否有公网 IP)
  • 想实现什么(共享上网 / 端口映射 / 透明代理)

我可以给你精确可用的 iptables 规则。

0 踩