web-dev-qa-db-ja.com

送信元アドレスに基づいてネクストホップを選択します

クライアントとコアルーターの間にUbuntuベースのゲートウェイをセットアップしようとしています。理想的なトラフィックフローは次のとおりです。

ClientGroup 1(10.0.0.0/24)-> Ubuntuゲートウェイ(10.0.0.2)->コアルーター(10.0.0.1)->インターネット

ClientGroup 2(10.0.1.0/24)-> Ubuntuゲートウェイ(10.0.1.2)->コアルーター(10.0.1.1)->インターネット

ClientGroup 3(10.0.2.0/24)-> Ubuntuゲートウェイ(10.0.2.2)->コアルーター(10.0.2.1)->インターネット

クライアントはUbuntuインスタンスをゲートウェイとして使用します。

次のnetplan構成は、内部トラフィックを適切にルーティングしますが、インターネットトラフィックの場合、eth0.1のため、デフォルトでgateway4(10.0.1.1)になります。

network:
    version: 2
    ethernets:
        eth0:
            addresses: [10.0.0.2/24]
            routes:
                - to: 10.0.0.0/24
                  via: 10.0.0.1
                  table: 101
            routing-policy:
                - from: 10.0.0.0/24
                  table: 101
            dhcp4: false

    vlans:
        eth0.1:
            id: 1
            link: eth0
            addresses: [10.0.1.2/24]
            gateway4: 10.0.1.1
            routes:
                - to: 10.0.1.0/24
                  via: 10.0.1.1
                  table: 102
            routing-policy:
                - from: 10.0.1.0/24
                  table: 102
            dhcp4: false


        eth0.2:
            id: 2
            link: eth0
            addresses: [10.0.2.2/24]
            routes:
                - to: 10.0.2.0/24
                  via: 10.0.2.1
                  table: 103
            routing-policy:
                - from: 10.0.2.0/24
                  table: 103
            dhcp4: false

すべてのトラフィックをコアルーターの対応するネクストホップにルーティングする方法についてのアイデアはありますか?つまり、0.0.0.0/0からのすべてのトラフィック(10.0.0.0/24)は10.0.0.1にルーティングする必要がありますが、10.0.2.0/2410.0.2.1にルーティングする必要があります。

プレーンなip routeルールも使用できてうれしいです。

前もって感謝します!


編集13/05/2

routesにデフォルトルートを追加しました。ルーティングは期待どおりに機能していますが、tracerouteの出力はおかしいようです。

routes:
  - to: 0.0.0.0/0
    via: 10.0.0.1
    table: 101

最初のテスト:

traceroute to 1.1.1.1 (1.1.1.1), 64 Hops max, 52 byte packets
 1  10.0.0.2 (10.0.0.2)  0.896 ms * *
 2  10.0.0.1 (10.0.0.1)  1.361 ms  1.126 ms  0.879 ms

2番目のテスト:

traceroute to 1.1.1.1 (1.1.1.1), 64 Hops max, 52 byte packets
 1  * * *
 2  10.0.0.1 (10.0.0.1)  1.353 ms  1.062 ms  0.825 ms
1
GreenVine

特に複数のルーティングテーブルをすでに使用しているため、非常に簡単です。

(申し訳ありませんが、私の例をnetplanに変換しませんでした。ただし、通常のIPルートルールを使用するゲームなので、それで十分です。この例では、最初から始めていることを前提としています)

つまり、ネットプランはすでに3つのルーティングテーブルを作成しているので、最初のルーティングテーブルを使用します。

ip route flush 101
ip route add table 101 to 10.0.0.0/24 dev eth0
ip route add table 101 to default via 10.0.0.1

そしてあなたが持っている3番目のルーティングテーブル:

ip route flush 103
ip route add table 103 to 10.0.2.0/24 dev eth0.2
ip route add table 103 to default via 10.0.2.1

次に、トラフィックの送信元IPアドレスに基づいて各テーブルにトラフィックを送信する2つのルールを作成します。

ip rule add from 10.0.0.0/24 table 101 priority 101
ip rule add from 10.0.2.0/24 table 103 priority 103

これでうまくいくはずです。 2つのテーブルに宛先ルートを追加し続けることができ、関連付けられたソースからのトラフィックのみがそれらのエントリにヒットすることに注意してください。これらのエントリは十分であり、各テーブルのデフォルトルートを削除することを選択できます。

0
Omar Buhidma