Я работаю над реализацией многоадресной рассылки для contiki. У меня есть пара виртуальных машин Ubuntu на NAT и интерфейс eth0.
К одной из этих виртуальных машин подключен пограничный маршрутизатор Contiki (zigduino), который создает свой собственный интерфейс tun0. (см. также http://anrg.usc.edu/contiki/index.php/RPL_Border_Router < / а>)
Одна из виртуальных машин выполняет многоадресную рассылку пакетов udp на ff1e ::. Я вижу на wirehark, что каждая виртуальная машина получает этот многоадресный пакет. Интерфейс tun0 моего пограничного маршрутизатора никогда не видит этот пакет udp. Я хотел бы пересылать все многоадресные пакеты, полученные виртуальной машиной, подключенной к пограничному маршрутизатору, с интерфейса eth0 на интерфейс tun0, тем самым позволяя моему пограничному маршрутизатору видеть пакет и внедрять его в свою сеть.
Как я могу это сделать в Ubuntu? Я как бы застрял, пытался добавить маршруты, но не работает.
Приложение: Мой ifconfig виртуальной машины с маршрутизатором:
eth0 Link encap:Ethernet HWaddr 00:50:56:24:dd:45
inet addr:192.168.59.131 Bcast:192.168.59.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fe24:dd45/64 Scope:Link
inet6 addr: bbbb::2/64 Scope:Global
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:40205 errors:0 dropped:0 overruns:0 frame:0
TX packets:25436 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25834566 (25.8 MB) TX bytes:4091267 (4.0 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:734 errors:0 dropped:0 overruns:0 frame:0
TX packets:734 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:51481 (51.4 KB) TX bytes:51481 (51.4 KB)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.1.1 P-t-P:127.0.1.1 Mask:255.255.255.255
inet6 addr: fe80::1/64 Scope:Link
inet6 addr: aaaa::1/64 Scope:Global
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:7 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:586 (586.0 B) TX bytes:1046 (1.0 KB)
это для IPv6! Я пробовал что-то вроде этого:
sudo ip -6 route add ff1e::/64 via fe80::1 dev tun0
не работает.
Редактировать:
Я попробовал следующее предложение. Моя маршрутизация теперь выглядит так:
sudo ip -6 route
aaaa::/64 dev tun0 proto kernel metric 256
aa00::/8 via bbbb::2 dev eth0 metric 1024
bbbb::/64 dev eth0 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
fe80::/64 dev tun0 proto kernel metric 256
ff1e::/64 via fe80::1 dev eth0 metric 1024
Обратите внимание, что второй маршрут - это тот, который используется моими виртуальными машинами (с адресами bbbb :: 3, bbbb :: 4, ...) для связи с моими узлами в сети (которые имеют адреса типа aaaa :: 11: 22ff: fe33: 4402), и это работает. Узлы подключены к ВМ bbbb :: 2.
Однако, когда виртуальная машина публикует, скажем, ff1e: 101: a :: 4, мой интерфейс eth0 на bbbb :: 2 обнаруживает это, но все равно не пересылает его на tun0. Tun0 имеет глобальный адрес aaaa :: 1/64, но команда «sudo ip -6 route add ff1e :: / 64 via aaaa :: 1 dev eth0» дает «RTNETLINK ответы: нет маршрута к хосту». Попытка добавить полный адрес многоадресной рассылки IPv6 (например, «sudo ip -6 route add ff1e: 101: a :: 4/128 via fe80 :: 1 dev eth0») также не дает результатов, но добавляет маршрут.
Редактировать редактировать: добавление таблиц после второго предложения:
looci@looci:~$ sudo ip -6 route add ff1e::/64 dev tun0 table local
looci@looci:~$ ip -6 route
aaaa::/64 dev tun0 proto kernel metric 256
aa00::/8 via bbbb::2 dev eth0 metric 1024
bbbb::/64 dev eth0 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
fe80::/64 dev tun0 proto kernel metric 256
ff1e::/64 via fe80::1 dev eth0 metric 1024
ff1e:101:a::4 via fe80::1 dev eth0 metric 1024
looci@looci:~$ ip -6 route show table local
local ::1 via :: dev lo proto none metric 0
local aaaa:: via :: dev lo proto none metric 0
local aaaa::1 via :: dev lo proto none metric 0
local bbbb:: via :: dev lo proto none metric 0
local bbbb::2 via :: dev lo proto none metric 0
local fe80:: via :: dev lo proto none metric 0
local fe80:: via :: dev lo proto none metric 0
local fe80::1 via :: dev lo proto none metric 0
local fe80::250:56ff:fe24:dd45 via :: dev lo proto none metric 0
ff1e::/64 dev tun0 metric 1024
ff00::/8 dev eth0 metric 256
ff00::/8 dev tun0 metric 256
looci@looci:~$ ip -6 route show table main
aaaa::/64 dev tun0 proto kernel metric 256
aa00::/8 via bbbb::2 dev eth0 metric 1024
bbbb::/64 dev eth0 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
fe80::/64 dev tun0 proto kernel metric 256
ff1e::/64 via fe80::1 dev eth0 metric 1024
ff1e:101:a::4 via fe80::1 dev eth0 metric 1024