在 Debian 上使用 iptables 做 NAT 转发(通常是 SNAT / MASQUERADE 或 DNAT),一般步骤如下。
编辑配置文件:
sudo nano /etc/sysctl.conf
确保有以下一行(没有就加上):
net.ipv4.ip_forward=1
使配置生效:
sudo sysctl -p
验证:
cat /proc/sys/net/ipv4/ip_forward
# 输出应为 1
假设:
eth0(公网 IP)eth1(如 192.168.1.0/24)# 允许转发
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# NAT 出网(推荐用 MASQUERADE)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
如果公网是固定 IP,可用 SNAT:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 公网IP
例如:
# 端口转发
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
访问:
http://1.2.3.4
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 8080
安装:
sudo apt update
sudo apt install iptables-persistent
保存规则:
sudo netfilter-persistent save
规则保存在:
/etc/iptables/rules.v4
开机自动加载 ✅
# 查看 NAT 表
iptables -t nat -L -n -v
# 查看转发规则
iptables -L FORWARD -n -v
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 \
-j DNAT --to-destination 192.168.1.10:22
如果你能说明:
我可以给你更精确的配置。