使 VPN 客户端后面的服务器保持可访问

使 VPN 客户端后面的服务器保持可访问

我有一台在 Linux 下用作 Web 和 SSH 服务器的服务器。它运行一个 VPN 客户端,带有 OpenVPN。如果我理解正确的话,VPN 会更改路由表,从而导致所有流量都通过 VPN 转发。

然后,当我尝试请求服务器上托管的网站时,它已不可用。我对网络知识了解不多,但我可以假设(如果我错了,请随时纠正我)的是,服务器通过通常的接口(我们姑且称之为)正确接收了请求eth0,但考虑到路由已更改并现在通过 VPN,响应应该在 VPN 的接口上发送,出于安全考虑,这显然是不可能的。

我查阅了以下主题:

https://superuser.com/questions/753736/accessing-a-webserver-hosted-behind-vpn-with-closed-ports-remotely

使用 DNATed IP 在与传入相同的接口上进行回复

https://unix.stackexchange.com/questions/4420/reply-on-same-interface-as-incoming

但不幸的是,他们没有提供任何帮助。

让我们调用 VPN 的接口tun0。我想要做的是,在eth0同一个接口上(即eth0它自己)回复请求,而不是tun0在 VPN 运行时回复请求。另一个精确的说法是,我的服务器位于与它不同的网关后面(两个不同的 IP 地址)。

1)可以这样做吗?

2)有哪些不同的方法可以实现这一目标?

提前感谢您的反馈。

答案1

最后,针对我的问题,我找到了一个解决方案,灵感来自:

https://lartc.org/howto/lartc.rpdb.multiple-links.html

以下是操作方法。

为了配置服务器的路由以使其可以在 VPN 客户端后面实现,应该使用单独的路由表以避免两个接口的路由配置重叠。

<interface><table><ip><gateway>分别<network>为接口名称、表、 的 IP 地址<interface>、网关的 IP 地址和网络的 IP 地址(由 ISP 提供)。

需要遵循的程序如下:

  1. 创建特定的路由表:在 中<interface>创建新表。<table>/etc/iproute2/rt_tables

  2. <gateway>通过特定的表为所关联的接口设置不同的路由配置。

    流向的流量<network>与接口相关<interface>,并遵循特定的路由表<table>

    ip route add <network> dev <interface> src <ip> table <table>

    通过此网关构建默认路由:

    ip route add default via <gateway> table <table>

  3. 开启<interface>,强制流量<ip>通过<network>,使用接口<interface>

    ip route add <network> dev <interface> src <ip>

    指定该src参数是为了确保选择正确的传出 IP 地址。

  4. 将接口与适当的接口关联<network>

    ip rule add from <ip> table

关键思想

关于为什么在这里使用这种技术,需要理解的关键思想是,对于任何通过 ISP 节点的请求,<network>后者将是响应路由的中间节点。这似乎很明显,但忘记它会导致不理解为什么<network>通常用于从外部与服务器通信的接口的路由配置很重要。

选修的

  1. 设置所有目的地都要经过的路由,<gateway>而不是通过 VPN 网关。当仅需要根据具体情况使用 VPN 时很有用。

    假设<vpn>、和分别<vpn's gateway>为 VPN 的接口名称(一般为tun0)和 VPN 网关的 IP 地址。然后,经过 VPN(更准确地说是其网关 )的任何目的地的路由都<vpn's gateway>必须替换为经过 的路由<gateway>

ip route del 0.0.0.0/1 via <vpn's gateway> dev <vpn>
ip route add 0.0.0.0/1 via <gateway> dev <interface>

ip route del 128.0.0.0/1 via <vpn's gateway> dev <vpn>
ip route add 128.0.0.0/1 via <gateway> dev <interface>

0.0.0.0/1代表范围从 到0.0.0.1以及127.255.255.255128.0.0.0/1128.0.0.1的IP 地址255.255.254

瞧。

相关内容