Я хочу создать 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 совершенно не связано с вашими действиями; вероятно, это было раньше. Кроме того, он предлагает использовать другое имя для устройства, которое вы пытаетесь создать, чтобы избежать путаницы с отчетами о состоянии.