通过具有相同IP但在不同接口上的不同网关的OpenBSD路由


9

我有多个使用相同网关IP的VPN连接(由于无法控制,我无法更改它)。这些VPN均提供对不同网络的访问,并且这些网络至少在上游一跳或两跳,因此在所有情况下都需要网关IP。使用Linux,要路由到网络,我可以简单地执行以下操作:

ip route add $destination_1 via $gateway_ip dev $interface_1
ip route add $destination_2 via $gateway_ip dev $interface_2
ip route add $destination_3 via $gateway_ip dev $interface_3

等等

然后,Linux将把每个目标网络的流量放到正确的接口上,直达正确的网关,因此每个接口的网关IP都没有关系。

我的问题是,如何在OpenBSD中实现这一目标?我尝试过并失败了。我的发现是,对于特定的目的地,我可以:

  • 指定一个接口(如果目标在该链接上可直接访问-在我的情况下不是)
  • 指定网关IP,因为目标不在链接上

但是我不知道如何同时指定两者。


您确定需要网关吗?如果链接是以太网,并且目标距离一跳以上,则需要网关。但是,VPN经常表现为不需要网关的点对点接口。
卡巴斯德(Kasperd),

是的,这绝对是必需的,因为接口是点对点的,目标网络都在一个以上的距离之外,并且涉及到ip转发和NAT
bao7uo

点对点链接不关心网关。
卡巴斯德(Kasperd),

好的,但是那怎么办呢?
bao7uo

如何使用该-T选项route为每个目的地定义路由表?我认为它为每个接口规则提供了更好的“绝缘”。
gmelis

Answers:


1

使用-ifp修饰符路由。从手册页

In a change or add command where the destination and gateway are not
sufficient to specify the route, the -ifp or -ifa modifiers may be 
used to determine the interface name or interface address.

所以像这样的作品:

# for  arg in tun0 tun1 tun2; do ifconfig $arg  192.168.11.1/24; done
# route add 10/8 -iface 192.168.11.1 -ifp tun0
add net 10/8: gateway 192.168.11.1
# route add 172.16/12 -iface 192.168.11.1 -ifp tun1
add net 172.16/12: gateway 192.168.11.1
# route add 192.168.254/24 -iface 192.168.11.1 -ifp tun2
add net 192.168.254/24: gateway 192.168.11.1
# route show -inet
Routing tables

Internet:
Destination        Gateway            Flags   Refs      Use   Mtu  Prio 
Iface
10/8               192.168.11.1       GS         0        0     -     8 tun0
localhost          localhost          UHl        0       22 32768     1 lo0
172.16/12          192.168.11.1       S          0        0     -     8 tun1
192.168.11.1       192.168.11.1       UHhl       1        4     -     1 tun0
[...my real routes omitted...]
192.168.254/24     192.168.11.1       S          0        0     -     8 tun2

如果目标路由重叠,则可以使用pf和路由标签进行匹配或路由域


谢谢你 我已经尝试过了,但无法正常工作。我认为这并不-iface适用,因为网关地址用于上游路由器(下一跳),而不是openbsd盒本身的接口IP。当我删除-iface时,它确实起作用,但仅适用于第一个VPN接口。因此,我可以这样做-ifp tap0并且可以工作,但是如果我尝试添加路由,-ifp tap1则失败no route to host
bao7uo

即使无法解决问题,我也已授予您赏金,因为我很感谢您的帮助。
bao7uo

老实说,我对linux在幕后所做的事情感到困惑... BSD通过抱怨gw不是本地的而在做“正确的”事情。您是否尝试过-link -llinforoute命令的标志?另外,我认为-iface确实适用(如您所述,您在没有路由表/域的情况下会收到错误,因为网络路由冲突且无法再次添加)。OpenVPN /点击?如果这是伪造的ptp,不知道该如何配置“另一”端。
quadruplebucky
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.