Am setat cu succes 2 octoprint-uri într-un linux armbian pe 2 porturi diferite 5000 și 5001 folosind netns. Mă pot conecta la ei ca 10.10.10.233:5000 și 10.10.10.233:5001 fără probleme.
Primul dintre ei (5000) este pe sistemul principal și are o conexiune de succes la Internet, al doilea (portul 5001) nu se poate conecta la internet, se poate conecta doar la gazdă prin veth.
Toată configurația este:
sudo ip link add dev virt01 tip veth peer name virt02
sudo ip netns add octo2
sudo ip link set virt01 netns octo2
sudo ip netns exec octo2 ip addr add 10.1.1.1/24 dev virt01
sudo ip addr add 10.1.1.2/24 dev virt02
sudo ip netns exec octo2 ip link set dev virt01 up
sudo ip link set dev virt02 up
sudo ip netns exec octo2 ip link set lo up
sudo ip netns exec octo2 ip route add default prin 10.1.1.2
#permite înainte
sudo ip netns exec octo2 sysctl net.ipv4.ip_forward=1
echo 1 > /proc/sys/net/ipv4/ip_forward
În acest moment, în gazdă aveți:
netstat -rn
Tabelul de rutare IP kernel
Destination Gateway Genmask Flags Fereastra MSS irtt Iface
0.0.0.0 10.10.10.1 0.0.0.0 UG 0 0 0 eth0
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 virt02
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
în netns:
sudo ip netns exec octo2 netstat -rn
Tabelul de rutare IP kernel
Destination Gateway Genmask Flags Fereastra MSS irtt Iface
0.0.0.0 10.1.1.2 0.0.0.0 UG 0 0 0 virt01
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 virt01
Deci conexiunile de la gazdă sunt BUNE la Internet (prin router 10.10.10.1/24) și la netns
orangepi:~$ ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) octeți de date.
64 de octeți din 1.1.1.1: icmp_seq=1 ttl=54 timp=21,6 ms
64 de octeți din 1.1.1.1: icmp_seq=2 ttl=54 time=21,4 ms
orangepi:~$ ping 10.1.1.1
PING 10.1.1.1 (10.1.1.1) 56(84) octeți de date.
64 de octeți din 10.1.1.1: icmp_seq=1 ttl=64 time=0,242 ms
Dar de la netns există doar conexiune la gazdă și NU INTERNET:
orangepi:~$ sudo ip netns exec octo2 ping 10.1.1.2
PING 10.1.1.2 (10.1.1.2) 56(84) octeți de date.
64 de octeți din 10.1.1.2: icmp_seq=1 ttl=64 time=0,250 ms
# EROARE AICI, FĂRĂ INTERNET DE LA NETNS:
orangepi:~$ sudo ip netns exec octo2 ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) octeți de date.
^C
--- 1.1.1.1 statistici ping ---
2 pachete transmise, 0 primite, 100% pierdere de pachete, timp 1017 ms
orangepi:~$ sudo ip netns exec octo2 traceroute 1.1.1.1
traceroute la 1.1.1.1 (1.1.1.1), 30 de hopuri max, pachete de 60 de octeți
1 _gateway (10.1.1.2) 0,288 ms 0,094 ms 0,079 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 *^C
iptable-urile gazdei:
orangepi:~$ sudo iptables -S
-P ACCEPT INTRARE
-P ACCEPTĂ ÎN ÎNTÂMPRE
-P ACCEPT IEȘIRE
orangepi:~$ sudo iptables -S -t nat
-P PREROUTING ACCEPT
-P ACCEPT INTRARE
-P ACCEPT IEȘIRE
-P POSTOUTING ACCEPT
De asemenea niste date:
orangepi:~$ ip r
implicit prin 10.10.10.1 dev eth0 proto dhcp metric 100
10.1.1.0/24 dev virt02 proto kernel scope link src 10.1.1.2
10.10.10.0/24 dev eth0 proto kernel scope link src 10.10.10.234 metric 100
169.254.0.0/16 dev eth0 scope link metric 1000
orangepi:~$ sudo ip netns exec octo2 ip r
implicit prin 10.1.1.2 dev virt01
10.1.1.0/24 dev virt01 proto kernel scope link src 10.1.1.1
ed@orangepizero:~$ cat /proc/sys/net/ipv4/ip_forward
1
ed@orangepizero:~$ sudo ip netns exec octo2 cat /proc/sys/net/ipv4/ip_forward
1
orangepi:~$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
orangepi:~$ sudo ip netns exec octo2 sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Sistemul nu are ufw și alte firewall-uri.
Cum să remediați și să acordați acces netns la Internet?