Debian防火墙NAT配置方法
导读:Debian 防火墙 NAT 配置方法 一、准备与网络拓扑 确认接口名称:外网口如 eth0,内网口如 eth1;内网网段示例 192.168.1.0/24,外网地址示例 203.0.113.5。 安装基础工具: sudo apt upd...
Debian 防火墙 NAT 配置方法
一、准备与网络拓扑
- 确认接口名称:外网口如 eth0,内网口如 eth1;内网网段示例 192.168.1.0/24,外网地址示例 203.0.113.5。
- 安装基础工具:
sudo apt update & & sudo apt install -y iptables iproute2 - 启用内核 IP 转发(临时与永久):
sudo sysctl -w net.ipv4.ip_forward=1
echo “net.ipv4.ip_forward=1” | sudo tee -a /etc/sysctl.conf & & sudo sysctl -p - 说明:本文以 iptables/nftables 为核心;如使用 firewalld/ufw,见文末补充。
二、使用 iptables 配置 NAT
- 场景A 出口 NAT(Masquerade,动态公网IP常用)
- 允许转发:
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT - 出口伪装:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- 允许转发:
- 场景B 端口映射(DNAT,将公网 80/TCP 转到内网 192.168.1.100:80)
- 目标转发:
sudo iptables -t nat -A PREROUTING -d 203.0.113.5 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80 - 放行转发与回程:
sudo iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT
sudo iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
- 目标转发:
- 场景C 固定源地址转换(SNAT,静态公网IP)
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 203.0.113.5 - 说明:DNAT 通常还需在外部网关/云安全组放行对应端口;SNAT 与 MASQUERADE 二选一(固定公网IP优先 SNAT)。
三、规则持久化与验证
- 持久化保存(两种常用方式,二选一)
- 使用 iptables-persistent:
sudo apt install -y iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload - 使用 iptables-save/restore:
sudo iptables-save > /etc/iptables/rules.v4
在需要时:sudo iptables-restore < /etc/iptables/rules.v4
- 使用 iptables-persistent:
- 验证与排错
- 查看 NAT 规则:sudo iptables -t nat -L -v -n
- 查看转发规则:sudo iptables -L -v -n
- 抓包定位:在外网口抓 SYN 包(如 sudo tcpdump -i eth0 -nn ‘tcp port 80’),确认是否命中 DNAT。
四、使用 firewalld 或 ufw 时的补充
- firewalld(区域与富规则管理,NAT 仍依赖内核 iptables/nftables)
- 启动服务:sudo systemctl start firewalld & & sudo systemctl enable firewalld
- 端口与富规则示例:
sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.100/32” service name=“ssh” accept’
sudo firewall-cmd --runtime-to-permanent & & sudo firewall-cmd --reload - 说明:NAT 规则需按上文 iptables 方式添加;firewalld 更适合做端口/区域/服务管理。
- ufw(简化防火墙管理)
- 基本用法:sudo apt install -y ufw &
&
sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp - 说明:ufw 对复杂 NAT 场景支持有限,通常仍直接编写 iptables/nftables 规则实现 DNAT/SNAT。
- 基本用法:sudo apt install -y ufw &
&
sudo ufw enable
五、常见问题与排查要点
- 接口名与方向:确认 -i/-o 与外网口(如 eth0)、内网口(如 eth1)一致;DNAT 在 PREROUTING,SNAT/MASQUERADE 在 POSTROUTING。
- 转发策略:FORWARD 默认策略建议 DROP,仅放行已建立连接与所需业务端口。
- 回程流量:务必放行 RELATED,ESTABLISHED,否则连接无法建立。
- 云环境:除本机防火墙外,需在云厂商控制台/安全组放行对应 DNAT 端口。
- IPv6:IPv6 使用 ip6tables 与相应内核参数(如 net.ipv6.conf.all.forwarding)。
- 日志与观察:结合日志/抓包定位规则未命中的问题,逐步验证 PREROUTING/POSTROUTING 与 FORWARD 链。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian防火墙NAT配置方法
本文地址: https://pptw.com/jishu/753794.html
