Es gibt zwei Fehler in den oben genannten. Wenn Sie die veth
IF mit überbrücken enp0s3
, werden Sie die Pings außerhalb Ihres PCs senden, während Sie mit einem anderen Teil Ihres PCs kommunizieren möchten. Zweitens ist die Syntax des Befehls, der die veth
Schnittstelle festlegt, falsch.
Sie sollten die veth
Schnittstelle mit einer anderen virtuellen Schnittstelle überbrücken tap0
. dann sehen Sie Ihre Pings zurückkommen. Versuchen Sie es wie folgt:
NNS=WhateverYouWantToCallTheNewNetworkNameSpace ip netns add $NNS ip link add veth-a$NNS type veth peer name veth-b$NNS ip link set veth-a$NNS up ip tuntap add tap$NNS mode tap user root ip link set tap$NNS up ip link add br$NNS type bridge ip link set tap$NNS master br$NNS ip link set veth-a$NNS master br$NNS ip addr add 10.0.0.1/24 dev br$NNS ip link set br$NNS up ip link set veth-b$NNS netns $NNS ip netns exec $NNS ip addr add 10.0.0.2/24 dev veth-b$NNS ip netns exec $NNS ip link set veth-b$NNS up ip netns exec $NNS ip link set dev lo up
Ich habe die lo
Schnittstelle nur hinzugefügt, weil sie in Zukunft nützlich sein wird. Jetzt können Sie pingen,
ping -c1 10.0.0.2
und Sie werden die Pings wiederkommen sehen.
BEARBEITEN:
Wie kann ich auf den Internet-Wurf zugreifen? veth-b $ NNS und der MAC von veth-b $ NNS müssen für meinen ISP sichtbar sein
Es gibt keine Möglichkeit, die beiden veth
Ihrem ISP auszusetzen . Dennoch sollte Folgendes gut funktionieren:
Aus irgendeinem Grund, den ich nicht verstehe, muss vor allen vorherigen Befehlen Folgendes ausgeführt werden:
NNS=WhateverYouWantToCallTheNewNetworkNameSpace /bin/mkdir -p /etc/netns/$NNS echo "nameserver 8.8.8.8" > /etc/netns/$NNS/resolv.conf echo "nameserver 8.8.4.4" >> /etc/netns/$NNS/resolv.conf
Dadurch erhalten Sie eine DNS-Auflösung. Denken Sie jedoch daran, dass dies vor den obigen Befehlen geschehen muss!
Erlauben Sie auf Ihrem Host die IPv4-Weiterleitung und das MASQUERADING:
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
Fügen Sie Ihrem neuen Netzwerknamensraum ein Gateway hinzu:
ip netns exec $NNS ip route add default via 10.0.0.1
Geben Sie nun Ihren neuen Netzwerk-Namespace ein. Ich erstelle dazu einen
xterm
Befehl und tippe dann darin Befehle ein, die sich notwendigerweise im neuen NNS befinden:ip netns exec $NNS su -c xterm YourName &
Wenn Sie xterm nicht mögen, können Sie beliebige Arten von Terminals verwenden (wenn Sie kein xterm haben, installieren Sie es einfach apt-get install xterm
).
Das sollte funktionieren.