目前我无法通过 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)