OpenVPN-Connection 作为同一子网中另一台主机的默认网关

OpenVPN-Connection 作为同一子网中另一台主机的默认网关

我想使用我的 openvpn 连接作为同一子网中另一台主机的默认网关。我在同一个子网中有 2 台主机,它们都装有 Ubuntu Server 14.04。

主机 A运行 OpenVPN 以建立与我的 openvpn-exit-node 的连接。此主机已修改以允许 ip 转发。

主机B是客户端应用服务器,应该通过来自主机 A 的共享 openvn 连接使用互联网连接。由于我已将主机 B 的网关 IP 设置为主机 A 的 IP,因此来自主机 B 的流量现在通过主机 A 的 openvpn 连接路由。

问题出现时,主机 A 上的 openvpn 连接断开(在德国至少每 24 小时一次)并重新连接;之后主机 B 使用主机 A 的默认 gw 并绕过 openvpn 连接(有时直到隧道再次启动以及每次主机 B 重新启动时)。

目标应该是确保主机 B 仅通过 openvpn-connection 访问互联网。是否有可能确保主机 B 仅在使用 openvn-tunnel 时才能访问互联网?

主机 A(eth0 ip:10.11.12.6/gw:10.11.12.1)(tun0 ip:10.8.0.146/gw:10.8.0.145):

  • 安装了 OpenVPN 并将客户端连接配置到我的 openvn-exit-node:有效
  • 配置主机 A 以允许 IP 转发,并配置 IP 伪装:有效

主机 B(eth0 ip:10.11.12.9/gw:10.11.12.6): - 将默认网关更改为主机 A 的 IP 地址:有效 - 所有流量都使用主机 A 上的 openvpn-tunnel

问题: 每次 openvpn 连接断开和/或 openvpn 重新连接时,主机 B 似乎都会使用主机 A 的默认网关切换回来。此时主机 B 应该保持无法访问互联网的状态,而是使用主机 A 用于连接到 openvpn 网关的连接。

谨致问候,D0C

答案1

为实现这一点,您应该使用基于策略的路由;将允许您创建单独的独立路由表,并根据数据包属性(如源 IP)将流量引导到任何路由表。

创建新的路由表如下:

echo "200    OpenVPN" >>/etc/iproute2/rt_tables

将默认网关添加到新创建的表中,如下所示:

route add default via OpenVPN-GW-IP table OpenVPN

允许使用此路由表对 Host-B 进行路由:

ip rule add from Host-B-IP table OpenVPN

您还需要将以下路线添加到新表中:

ip route add 127.0.0.0/8 dev lo table OpenVPN
ip route add YOUR-Local-Subnet dev DEVICE-NAME table OpenVPN

更新:使用 SNAT 代替 MASQURADE,

iptables -t nat -A POSTROUTING -s 10.11.12.9 -j SNAT --to-source 10.8.0.146

相关内容