![仅在使用 VPN 连接时允许访问公共 IP 上的所有端口](https://linux22.com/image/745165/%E4%BB%85%E5%9C%A8%E4%BD%BF%E7%94%A8%20VPN%20%E8%BF%9E%E6%8E%A5%E6%97%B6%E5%85%81%E8%AE%B8%E8%AE%BF%E9%97%AE%E5%85%AC%E5%85%B1%20IP%20%E4%B8%8A%E7%9A%84%E6%89%80%E6%9C%89%E7%AB%AF%E5%8F%A3.png)
目前我无法通过 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)