ネットワークネームスペースをインターネットに接続する

ネットワークネームスペースをインターネットに接続する

私のシナリオは次のとおりです。独自のネットワークインターフェイスを使用して別の名前空間でプログラムを実行できるようにしたいです。しかし、物理ネットワークインターフェイスを介してインターネットにアクセスすることもできます。これは私のコードです。

ip netns add private_ns
ip link add link eth1 name eth1.100 type vlan id 100
ip link set eth1.100 netns private_ns
ip netns exec private_ns ip addr add 10.1.1.1/24 dev eth1.100
ip netns exec private_ns ip link set eth1.100 up

次に、次のことを試してください。

ip netns exec private_ns ping 8.8.8.8

私は得るconnect: Network is unreachable

ベストアンサー1

各ネットワーク名前空間は、ネットワークスタックの別々の論理コピーです。したがって、ネットワーク名前空間を別々のシステムとして扱う必要があります。

現在のコンピュータを介して新しいコンピュータをインターネットに接続するには、次のものが必要です。

    1. 各コンピュータで未使用のネットワークカードを選択します(または新しいカードを取り付けます)。
    1. ネットワークケーブルで一緒に接続します。
    1. イーサネットブリッジング、一般IPルーティング、またはNATから選択してください。
  • 4a.イーサネットブリッジングの場合は、既存のコンピュータの新しいネットワークカードを適切なブリッジに追加し、ブリッジを持つサブネットのIPをセカンダリコンピュータのネットワークカードに提供します。
  • 4b。従来のIPルーティングの場合は、新しいリンクのIPブロックを選択します。ブロックにインターフェイスIPを割り当て、既存のシステムでIP転送が有効になっていること、残りのネットワークが新しいサブネットを認識していること、およびiptablesルール(存在する場合)がトラフィックフローを許可していることを確認してください。
  • 4c。 NAT の場合は、新しいリンクの IP ブロックを選択します。ブロックにインターフェイスIPを割り当て、既存のシステムでIP転送が有効になっていること、IPtablesルールがトラフィックフローを許可していること、および新しいサブネットから外部ホストへのトラフィックのSNATまたはMASQURADEルールを設定します。
    1. 新しいコンピュータに適切なデフォルトゲートウェイを設定します。

ネットワークネームスペースを使用する場合も同様です。

    1. デフォルトのネットワーク名前空間に veth ペアを作成します。
    1. vethペアの一方の端をセカンダリネットワークの名前空間に移動します。
    1. イーサネットブリッジング、一般IPルーティング、またはNATから選択してください。
  • 4a.イーサネットブリッジングの場合、デフォルトのネットワークネームスペースの新しい veth を適切なブリッジに追加し、新しいネットワークネームスペースの veth にブリッジサブネットの IP を提供します。
  • 4b。従来のIPルーティングの場合は、新しいリンクのIPブロックを選択します。ブロックにインターフェイスIPを割り当て、既存のシステムでIP転送が有効になっていること、残りのネットワークが新しいサブネットを認識していること、およびiptablesルール(存在する場合)がトラフィックフローを許可していることを確認してください。
  • 4c。 NAT の場合は、新しいリンクの IP ブロックを選択します。ブロックにインターフェイスIPを割り当て、既存のシステムでIP転送が有効になっていること、IPtablesルールがトラフィックフローを許可していること、および新しいサブネットから外部ホストへのトラフィックのSNATまたはMASQURADEルールを設定します。
    1. セカンダリネットワークの名前空間に適切なデフォルトゲートウェイを設定します。

(見苦しい書式について申し訳ありません。私よりもマークダウンのスキルが多い場合は、自由に修正してください。)

おすすめ記事