iptable 规则仅通过 VPN 路由出站流量

iptable 规则仅通过 VPN 路由出站流量

我有一台服务器myserver.com,我希望互联网上的人们能够使用其名称访问该服务器,但我希望所有不是对传入流量的直接响应的传出流量都通过 VPN。例如,服务器安装了传输,我希望传输始终通过 VPN,但如果有人访问服务器上的网页,服务器不应尝试通过 VPN 响应,因为这显然没有意义。几年前,我使用一些组合 iptable 规则和路由设置了一次。我记得只有几行,但我无论如何也想不起来确切的规则。我尝试了下面显示的规则的几种变体(发现这里这里),但无济于事。

sudo iptables -t mangle -A OUTPUT -p tcp -m multiport --sports 80,443,22 -j MARK --set-mark 10
sudo ip route add table 100 default via 192.168.1.1
sudo ip rule add fwmark 10 table 100
sudo ip route flush cache

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate ESTABLISHED -j ACCEPT

答案1

根据我找到的信息找到了答案这里。为了完整起见,我将重复那里所说的内容:

这是一个经典问题。当您使用服务器的公共 IP 地址连接服务器时,返回的数据包将通过 VPN 路由。您需要强制这些数据包通过公共以太网接口路由。这些规则/路由命令应该可以解决问题:

ip rule add from x.x.x.x table 128
ip route add table 128 to y.y.y.y/y dev ethX
ip route add table 128 default via z.z.z.z

其中x.x.x.x是服务器的公共 IP,y.y.y.y/y是服务器公共 IP 地址的子网,ethX是服务器的公共以太网接口,z.z.z.z是默认网关。例如:

ip rule add from 172.16.9.132 table 128
ip route add table 128 to 172.16.9.0/24 dev eth0
ip route add table 128 default via 172.16.9.1

值得注意的是,上述示例使用了服务器的公共 IP,但由于我位于路由器后面,并且所有到服务器的连接都从路由器转发,因此我只能使用服务器的本地 IP,如下例所示:

ip rule add from 192.168.1.10 table 128
ip route add table 128 to 192.168.1.0/24 dev eth0
ip route add table 128 default via 192.168.1.1

您可能希望这些规则在重启后仍然有效。有几种方法可以实现,其中一种方法是etc/network/interfaces在相应的界面下将规则添加到您的文件中,如下所示:

# Only packets related to connections initiated by this machine should go
# through the VPN.  All other packets should be routed around the VPN.  This
# allows this  machine to be accessed via its public IP, but prevents its
# public IP from being exposed by services like transmission.

up ip rule add from 192.168.1.5 table 128
up ip route add table 128 to 192.168.1.0/24 dev enp4s0
up ip route add table 128 default via 192.168.1.1

down ip route del table 128 default via 192.168.1.1
down ip route del table 128 to 192.168.1.0/24 dev enp4s0
down ip rule del from 192.168.1.5 table 128

相关内容