Почему мой интерфейс vlan в пространстве имен сети linux не может пропинговать родительский интерфейс?
Поэтому я пишу программу, которая изолирует себя от пространств имен, но я застрял на том, чтобы заставить сеть работать так, как я хочу. Я планирую направить свое приложение через Tor, который является прокси-сервером Socks5, который предоставляет SocksPort на сетевом интерфейсе.
Мое приложение должно работать, когда оно уже изолировано виртуальными машинами и маршрутизацией только на хосте, при этом Tor на хосте должен сказать vboxnet1 (192.168.56.1:9051), eth0 внутри виртуальной машины - (192.168.56.101), тогда у меня есть сетевое пространство имен. Из-за этого я не могу просто использовать пару веток и привязывать Tor к ветке в родительском пространстве имен, потому что Tor даже не находится на виртуальной машине. В конечном счете, мне нужно получить соединение с SocksPort 192.168.56.1:9051 из пространства имен через eth0 (192.168.56.101) в родительском пространстве имен. Однако решение, которое я использую, также должно работать, когда я не на виртуальной машине и когда Tor находится в родительском пространстве имен (в отличие от хоста виртуальной машины с родительским пространством имен).
Это лишь некоторая предыстория того, почему ветеринарные пары и тому подобное не будут работать для меня, и в целом, что я пытаюсь сделать, мой вопрос более конкретен;
Я следовал за руководством по следующей ссылке: http://blog.scottlowe.org/2014/03/21/a-follow-up-on-linux-network-namespaces/
в Linux 3.16
Я сделаю это прямо сейчас и покажу точные команды, которые я печатаю:
ip netns добавить синий
ip link добавить ссылку eth0 имя eth0.100 тип vlan id 100
в этот момент "ip -d link" показывает следующее (с отредактированным MAC);
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether promiscuity 0
352: eth0.100@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
promiscuity 0
vlan protocol 802.1Q id 100 <REORDER_HDR>
ip link set eth0.100 netns синий
Я отмечаю, что ссылка ip -d из синего пространства имен имеет следующий вывод
ip netns exec blue ip -d ссылка
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 promiscuity 0
352: eth0.100@if2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default
promiscuity 0
vlan protocol 802.1Q id 100 <REORDER_HDR>
Обратите внимание, что сейчас это eth0.100@if2, а не @eth0, я не уверен, что это актуально.
Я поднимаю loopback, которого на самом деле нет в руководстве, которое я упоминал, но я считаю, что это необходимо:
ip netns exec blue ip link set dev lo up
ip netns exec blue ip addr add 192.168.56.102/24 dev eth0.100
ip netns exec blue ip link set eth0.100 up
ip netns exec blue ifconfig показывает это сейчас (слегка отредактировано)
eth0.100 Link encap:Ethernet
inet addr:192.168.56.102 Bcast:0.0.0.0 Mask:255.255.255.0
Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:33 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:5598 (5.5 KB)
из родительского пространства имен, если показывает ifconfig
eth0 Link encap:Ethernet
inet addr:192.168.56.101 Bcast:192.168.56.255 Mask:255.255.255.0
Но потом, когда я пытаюсь пинговать из пространства имен, как указано в руководстве;
ip netns exec blue ping -c 4 192.168.56.101
PING 192.168.56.101 (192.168.56.101) 56 (84) байт данных.
С 192.168.56.102 icmp_seq=1 целевой хост недоступен
Это всегда недоступно, то же самое, если я пытаюсь 192.168.56.1, который, в конечном счете, и является тем, к чему я хочу подключиться (это vboxnet на хосте, на который можно перенаправить из eth0 в vm, но я не могу даже маршрут к eth0 из пространства имен, даже с добавлением интерфейса vlan в пространство имен).
спасибо за любую помощь, которую я пытался сделать это часами, и я почти исчерпал каждый ресурс.