Я успешно настроил 2 октопринта в 1 armbian linux на 2 разных портах 5000 и 5001 с помощью netns. Я могу без проблем подключиться к ним как 10.10.10.233:5000 и 10.10.10.233:5001.
Первый из них (5000) находится в основной системе и имеет успешное подключение к Интернету, второй (порт 5001) не может подключиться к Интернету, он может подключаться только к хосту через veth.
Все настройки такие:
sudo ip link add dev virt01 type veth имя однорангового узла virt02
sudo ip netns добавить 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-адрес добавить 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 добавить по умолчанию через 10.1.1.2
#разрешить переадресацию
sudo ip netns exec octo2 sysctl net.ipv4.ip_forward=1
эхо 1 > /proc/sys/net/ipv4/ip_forward
На данный момент в хосте есть:
netstat -rn
Таблица IP-маршрутизации ядра
Шлюз назначения Флаги Genmask MSS Window 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
в сети:
sudo ip netns exec octo2 netstat -rn
Таблица IP-маршрутизации ядра
Шлюз назначения Флаги Genmask MSS Window 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
Таким образом, соединения от хоста ХОРОШИЕ к Интернету (через маршрутизатор 10.10.10.1/24) и к netns
оранжевый пи:~$ пинг 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56 (84) байт данных.
64 байта из 1.1.1.1: icmp_seq=1 ttl=54 время=21,6 мс
64 байта из 1.1.1.1: icmp_seq=2 ttl=54 время=21,4 мс
оранжевый пи:~$ пинг 10.1.1.1
PING 10.1.1.1 (10.1.1.1) 56 (84) байт данных.
64 байта из 10.1.1.1: icmp_seq=1 ttl=64 время=0,242 мс
Но из netns есть только подключение к хосту и НЕТ ИНТЕРНЕТА:
Orangepi:~$ sudo ip netns exec octo2 ping 10.1.1.2
PING 10.1.1.2 (10.1.1.2) 56 (84) байт данных.
64 байта из 10.1.1.2: icmp_seq=1 ttl=64 время=0,250 мс
# ОШИБКА ЗДЕСЬ, НЕТ ИНТЕРНЕТА ОТ NETNS:
Orangepi:~$ sudo ip netns exec octo2 ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56 (84) байт данных.
^ С
--- 1.1.1.1 статистика пинга ---
2 пакета передано, 0 получено, 100% потери пакетов, время 1017 мс
Orangepi:~$ sudo ip netns exec octo2 traceroute 1.1.1.1
traceroute до 1.1.1.1 (1.1.1.1), макс. 30 переходов, пакеты по 60 байт
1 _шлюз (10.1.1.2) 0,288 мс 0,094 мс 0,079 мс
2 * * *
3 * * *
4 * * *
5 * * *
6 *^С
iptables хоста:
оранжевыйpi:~$ sudo iptables -S
-P ВВОД ПРИНЯТЬ
-P ВПЕРЕД ПРИНЯТЬ
-P ВЫВОД ПРИНЯТЬ
Orangepi:~$ sudo iptables -S -t nat
-P ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ ПРИНЯТЬ
-P ВВОД ПРИНЯТЬ
-P ВЫВОД ПРИНЯТЬ
-P ОТПРАВКА ПРИНЯТЬ
Также некоторые данные:
оранжевыйpi:~$ ip r
по умолчанию через 10.10.10.1 dev eth0 proto dhcp metric 100
10.1.1.0/24 dev virt02 прото-область ядра ссылка src 10.1.1.2
10.10.10.0/24 dev eth0 proto kernel scope link src 10.10.10.234 метрика 100
169.254.0.0/16 dev eth0 метрика ссылки области видимости 1000
Orangepi:~$ sudo ip netns exec octo2 ip r
по умолчанию через 10.1.1.2 dev virt01
10.1.1.0/24 dev virt01 ссылка на область ядра proto 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
оранжевый пи:~$ 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
В системе нет ufw и других брандмауэров.
Как исправить и дать netns доступ в интернет?