2つのネットワークインターフェイスを備えたCentOS7サーバーがあります。 1つはLAN(ens32)を指し、もう1つはDMZ(ens33)を指します。
LANインターフェイスは正常に機能しますが、トラフィックはrootとしてログインした場合にのみDMZインターフェイスを通過するように見えます。これが何を意味するのか、または発生している他の問題に正味の影響があるのかどうかはわかりません。 。
たとえば、次のように実行します:
curl --interface ens32 ipecho.net/plain
root以外のユーザーとして、そのインターフェースのパブリックIPを取得します。
実行した場合:
curl --interface ens33 ipecho.net/plain
root以外のユーザーとして、コマンドが停止しているように見え、プロセスを強制終了します。
前のコマンドをrootとして実行すると、そのインターフェースのパブリックIPである期待される出力が得られます。
誰かがここで何が起こっているのか説明できますか?
承認された回答:
公式のcurl
で見ることができるように ページ、特定のインターフェースを指定/バインドするには、CAP_NET_RAWを使用するか、root
として実行する必要があります。 。
したがって、root
バインディング/ルーティングを実行でき、通常のユーザーでは機能しません。
通常のユーザーがcurl
を使用している場合 、--interface
の使用が許可されていない場合 オプションの場合、サーバーのデフォルトのルーティングルールが代わりにその操作に適用されます。
curlの公式ページcurl.1のマニュアルページから:
–interface
指定されたインターフェースを使用して操作を実行します。
インターフェース名、IPアドレス、またはホスト名を入力できます。例は次のようになります:curl –interface eth0:1 https://www.example.com/
このオプションを複数回使用すると、最後のオプションが使用されます。
LinuxではVRFを指定するために使用できますが、バイナリは
CAP_NET_RAWを持っているか、rootとして実行する必要があります。
Linux VRFの詳細:https://www.kernel.org/doc/Documentation/networking/vrf.txt