Назад | Перейти на главную страницу

Проблемы создания туннеля foo-over-udp в Linux

Я хочу создать fou(foo-over-udp) туннель на linux 4.4.10 с использованием iproute2 4.5.0, и при попытке создать туннель я получаю следующую ошибку:

sudo ip link add dev tun0 type ipip remote 172.19.0.9 local 172.19.0.8 encap fou encap-sport auto encap-dport 4444
RTNETLINK answers: Invalid argument

Хотя это обычно указывает на то, что я предоставил неправильные аргументы, устройство по-прежнему создается со странным именем и не настраивается:

10: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT
group default qlen 1
     link/ipip 0.0.0.0 brd 0.0.0.0

Стоит также отметить, что загружены модули ядра fou и ipip:

fou                     9093  0
ip6_udp_tunnel          1967  1 fou
udp_tunnel              2547  1 fou
ipip                    5260  0
ip_tunnel              13315  1 ipip
tunnel4                 2389  1 ipip

Я не пробовал использовать другую версию ядра, но попробовал использовать последнюю версию iproute2. Я также должен упомянуть, что я пробовал эту настройку в пространстве имен linux network, но у меня такая же проблема, если я делаю это за пределами пространства имен. Что может быть причиной этой проблемы, и есть ли другая альтернатива для настройки туннеля fou? По моим наблюдениям, iproute2 проблематичен.

Мне удалось настроить туннель FOU между двумя виртуальными машинами в одной локальной сети с неизмененным Ubuntu 16.04.01. Они начали со следующей сетевой конфигурации:

jeff@jeff-VirtualBox-ubuntu-16:~$ ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

   valid_lft forever preferred_lft forever

inet6 ::1/128 scope host 

   valid_lft forever preferred_lft forever

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:97:1d:bb brd ff:ff:ff:ff:ff:ff

inet 192.168.1.137/24 brd 192.168.1.255 scope global dynamic enp0s3

   valid_lft 86358sec preferred_lft 86358sec

inet6 fe80::3675:b335:4de3:9d6c/64 scope link 

   valid_lft forever preferred_lft forever

jeff@jeff-VirtualBox-ubuntu-16:~$ 

jeff@jeff-VirtualBox-ubuntu-16-2:~$ ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

   valid_lft forever preferred_lft forever

inet6 ::1/128 scope host 

   valid_lft forever preferred_lft forever

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
 state UP group default qlen 1000
link/ether 08:00:27:40:13:85 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.135/24 brd 192.168.1.255 scope global dynamic enp0s3

   valid_lft 86352sec preferred_lft 86352sec

inet6 fe80::7086:fe13:ab8:b44f/64 scope link 

   valid_lft forever preferred_lft forever

Затем я выполнил следующее, чтобы настроить обе виртуальные машины в 10-сети с использованием туннеля FOU:

root@jeff-VirtualBox-ubuntu-16:~# modprobe fou

root@jeff-VirtualBox-ubuntu-16:~# ip fou add port 55137 ipproto 4

root@jeff-VirtualBox-ubuntu-16:~# ip link add name fou0 type ipip remote 192.168.1.135 local 192.168.1.137 encap fou encap-sport 55137 encap-dport 55135 dev enp0s3

root@jeff-VirtualBox-ubuntu-16:~# ip link set up dev tunl0

root@jeff-VirtualBox-ubuntu-16:~# ip link set up dev fou0

root@jeff-VirtualBox-ubuntu-16:~# ip addr add 10.0.0.137/24 dev fou0

root@jeff-VirtualBox-ubuntu-16:~#


root@jeff-VirtualBox-ubuntu-16-2:~# modprobe fou

root@jeff-VirtualBox-ubuntu-16-2:~# ip fou add port 55135 ipproto 4

root@jeff-VirtualBox-ubuntu-16-2:~# ip link add name fou0 type ipip remote 192.168.1.137 local 192.168.1.135 encap fou encap-sport 55135 encap-dport 55137 dev enp0s3

root@jeff-VirtualBox-ubuntu-16-2:~# ip link set up dev tunl0

root@jeff-VirtualBox-ubuntu-16-2:~# ip link set up dev fou0

root@jeff-VirtualBox-ubuntu-16-2:~# ip addr add 10.0.0.135/24 dev fou0

root@jeff-VirtualBox-ubuntu-16-2:~#

У меня все сработало. Ваш пробег может отличаться. 8 ^)

Убедитесь, что у вас включен CONFIG_NET_FOU_IP_TUNNELS, и перестройте ядро, если нет, с этой конфигурацией.

У меня работает следующая команда. ip ссылка добавить имя fou-ipip type ipip remote 192.168.1.2 local 192.168.1.1 encap fou encap-sport auto encap-dport 6635

По моему опыту, команда имеет такой формат, который не соответствует вашему:

ip ссылка добавить имя {имя} тип ipip ...

В общем, ничего не создается «со странным именем», то есть создается с именем, которое представляет собой последовательность символов (в данном случае «tunl0»), которая не появляется во входных данных программного обеспечения. Так что весьма вероятно, что устройство tunl0 совершенно не связано с вашими действиями; вероятно, это было раньше. Кроме того, он предлагает использовать другое имя для устройства, которое вы пытаетесь создать, чтобы избежать путаницы с отчетами о состоянии.