web-dev-qa-db-ja.com

OpenBSDは同じIPを持つが異なるインターフェースを持つ異なるゲートウェイを経由します

同じゲートウェイIPを使用する複数のVPN接続があります(自分の制御外にあるため、これを変更することができません)。これらのVPNはすべて異なるネットワークへのアクセスを提供し、ネットワークは少なくとも1つまたは2つのホップアップストリームであるため、すべての場合にゲートウェイ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を指定します

しかし、両方を指定する方法がわかりません。

9
bao7uo

-ifp修飾子を使用してrouteにします。 man page から:

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とルートラベルを一致させるか、または routingを使用できます。ドメイン

1
quadruplebucky