FreeBSD 4.9では、1つのコマンドでこれを簡単に実行できます。
jail [-u username] path hostname ip-number command
パスがある場合は通常/
と同じプログラムを実行しますが、すべてのネットワークトラフィックは指定されたIPアドレスのみを送信元として使用するように制限されます。時にはとても便利です。
これでLinuxにLXCがあるので、jail
FreeBSD(または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記事とても役に立ちます。