web-dev-qa-db-ja.com

ネットワーク名前空間を使用したLinux上のVRF

私の最終的な目標は、Linuxに仮想ルーティングおよび転送(VRF)を実装することです。最も広く受け入れられていると思われる方法は、さまざまなネットワーク名前空間(個別のルーティングテーブルごとに1つ)をセットアップし、名前空間/ルーティングテーブルごとにQuaggaまたはBIRDデーモンを実行することです。私はこの方法とは結婚していないので、他に提案がある場合はお知らせください。

問題のマシンは、VMwareワークステーション12内でDebian 7(wheezy)を実行しています。これは常にルーターであり、この再構成を開始するまでしばらくの間ルーティングに成功していたため、一般的なルーティング設定は適切です。

当面の問題は、ネットワーク名前空間を介して通信できないことです。つまり、veth1(以下のように私の名前空間にあります)は、veth0のみをpingし、それ以外は何もできません。 veth1とその下のネットワークの間にネットワーク通信はなく、ARPもありません。もっとよくわからなければ、誰かがスイッチからケーブルを引っ張っていたと思います(しかし、仮想環境でそれを行うのはちょっと難しいです)。そして、はい、私はvmnetsが適切にセットアップされていることを確認しました。ルーターは、古い構成に復元すると機能します。この新しい構成では機能しません。

誰もがveth1を通信させる方法を知っていますか?または、VRFをLinuxで動作させるためのまったく異なる方法ですか?前もって感謝します。

新しい構成を次のように設定しました。

名前空間を追加

ip netns add nsx

仮想インターフェースを追加する

ip link add veth0 type veth peer name veth1

橋を架ける

ip link add name vbr0 type bridge

eth1 AND veth1をブリッジに追加します

ip link set dev eth1 master vbr0
ip link set dev veth1 master vbr0

名前空間にveth1を割り当てます

ip link set veth1 netns nsx

vethのIPを構成する

ip addr add 10.0.2.10/24 dev vbr0
ip addr add 10.0.2.1/24 dev veth0
ip netns exec nsx ip addr add 10.0.2.2/24 dev veth1

I/fを起動する

ip link set dev vbr0 up
ip link set dev veth0 up
ip netns exec nsx ip link set dev veth1 up

veth2に独自のルーティングテーブルを割り当てる

ip netns exec nsx ip rule add dev veth1 table 1

Vtableのデフォルトルートを設定する

ip netns exec nsx ip route add default via 10.0.2.1 dev veth1

Iptables-saveの出力で、すべてが適切にACCEPTまたはFORWARDに設定されていることがわかります。

ip addr showの出力:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope Host lo
    inet6 ::1/128 scope Host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:10:e0:01 brd ff:ff:ff:ff:ff:ff
    inet 192.168.26.5/24 brd 192.168.26.255 scope global eth0
    inet 192.168.26.0/24 brd 192.168.26.255 scope global secondary eth0
    inet6 fe80::20c:29ff:fe10:e001/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vbr0 state UP qlen 1000
    link/ether 00:0c:29:10:e0:ed brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/24 brd 10.0.0.255 scope global eth1
    inet6 fe80::20c:29ff:fe10:e0ed/64 scope link
       valid_lft forever preferred_lft forever
47: veth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether ce:63:69:82:73:35 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.1/24 scope global veth0
    inet6 fe80::cc63:69ff:fe82:7335/64 scope link tentative
       valid_lft forever preferred_lft forever
48: vbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether 00:0c:29:10:e0:ed brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.10/24 scope global vbr0
    inet6 fe80::20c:29ff:fe10:e0ed/64 scope link tentative
       valid_lft forever preferred_lft forever

ip route showの出力:

 default via 192.168.26.2 dev eth0
    10.0.0.0/24 dev eth1  proto kernel  scope link  src 10.0.0.1
    10.0.2.0/24 dev vbr0  proto kernel  scope link  src 10.0.2.10
    10.0.2.0/24 dev veth0  proto kernel  scope link  src 10.0.2.1
    192.168.26.0/24 dev eth0  proto kernel  scope link  src 192.168.26.5

ip netns exec nsx ip addr showの出力:

    45: lo: <LOOPBACK> mtu 16436 qdisc noop state DOWN
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    46: veth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether b6:27:40:06:c2:de brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.2/24 scope global veth1
        inet6 fe80::b427:40ff:fe06:c2de/64 scope link tentative
           valid_lft forever preferred_lft forever

ip netns exec nsx ip route showの出力

 default via 10.0.2.1 dev veth1
    10.0.2.0/24 dev veth1  proto kernel  scope link  src 10.0.2.2

iptables-saveの出力

# Generated by iptables-save v1.4.14 on Thu Apr 14 18:19:19 2016
*nat
:PREROUTING ACCEPT [36:3588]
:INPUT ACCEPT [32:2540]
:OUTPUT ACCEPT [51:3744]
:POSTROUTING ACCEPT [55:4792]
COMMIT
# Completed on Thu Apr 14 18:19:19 2016
# Generated by iptables-save v1.4.14 on Thu Apr 14 18:19:19 2016
*filter
:INPUT ACCEPT [3319:373389]
:FORWARD ACCEPT [8:2004]
:OUTPUT ACCEPT [3558:428447]
COMMIT
# Completed on Thu Apr 14 18:19:19 2016
4
user349251

カーネルバージョン4.3以降、LinuxにはVRF実装があります。チェックアウト: https://www.kernel.org/doc/Documentation/networking/vrf.txt

2
DavidA