Ubuntu防火墙NAT如何配置
导读:Ubuntu 防火墙 NAT 配置指南 一、准备与网络规划 准备一台至少双网卡的 Ubuntu 主机:外网接口(如 eth0/WAN)连接公网或上级路由,内网接口(如 eth1/LAN)连接交换机/终端,内网网段示例 192.168.1....
Ubuntu 防火墙 NAT 配置指南
一、准备与网络规划
- 准备一台至少双网卡的 Ubuntu 主机:外网接口(如 eth0/WAN)连接公网或上级路由,内网接口(如 eth1/LAN)连接交换机/终端,内网网段示例 192.168.1.0/24。使用 ip a 确认接口名称。
- 安装工具(便于规则持久化):sudo apt update & & sudo apt install -y iptables iptables-persistent netfilter-persistent。
- 规划示例:外网口 eth0,内网口 eth1,内网 192.168.1.0/24,网关 192.168.1.1。
二、方案一 使用 iptables 直接配置 NAT(通用、直观)
- 启用内核转发
- 编辑:sudo nano /etc/sysctl.conf,设置:net.ipv4.ip_forward=1;生效:sudo sysctl -p;验证:cat /proc/sys/net/ipv4/ip_forward(应返回 1)。
- 配置 NAT 与转发规则(按需替换接口名与网段)
- 允许已建立连接回包:sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
- 出口伪装(MASQUERADE):sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- 允许内网访问外网:sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
- 允许外网回包:sudo iptables -A FORWARD -i eth0 -o eth1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
- 端口转发示例(外网 8080 → 内网 192.168.1.100:80)
- DNAT:sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
- 放行转发:sudo iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -d 192.168.1.100 -j ACCEPT
- 规则持久化
- 保存:sudo netfilter-persistent save;启用开机恢复:sudo systemctl enable netfilter-persistent。
三、方案二 使用 UFW 管理 NAT(适合已使用 UFW 的场景)
- 启用转发策略与内核转发
- 编辑:sudo nano /etc/default/ufw,设置:DEFAULT_FORWARD_POLICY=“ACCEPT”
- 编辑:sudo nano /etc/ufw/sysctl.conf,设置:net/ipv4/ip_forward=1
- 添加 NAT 规则到 UFW 前置规则
- 编辑:sudo nano /etc/ufw/before.rules,在文件靠前位置(在 *filter 段之前)加入:
*nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE COMMIT
- 编辑:sudo nano /etc/ufw/before.rules,在文件靠前位置(在 *filter 段之前)加入:
- 端口转发示例(外网 8080 → 内网 192.168.1.100:80)
- 在 *nat 段追加:
-A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to-destination 192.168.1.100:80 - 放行转发与入站访问:
- UFW 路由放行:sudo ufw route allow in on eth0 to 192.168.1.100 port 80 proto tcp
- 如访问本机端口:sudo ufw allow 8080/tcp
- 在 *nat 段追加:
- 使配置生效
- 重载:sudo ufw reload(远程操作前务必先放行 SSH,避免断连)。
- 查看与清理 NAT
- 查看:sudo iptables -t nat -L -v -n
- 清理 NAT 表:sudo iptables -t nat -F
四、验证与故障排查
- 转发与连通性
- 检查转发:cat /proc/sys/net/ipv4/ip_forward(应为 1)
- 内网测试:ping 8.8.8.8(从内网主机),nslookup example.com(测试 DNS)
- 端口转发:curl http://网关公网IP:端口
- 规则与日志
- 查看 NAT:sudo iptables -t nat -L -v -n
- 查看转发:sudo iptables -L FORWARD -n -v
- 丢包定位:sudo iptables -A FORWARD -j LOG --log-prefix "FORWARD_DROP: ";tail -f /var/log/syslog | grep “FORWARD_DROP”
- 常见问题
- 接口名写错、未启用 ip_forward、FORWARD 规则顺序不当、云环境未放通对应安全组/端口。
五、安全与优化建议
- 防火墙基线(示例,按需收紧)
- 默认拒绝:sudo iptables -P INPUT DROP;sudo iptables -P FORWARD DROP
- 放行回环与已建立:sudo iptables -A INPUT -i lo -j ACCEPT;sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
- 按需开放管理端口(如 22/TCP),并启用 fail2ban。
- 连接跟踪与性能
- 增大跟踪表:在 /etc/sysctl.conf 增加 net.netfilter.nf_conntrack_max=65536;net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=1800;执行 sysctl -p。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu防火墙NAT如何配置
本文地址: https://pptw.com/jishu/764911.html
