温馨提示×

Debian iptables怎么配置NAT

小樊
40
2026-07-15 09:26:31
栏目: 智能运维

在 Debian 上配置 iptables NAT(网络地址转换),常见用途是 SNAT / MASQUERADE(内网共享上网)DNAT(端口映射)。下面按常见场景一步步说明。


一、前置条件

1. 确认系统支持 NAT

lsmod | grep nat

如果没有输出,可手动加载:

modprobe iptable_nat
modprobe nf_nat

2. 开启 IP 转发

编辑:

sudo nano /etc/sysctl.conf

添加或修改:

net.ipv4.ip_forward=1

立即生效:

sudo sysctl -p

二、SNAT / MASQUERADE(最常见:内网共享上网)

假设网络环境:

  • 外网网卡eth0(公网 IP:1.2.3.4
  • 内网网卡eth1(内网网段:192.168.10.0/24

1. 使用 MASQUERADE(推荐,动态公网 IP)

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

2. 使用 SNAT(固定公网 IP)

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 \
-j SNAT --to-source 1.2.3.4

3. 允许转发

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

三、DNAT(端口映射 / 端口转发)

示例:把公网 80 端口转发到内网 192.168.10.10:80

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT \
--to-destination 192.168.10.10:80

允许转发:

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

四、查看 NAT 规则

iptables -t nat -L -n -v

五、保存 iptables 规则(非常重要)

Debian 不会自动保存 iptables 规则,重启会丢失。

方法 1:使用 iptables-persistent(推荐)

sudo apt update
sudo apt install iptables-persistent

保存规则:

sudo netfilter-persistent save

规则保存在:

/etc/iptables/rules.v4
/etc/iptables/rules.v6

六、完整示例(内网共享上网)

# 开启转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

# NAT
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

# 保存
netfilter-persistent save

七、常见问题

1. 规则不生效?

  • 是否开启 ip_forward
  • 是否缺少 FORWARD 规则
  • 是否被其他规则拦截(规则顺序很重要)

2. Debian 10+ 建议使用 nftables?

是的,但 iptables 仍然可用(通过兼容层)。
如果你愿意,我也可以给你 nftables 的 NAT 配置示例


如果你能告诉我:

  • Debian 版本
  • SNAT / DNAT / 端口映射
  • 网络拓扑(公网/内网网卡)

我可以帮你写一份完全贴合你环境的 iptables 配置

0