我有一些本地服务器(分别为 192.168.0.100(x1)~ 192.168.0.110(x10),没有公共 IP),它们通过网关服务器(192.168.0.1,具有公共 IP)连接到互联网。
Internet---<gw>---switch---<x1>
|------<x2>
|
| ...
|
|------<x9>
|------<x10>
对于每个本地服务器,都会开放两个端口(SSH 和服务端口),并将这些端口转发到网关服务器,以便用户可以使用转发的端口连接到本地服务器。
例如本地服务器(192.168.0.100)的22端口被转发到网关服务器的10022端口,这样用户就可以连接网关服务器公网IP的10022端口,访问本地服务器192.168.0.100
但是,在当前设置下,本地服务器可以访问互联网,这并不是我想要的。因此,我想配置 UFW 以保留当前设置,但阻止本地服务器访问互联网。
我尝试了许多搜索到的 UFW 设置,但所有的尝试都导致 (1) 本地服务器和网关失去连接 (2) 本地服务器仍然连接到互联网。
# OK
est13@desktop:~$ ssh -p 10000 gw # Connect to the local server via GW
# GW port 10000 => local server port 22 forwarded
est13@x1:~$ # OK since port 10000 is allowed
# OK
est13@desktop:~$ ssh gw # Connect to the gateway
est13@gw:~$ # OK since port 22 of the gateway is allowed
# OK
est13@gw:~$ ssh x1
est13@gw:~$ ssh <public IP> # INTENDED, internet access is OK from the gateway
# NOT OK
est13@gw:~$ ssh x1 # Connect to the local server from the gateway
est13@x1:~$ ssh <public IP>
Password: # NOT INTENDED, SHOULD BE BLOCKED
当前 UFW 设置如下。
Status: active
Default: deny (incoming), deny (outgoing)
To Action From
-- ------ ----
10000:10010 ALLOW IN Anywhere # For SSH access to the local servers from outside
10100:10110 ALLOW IN Anywhere # For service access to the local servers from outside
22 ALLOW IN Anywhere # For SSH access of the gateway server
192.168.0.0/24 ALLOW OUT 192.168.0.1 # Allow GW => local servers
192.168.0.1 ALLOW OUT 192.168.0.0/24 # Allow local servers => GW
任何想法都将不胜感激。