Ubuntu防火墙如何设置端口转发
导读:Ubuntu 防火墙端口转发设置指南 一、前置条件与策略 启用内核 IP 转发:编辑 /etc/sysctl.conf,取消注释或新增 net.ipv4.ip_forward=1,执行 sudo sysctl -p 使配置生效。 放行转发...
Ubuntu 防火墙端口转发设置指南
一、前置条件与策略
- 启用内核 IP 转发:编辑 /etc/sysctl.conf,取消注释或新增 net.ipv4.ip_forward=1,执行 sudo sysctl -p 使配置生效。
- 放行转发流量:编辑 /etc/default/ufw,将 DEFAULT_FORWARD_POLICY=“DROP” 改为 “ACCEPT”,否则转发的数据包可能被默认丢弃。
- 说明:UFW 基于 iptables 工作,端口转发通过 NAT 规则实现,需同时处理转发策略与 NAT 规则。
二、方法一 使用 UFW 配置端口转发(推荐)
- 编辑 UFW 的 NAT 前置规则:打开 /etc/ufw/before.rules,在 *filter 段之前加入如下模板(注意保留文件末尾的 COMMIT):
*nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] # 本机端口转发:将外部 TCP 8080 转发到本机 80 -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80 # 转发到其他主机:将外部 TCP 8080 转发到 192.168.1.100:80 # -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80 # -A POSTROUTING -j MASQUERADE COMMIT - 放行目标端口或服务:例如 sudo ufw allow 80/tcp;若通过 SSH 管理,建议先放行 OpenSSH。
- 使配置生效:执行 sudo ufw disable & & sudo ufw enable(或 sudo systemctl restart ufw)。
- 验证:查看状态 sudo ufw status,查看 NAT 规则 sudo iptables -t nat -L -v -n,并用 curl/telnet 测试连通性。
三、方法二 直接使用 iptables 配置
- 本机端口转发(REDIRECT):
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80 - 转发到其他主机(DNAT + MASQUERADE):
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80 sudo iptables -t nat -A POSTROUTING -j MASQUERADE - 持久化规则:
- Debian/Ubuntu 常用 iptables-persistent:安装后在安装向导中选择保存当前规则,后续可用 sudo netfilter-persistent save。
- 或手动保存:sudo iptables-save > /etc/iptables/rules.v4。
四、常见问题与排查
- 规则未生效:确认已启用 ip_forward、已将 DEFAULT_FORWARD_POLICY 设为 ACCEPT,并在 before.rules 中正确加入 *nat … COMMIT 段;修改后执行 sudo ufw disable & & sudo ufw enable。
- 外部能访问但无响应:检查目标服务是否在目标端口监听(如 ss -ltnp | grep :80),以及云服务器安全组/外部防火墙是否放行对应端口。
- 本机访问失败:REDIRECT 仅影响外部进入的流量,本机访问请直接使用 127.0.0.1:目标端口 或改用 DNAT 规则指向本机地址。
- 返回流量被丢弃:确保 POSTROUTING 有 MASQUERADE/SNAT,且转发策略为 ACCEPT。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu防火墙如何设置端口转发
本文地址: https://pptw.com/jishu/784525.html
