
icmptunnel
icmptunnel — это инструмент для туннелирования IP-трафика внутри ICMP-пакетов эхо-запроса и эхо-ответа (ping). Он предназначен для обхода межсетевых экранов полускрытым способом, например, при перемещении внутри сети, где ping разрешён. Он также может быть полезен для выхода из корпоративной сети в Интернет, хотя довольно часто ICMP-эхо-трафик фильтруется на периметре сети.
Хотя существует несколько существующих инструментов, реализующих эту технику, icmptunnel предоставляет более надёжный протокол и механизм для туннелирования через межсетевые экраны с отслеживанием состояния (stateful firewalls) и NAT.
Инструмент использует обычный Makefile для компиляции и установки.
Используйте make для компиляции icmptunnel.
Сначала отключите ICMP-эхо-ответы и на клиенте, и на сервере. Это предотвращает самостоятельный ответ ядра на ping-пакеты.
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
На стороне сервера запустите icmptunnel в режиме сервера и назначьте IP-адрес новому туннельному интерфейсу.
# ./icmptunnel –s
opened tunnel device: tun0
(ctrl-z)
# bg
# /sbin/ifconfig tun0 10.0.0.1 netmask 255.255.255.0
На стороне клиента укажите icmptunnel на сервер и назначьте IP-адрес.
# ./icmptunnel <server>
opened tunnel device: tun0
connection established.
(ctrl-z)
# bg
# /sbin/ifconfig tun0 10.0.0.2 netmask 255.255.255.0
На этом этапе у вас должен работать туннель «точка-точка» через ICMP-пакеты. Сторона сервера — 10.0.0.1, сторона клиента — 10.0.0.2. На клиенте попробуйте подключиться к серверу по SSH:
# ssh [email protected]
Password:
Чтобы использовать удалённый сервер в качестве зашифрованного SOCKS-прокси:
# ssh -D 8080 -N [email protected]
Password:
Теперь укажите вашему веб-браузеру на локальный SOCKS-сервер.
Список параметров см. в ./icmptunnel -h.
Пожалуйста, сообщайте обо всех ошибках на странице проекта на Github: