間違ったツールを使用している可能性がありますが、ネットワーク名前空間はほぼ理想的な選択肢のようです。
リスニングインターフェイスやアドレスを指定できないプログラムが3つあります(「0.0.0.0」でのみリスニング)。私はこれらのサービスをnetnsに入れて内部アドレス(例:192.168.3.0/24)だけを見ることができ、外部トラフィックを受信しないようにしたいと思います。
私は"Local"と呼ばれるnetnsを作成し、デフォルトとローカルのnsを拡張するvethを作成しました。たとえば、次のようになります。
ip link add veth1 type veth peer name vpe1
2つの異なる物理インターフェイスと組み合わせて、veth1をローカルブリッジ(br0)にバインドしました。 "brctl show br0"は、eth0、eth5、veth1の3つのインターフェースを表示します。
次に、ローカルネットワークのvpe1のIPを「129」に設定しました。テストの結果、他のホストとLocal-nsのbash-shellでpingを実行できることがわかりました。ただローカルネットワークのホストをpingする機能。
しかし、、progs(そのうちの1つはxinetd)は、サーバーのローカルネットワークアドレス(ブリッジアドレス192.168.3.1)への呼び出しを提供するように設計されています。 「ローカル専用」ネームスペースに異なるIPがあっても、「サーバー」のサービスに応答しません。
いくつかの他のオプションを試しました。まず、名前空間内の「vpe1」IPに同じホスト名を付けてから、同じIPを与えてみました。何も働かなかったか、効果がなかった。
概念的には、デフォルトのネームスペースを複製してから外部インターフェイスを削除するサブネットがあると思います。以前にすべてのインターフェイスを表示した場合と同様に、プロセスがローカルインターフェイスとサービス要求のみを表示できるようにします。名前空間)。
これは〜らしいプロセスグループにサーバーインターフェイスのさまざまな論理ビューを提供するための別々の名前空間のための理想的な場所として、netnsに単に別の「ビュー」( 'bind / named-speak'を使用)を提供させる方法がわかりません。その「顧客」。
Linuxのネットワーク名前空間を使用してこれを達成できますか?それともこれを達成するために何かを見逃しているのでしょうか?ネームスペースがこのタイプの「セグメンテーション」を提供しない場合、ネイティブネームスペースでクライアントプログラムをエミュレートするために多くのiptableルーティングなしでこれを提供できますか?
ありがとうございます!あ☆あ
答え1
簡単に言えば、Linuxネットワークネームスペースは孤立したIPスタックです。ネットワークネームスペースなどの仮想的なものを忘れて諮問してください。ルータ、ホスト、ブリッジボックス、イーサネットケーブルを使用して作業をどのように解決できますか?物理設定がある場合は、ほぼ自然に仮想ツインに変換されます。ただし、パケットフィルタリングルールを忘れないでください。これが鍵となる可能性があります。
私はあなたの使命が正確に何であるかを完全に理解していません。しかし、一つは私の注目を集めました。これは、物理ネットワークインターフェイスを接続するブリッジと他のネットワークネームスペース(IPスタック)に接続するVethケーブルがまったく望ましくない可能性があるためです。これは、誰もがブリッジを介してレイヤ2のフルアクセスを持つことができることを意味します。このレベルでは、IPアドレスは重要ではありません。別々のネットワーク名前空間に完全な直接ネットワークアクセス権を付与できます。それ自体は何の問題もありません(実際、私は個人的にそれが非常に役立ついくつかの状況を知っています)。しかし、これはあなたが望む状況ですか?