vethリンクを介してnetnsからルーティング

vethリンクを介してnetnsからルーティング

ネットワークネームスペース()とリンクペアip netns addも作成しました。ルートネームスペースの物理リンクはと呼ばれます。ルートネームスペースと新しく作成されたネームスペースにあります。vethvirt-avirt-beth0virt-avirt-b

IPアドレス:

eth0:   192.168.1.100/24
virt-a: 192.168.1.101/24
virt-b: 192.168.1.102/24

ルートネームスペースのルーティングテーブル:

default via 192.168.1.1 dev eth0 
192.168.1.102 dev virt-a proto kernel scope link src 192.168.1.101
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100

新しい名前空間のルーティングテーブル:

default dev virt-b scope link src 192.168.1.102

ルートネームスペースで192.168.1.102をpingでき、新しいネームスペースで192.168.1.100と192.168.1.101をpingできます。ただし、LAN(たとえば、192.168.1.1)内の他の物理システムをpingすることはできません。

を使用して着信パケットをルートネームスペースに書き込むiptables -t raw -A PREROUTING -i virt-a -j LOG --log-prefix "[raw-PRE] " --log-level 7が、ルートネームスペースにパケットが入らない。

vethまたは名前空間についてどのような誤解がありますか?

編集する:

私はvethがどのように動作するか誤解したと思います。ルートネームスペースにブリッジを作成し、2つのネームスペースのマスターにすることで、新しいネームスペースから外部デバイスをpingできますeth0virt-a

なぜこれですか? 2つの物理ネットワークカードがあり、一方から着信トラフィックを受信して​​いる場合は、ブリッジなしで別のカードに転送できます。 vethも同じように動作しないのですか?

iprouteのさまざまな種類のリンクについてもっと学ぶことができる場所はありますか?文書の検索に問題があります。

ベストアンサー1

誤解は、ネットワークの名前空間ではなく、ルーティングに関するものです。その他IPv4ネットワーク。

ここでは、同じネットワークに属するIPをルーティングしようとしています。 from 192.168.1.0/24to 192.168.1.0/24:テストケースに適していない特別な設定(プロキシarpなど)が指定されていない限り、まったくルーティングされません。

192.168.2.0/24veth-*ネットワークなどの他のIP LANを使用してください。また、ネットワークネームスペースのパスは、「デバイス」だけでなく、veth-aのIPもデフォルトゲートウェイとして使用する必要があります。外部システムが他のプライベートネットワークについて知らなくても正しく対話できるように、iptablesを使用してNATルールを追加してIP転送を有効にすることもできます。

おすすめ記事