【问题标题】:Access internet from device in network namespace从网络命名空间中的设备访问互联网
【发布时间】: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 接口,但不是在根命名空间中配对的 veth08.8.8.8,否则我可以在命名空间中。

如何从命名空间中的设备访问互联网?

【问题讨论】:

    标签: networking namespaces iptables


    【解决方案1】:

    我还需要再次命名空间内完成所有路由。

    因此,除了上面的脚本之外,您还需要在命名空间执行以下操作:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -A FORWARD -o veth1 -i enxxx -j ACCEPT
    iptables -A FORWARD -i veth1 -o enxxx -j ACCEPT
    iptables -t nat -A POSTROUTING -s 192.168.0.1/24 -o veth1 -j MASQUERADE
    

    从那时起,您可以通过设备访问互联网。

    【讨论】:

      猜你喜欢
      • 2017-06-24
      • 1970-01-01
      • 2018-10-26
      • 2017-11-25
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多