因此,我创建了一个名为客户端的网络命名空间和另一个名为服务器的命名空间。我还创建了虚拟以太网来连接它们。
ip netns add client
ip netns add server
ip link add v-client type veth peer name v-server
然后我把它们连接起来
ip link set v-client netns client
ip link set v-server netns server
我为它们分配了 IP 并进行设置:
ip netns exec client ip addr add 192.0.2.0/24 dev v-client
ip netns exec server ip addr add 192.0.2.128/24 dev v-server
ip netns exec client ip link set v-client up
ip netns exec server ip link set v-server up
到目前为止一切顺利。我想要做的是在两者之间放置一个防火墙。例如,如果客户端尝试 ping 服务器,防火墙将不允许它。我希望防火墙作为一个单独的命名空间。我想要一个名为防火墙的第三个网络命名空间,它控制服务器和客户端之间的流量。我该如何实现这一点?
答案1
您需要为每个命名空间单独创建防火墙规则,就像为它们创建网络接口一样。每个命名空间都有自己的防火墙规则,例如:
ip netns exec server iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
ip netns exec server iptables -P INPUT DROP
ip netns exec server iptables -A INPUT -p icmp -j DROP
为了使此更改永久生效,您可以使用 systemd 服务或其他启动脚本:
/sbin/ip netns exec server iptables-restore /etc/iptables.server.rules
但在此之前您需要保存防火墙规则:
ip netns exec server iptables-save /etc/iptables.server.rules