通过端口转发开放本地服务器的特定端口,同时阻止互联网访问

通过端口转发开放本地服务器的特定端口,同时阻止互联网访问

我有一些本地服务器(分别为 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

任何想法都将不胜感激。

相关内容