仅在使用 VPN 连接时允许访问公共 IP 上的所有端口

仅在使用 VPN 连接时允许访问公共 IP 上的所有端口

目前我无法通过 VPN 访问我的公共 IP 上的某些端口,这是可以理解的,因为我已将INPUT默认策略设置为DROP。如何配置iptables以仅当我通过 VPN 连接时才允许访问所有可用端口?

我在这里搜索了类似的问题,例如最相似的问题:仅允许在连接到 VPN 时访问端口。但是,不同的是我的服务器和VPN服务器在同一台机器上。此外,所有答案似乎都没有解决问题。

以下是我当前的iptables配置(我的公共 IP 在接口上eno1,并且 VPN 已打开tun0):

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -i eno1 -p udp -m udp --dport 1194 -j ACCEPT
-A INPUT -i tun0 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i tun0 -o eno1 -j ACCEPT
-A FORWARD -i eno1 -o tun0 -j ACCEPT

这是 nat 表的配置:

-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -s 10.8.0.0/24 -o eno1 -j MASQUERADE

答案1

添加 iptables 规则以允许来自 tun 设备的所有内容,例如 -

  -A INPUT -i tun+ -j ACCEPT

(接口名称后面的“+”就像一个通配符,因此它相当于 tun*,并假定任何 tun 接口都是 VPN 接口。您可以使用 -i tun0)

相关内容