Linux:選択したIPアドレスにバインドするプログラムを実行する便利な方法はありますか?

Linux:選択したIPアドレスにバインドするプログラムを実行する便利な方法はありますか?

FreeBSD 4.9では、1つのコマンドでこれを簡単に実行できます。

jail [-u username]  path hostname ip-number command

パスがある場合は通常/と同じプログラムを実行しますが、すべてのネットワークトラフィックは指定されたIPアドレスのみを送信元として使用するように制限されます。時にはとても便利です。

これでLinuxにLXCがあるので、jailFreeBSD(またはSolaris)と非常によく似ています。プログラムを実行する同様の方法を考えることができますか?

答え1

内でプロセスを開始します。ネットワークネームスペース目的のIPアドレスのみを確認しても同様のことができます。たとえば、特定のプログラムに対してのみlocalhostを使用できるようにしたいとします。

まず、ネットワークネームスペースを作成します。

ip netns add limitednet

ネームスペースにはデフォルトでループバックインターフェイスがあるので、次にそれをオンにするだけです。

sudo ip netns exec limitednet ip link set lo up

これで、次のコマンドを使用してプログラムを実行でき、ip netns exec limitednetループバックインターフェイスのみが表示されます。

sudo ip netns exec limitednet ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

localhost以外のアドレスに制限するには、次のように名前空間に追加のインターフェイスを追加できます。

ip link set DEVICE_NAME netns NAMESPACE

インターフェイスに複数のIPアドレスがある可能性がある場合は、名前空間に単一のIPアドレスを追加する方法を理解するために、より多くの実験を行う必要があります。

これ名前空間に関するLWN記事とても役に立ちます。

関連情報