【发布时间】:2021-08-24 14:57:07
【问题描述】:
我有一个设备通过 USB 以太网连接到我的笔记本电脑。但是因为我有不止一台设备像这样使用相同的 IP 地址连接,所以我创建了网络命名空间。我能够通过使用虚拟以太网接口对并路由到具有 Internet 访问权限的接口从网络命名空间启用 Internet 访问 - 类似于 this:
## Add radar interface to namespace
ip netns add net-test
ip link set dev enxxx netns net-test
ip netns exec net-test ip link set dev enxxx up
ip netns exec net-test ip address add 192.168.0.1/24 dev enxxx
ip netns exec net-test ip link set dev lo up
## Setting up the dhcp server on the created netns.
netns-exec net-test dnsmasq -C "/etc/dnsmasq.conf"
## Create and add virtual ethernet to namespace
ip link add veth0 type veth peer name veth1
ip link set veth1 netns net-test
ip addr add 10.0.0.1/24 dev veth0
ip netns exec net-test ip addr add 10.0.0.2/24 dev veth1
## Set up internet access through namespace
ip link set veth0 up
ip netns exec net-test ip link set veth1 up
## Setup ip forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -o eth0 -i veth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o veth0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.2/24 -o eth0 -j MASQUERADE
ip netns exec net-test ip route add default via 10.0.0.1
但我仍然无法从设备本身访问互联网。我通过 SSH 连接到它并且可以 ping veth1 接口,但不是在根命名空间中配对的 veth0 和 8.8.8.8,否则我可以在命名空间中。
如何从命名空间中的设备访问互联网?
【问题讨论】:
标签: networking namespaces iptables