Команда ip tunnel в Linux позволяет просматривать и выполнять операции с туннелями, соединяющими сервер с другим хостом по внешней сети.
ip tunnel в Linux и используемые ключи
Как и большинство операций с сетью в современных дистрибутивах работа с туннелями идёт с помощью утилиты ip. С одним ключом tunnel или с сочетанием tunnel list утилита вывдете список туннелей созданных на сервере.
ip tunnel list
Пример на скриншоте:
Здесь видно, что существует туннельный интерфейс gre0. Его наличие говорит о том, что настроен туннель с использованием протокола GRE.
Если туннелей нет — вывод будет пуст.
В случае с ip-ip туннелем интерфейс в большинстве случаев будет называться tun с каким-то индексом.
Настройка туннелей ip-ip и GRE приблизительно одинакова.
Алгоритм и примеры можно найти в материалах по ссылкам:
В примерах показано как использовать ip tunnel в Linux системах. С помощью команды добавляются туннели. Таким же образом их можно удалять и менять параметры.
Выполнив в консоли ip tunnel help можно увидеть справку
ip tunnel help
Дополнительные настройки для Linux туннелей
На обоих серверах требуются правила сетевого фильтра iptables, разрешающие трафик с меткой определенного протокола — например, GRE
iptables -t nat 123.123.123.123 -A INPUT -p gre -j ACCEPT
Или такое же правило, но с дополнительным ограничением по IP адресу
iptables -t nat 123.123.123.123 -A INPUT -p gre -s 123.123.124.124 -j ACCEPT
Для отладки туннелей в Linux и поиска проблем можно использовать утилиту tcpdump
Данные можно выводить в консоль указывая при фильтрации туннельный интерфейс
tcpdump -n -i tun0 proto 47
Номер любого протокола можно найти на сайте iana.org, для gre используется 47
Также можно записывать вывод в файл. Такой способ подходит когда трафика много. Он позволяет просматривать сетевой дамп с помощью пакета Wireshark. Он, в отличие от tcpdump, имеет удобный интерфейс и позволяет наглядно видеть где и какие пакеты теряются.
Wireshark также часто используется при поиске причин неполадок в работе ip телефонии.