You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过UFW配置实现端口转发同时阻断内网服务器的互联网访问

如何通过UFW配置实现端口转发同时阻断内网服务器的互联网访问

嘿,我来帮你搞定这个问题!你的核心需求是保留外网通过网关转发端口访问内网服务器的功能,同时彻底阻止内网服务器主动访问互联网,但网关本身要能正常上网对吧?咱们一步步来调整UFW规则,解决这个问题:

第一步:确保网关开启IP转发(必做)

端口转发依赖内核的IP转发功能,先确认它已经开启:

  1. 编辑sysctl配置文件:
sudo nano /etc/sysctl.conf
  1. 找到net.ipv4.ip_forward这一行,把它改成:
net.ipv4.ip_forward=1
  1. 让配置立即生效:
sudo sysctl -p

另外,还要确保UFW允许转发,编辑/etc/ufw/sysctl.conf,确认下面这行是开启的:

net.ipv4.conf.all.forwarding=1

第二步:重置UFW规则(清除旧规则干扰)

如果之前的规则混乱,先重置到默认状态:

sudo ufw reset

第三步:设置基础默认规则

咱们给网关自身留足外网访问权限,同时默认拒绝外部主动连接:

sudo ufw default deny incoming
sudo ufw default allow outgoing

第四步:允许外网访问转发端口和网关SSH

保留你需要的端口转发和网关自身的SSH访问:

# 允许外网访问内网服务器的转发SSH端口(10000-10010)
sudo ufw allow in 10000:10010/tcp
# 允许外网访问内网服务器的转发服务端口(10100-10110)
sudo ufw allow in 10100:10110/tcp
# 允许外网SSH登录网关本身
sudo ufw allow in 22/tcp

第五步:限制内网服务器的互联网访问

这是关键步骤——咱们允许内网服务器和网关、内网其他机器通信,但彻底阻断它们访问外网:

  1. 先允许内网网段内的所有双向通信(网关和内网服务器、内网服务器之间都能正常通信):
sudo ufw allow in from 192.168.0.0/24 to 192.168.0.0/24
sudo ufw allow out from 192.168.0.0/24 to 192.168.0.0/24
  1. 拒绝内网服务器(192.168.0.100-110)访问非内网的地址(也就是外网):
# 用网段批量限制192.168.0.100-110,这个网段刚好覆盖目标范围
sudo ufw deny out from 192.168.0.100/28 to any not in 192.168.0.0/24

如果你想更精准(比如只限制100到110,不包含其他机器),也可以逐个添加规则:

sudo ufw deny out from 192.168.0.100 to any not in 192.168.0.0/24
sudo ufw deny out from 192.168.0.101 to any not in 192.168.0.0/24
# ... 一直到192.168.0.110

第六步:确保端口转发的NAT规则正常

你之前应该已经配置了DNAT规则来实现端口转发,比如在/etc/ufw/before.rules文件里添加了类似下面的内容(如果还没加,现在补上):

*nat
:PREROUTING ACCEPT [0:0]
# 示例:转发网关10022端口到x1的22端口
-A PREROUTING -p tcp --dport 10022 -j DNAT --to-destination 192.168.0.100:22
# 其他内网服务器的转发规则同理,比如x2的22对应10023,以此类推
# ...
COMMIT

添加后记得重启UFW生效。

第七步:启用并验证规则

最后重新加载UFW并启用:

sudo ufw reload
sudo ufw enable

现在来测试你的场景:

  • ✅ 外网用ssh -p 10000 <网关公网IP>应该能正常登录x1
  • ✅ 登录网关后,ssh x1能正常访问内网服务器
  • ✅ 网关自身ssh <公网IP>可以正常访问互联网
  • ❌ 在内网服务器x1上执行ssh <公网IP>会被阻断,无法连接

为什么之前的规则失效?

你之前的默认outgoing是deny,但只允许了内网和网关的双向通信,却没明确拒绝内网访问外网的流量。另外,网关自身的外网访问也被默认规则限制了,导致要么网关和内网断连,要么规则没覆盖到内网向外的流量,所以出现了那些问题。

备注:内容来源于stack exchange,提问作者est13

火山引擎 最新活动