我有一个网络命名空间测试。向此命名空间添加了物理接口 eth0。我必须在 eth0 上运行 dhcp 服务器,以便通过此端口连接的任何人都可以获得动态 ip。
如果我不创建任何命名空间并使用全局,它就可以正常工作。
但是当我这样做的时候
$ ip netns exec test service isc-dhcp-server status
● isc-dhcp-server.service - ISC DHCP IPv4 server
Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2017-05-22 03:06:56 IST; 2h 9min ago
Docs: man:dhcpd(8)
Main PID: 5315 (code=exited, status=1/FAILURE)
May 22 03:06:56 PowerEdge-T20 sh[5315]: Not configured to listen on any interfaces!
/etc/default/isc-dhcp-server
包含INTERFACES="eth0"
并且相应的条目存在于/etc/dhcp/dhcpd.conf
命令输出:
$ ip netns exec test ip a
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 48:ee:0c:bb:dc:68 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.1/20 scope global eth0
valid_lft forever preferred_lft forever
答案1
ip netns exec <NAME> <CMD>
因此,如果你foo
使用如下命令创建了一个命名空间
ip netns create foo
在该命名空间中配置网络后,您可以使用以下命令启动该服务:
ip netns exec foo service dhcpd start