poi*_*ige 11 linux freebsd ip jails lxc
在 FreeBSD 4.9 中,只需一个命令即可轻松完成,例如
jail [-u username] path hostname ip-number command
Run Code Online (Sandbox Code Playgroud)
如果路径是/你像往常一样运行相同的程序,但它的所有网络通信都被限制为仅使用给定的 IP 地址作为源。有时它非常方便。
现在在 Linux 中有 LXC,它看起来与 FreeBSD jail(或 Solaris 的区域)非常相似——你能想出类似的方式来执行程序吗?
Ste*_*n D 12
在只能看到所需 IP 地址的网络命名空间内启动进程可以完成类似的事情。例如,假设我只希望 localhost 可用于特定程序。
首先,我创建网络命名空间:
ip netns add limitednet
Run Code Online (Sandbox Code Playgroud)
命名空间默认有一个环回接口,所以接下来我只需要调出它:
sudo ip netns exec limitednet ip link set lo up
Run Code Online (Sandbox Code Playgroud)
现在,我可以运行一个程序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
Run Code Online (Sandbox Code Playgroud)
如果我想将其限制为 localhost 以外的地址,我可以使用以下命令将其他接口添加到命名空间中:
ip link set DEVICE_NAME netns NAMESPACE
Run Code Online (Sandbox Code Playgroud)
在接口可能有多个 IP 地址的情况下,我必须进行更多实验,以弄清楚如何将单个 IP 地址添加到命名空间中