Existem dois erros nos itens acima. Primeiro, fazendo a ponte entre veth
IF com enp0s3
, você estará enviando os pings para fora do seu computador, enquanto sua intenção é se comunicar com outra parte do seu próprio computador. Segundo, a sintaxe do comando que estabelece a interface veth
está errada.
Você deve vincular a interface veth
a outra interface virtual, tap0
; então você verá seus pings voltando. Experimente da seguinte forma:
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
Eu adicionei a interface lo
apenas porque você a achará útil no futuro. Agora você pode pingar,
ping -c1 10.0.0.2
e você verá os pings voltando.
EDITAR:
how I can access the Internet throw veth-b$NNS and the veth-b$NNS's MAC have to be visible to my ISP
Não há como expor os dois veth
ao seu ISP. Ainda assim, o seguinte deve funcionar bem:
-
O seguinte, por algum motivo, eu não entendo, deve ser feito antes de todos os comandos anteriores:
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
Isso lhe dará resolução de DNS. Mas lembre-se, isso deve ser feito antes dos comandos acima!
-
No seu host, permita o encaminhamento IPv4 e o MASQUERADING:
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
-
Adicione um gateway ao seu novo namespace de rede:
ip netns exec $NNS ip route add default via 10.0.0.1
-
Agora, insira seu novo espaço de rede, eu faço isso criando um
xterm
e digitando os comandos que estão necessariamente no novo NNS:ip netns exec $NNS su -c xterm YourName &
Se você não gosta do xterm, você pode usar qualquer tipo de terminal que desejar (se você não tiver um xterm, apenas instale-o, apt-get install xterm
).
Isso deve funcionar.