我希望利用Linux设备作为默认网关,在不影响主机路由互联网的情况下,通过OpenVPN连接路由离开主机的通信量。我不想让主机通过VPN出口,只有来自其他设备的流量。
我已经成功地配置了NATing,使用主机上的默认路由(例如,如果VPN是打开的,则通过VPN,如果不是,则通过主机正常的互联网连接,主机作为traceroute中的附加跳),使用主机作为默认网关出口的通信量。
但是,我无法成功地配置它,这样OpenVPN连接就不会影响主机网络并使主机路由网关流量通过OpenVPN接口
我所做的事情:-配置了IP转发并验证了它的工作能力-能够停止OpenVPN用route-nopull和pull-filter ignore redirect-gateway更新主机上的默认路由。
我猜想这其中有一个动态部分(从开放的vpn配置中提取路由信息),或者希望‘不是,真的,只是将这些路由应用于NAT流量’标志/设置。
网络配置:
192.168.0.0/24发布于 2020-02-10 06:26:03
现在不是坐在电脑前,但我的总体想法是:
第一项:
让Raspberry有一个静态ip地址,它的默认网关是无聊的路由器。
如果无聊的路由器充当DHCP服务器,那么关闭它!让Raspberry代替DHCP服务器(或者网络上的另一个主机)。
让DHCP服务器广播Raspberry设备作为网络的默认路由器,而不是无聊的路由器。
Traceroute将是:
主机->覆盆子->无聊路由器>互联网
现在魔法来了。
如果你想转移流量通过虚拟专用网,而不是默认的方式走出房子,那么你应该使用source based routing的覆盆子。
对于通过VPN的特定主机,Traceroute将是:
主机->覆盆子-> Openvpn隧道->互联网。
为此,必须在Raspberry和VPN服务器上启用ip forwarding。
当我下班回家时,我将详述答案。:-)
简要回顾一下基于源的路由:
我正在使用此页作为解决方案的基础。
这样做的目的是根据流量的来源确定通信量是如何转发的。
Linux中的默认路由表称为main。您可以使用命令ip rule show查看所有路由表的名称。
它应该将此输出作为默认输出:
0: from all lookup local
32766: from all lookup main
32767: from all lookup defaultRaspberry将遍历所有匹配规则,并使用匹配的第一个规则转发包。
由于表main包含一条规则,上面写着如下内容:
default via <boring routers ip address> dev eth0然后,它将转发所有的流量到无聊的路由器,以便到达互联网。
但是这里有一个问题:您可以为您想要通过VPN连接发送的所有主机分别创建一个路由表。为了简单起见,让我们调用这个路由表openvpn。
您必须更改/etc/iproute2/rt_tables,使其看起来如下所示:
#
# reserved values
#
255 local
254 main
253 default
200 openvpn # <-- Note THIS line!
0 unspec
#
# local
#
#1 inr.ruhep假设您想通过VPN转移另一台具有IP地址192.168.0.100的机器,然后您将制定一条规则,如下所示:
ip rule add from 192.168.0.100 table openvpn如果假设隧道内VPN网关的ip地址为10.0.0.1,则可以使用以下命令设置默认路由:
ip route add default via 10.0.0.1 table openvpn dev tun0如果网络上的所有主机都使用Raspberry作为网关,那么它们的所有通信量都将被转发到路由器,除非流量来自192.168.0.100。在这种情况下,它将通过VPN链路转发。
这就是你要找的吗?:-)
https://serverfault.com/questions/1002430
复制相似问题