Простое Пробивание Дыр В Udp На Примере Ipip-Туннеля

Добрый день! В этой статье я хочу рассказать вам, как я реализовал( Другой ) скрипт Bash для соединения двух компьютеров за NAT с использованием технологии перфорации UDP на примере ОС Ubuntu/Debian. Установление соединения состоит из нескольких этапов:

  1. Запуск узла и ожидание готовности удаленного узла;
  2. Определение внешнего IP-адреса и UDP-порта;
  3. Передача внешнего IP-адреса и UDP-порта на удаленный хост;
  4. Получение внешнего IP-адреса и UDP-порта с удаленного хоста;
  5. Организация IPIP-туннеля;
  6. Мониторинг соединения;
  7. Если соединение потеряно, удалите IPIP-туннель.

Я долго думал и думаю, что можно использовать для обмена данными между узлами, самое простое и быстрое для меня на данный момент — это работа через Яндекс.

диск.

  • Во-первых, он прост в использовании – нужно 3 действия: создать, прочитать, удалить.

    С завитком это: Создавать:

      
      
      
      
      
      
      
      
      
      
      
      
      
      
       

    curl -s -X MKCOL --user "$usename:$password" https://webdav.yandex.ru/$folder

    Читать:

    curl -s --user "$usename:$password" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/$folder

    Удалить:

    curl -s -X DELETE --user "$usename:$password" https://webdav.yandex.ru/$folder

  • Во-вторых, простота установки:

    apt install curl

Чтобы определить внешний IP-адрес и порт UDP, используйте команду stun-client:

stun stun.sipnet.ru -v -p $1 2>&1 | grep "MappedAddress"

Установка командой:

apt install stun-client

Для организации туннеля используются стандартные средства ОС из пакета iproute2. Существует много туннелей который можно поднять стандартными средствами (L2TPv3, GRE и т.п.

), но я выбрал IPIP, поскольку он создает минимальную дополнительную нагрузку на систему.

Попробовал L2TPv3 через UDP и разочаровался, скорость упала раз в 10, но это могут быть различные ограничения связанные с провайдерами или еще что-то.

Поскольку туннель IPIP работает на уровне IP, туннель FOU используется для работы на уровне порта UDP. Для организации IPIP-туннеля необходимо: — загружаем модуль FOU:

modprobe fou

— прослушиваем локальный порт:

ip fou add port $localport ipproto 4

— создать туннель:

ip link add name fou$name type ipip remote $remoteip local $localip encap fou encap-sport $localport encap-dport $remoteport

— поднимаем интерфейс туннеля:

ip link set up dev fou$name

— назначить внутренние локальные и внутренние удаленные IP-адреса туннеля:

ip addr add $intIP peer $peerip dev fou$name

Удалить туннель:

ip link del dev fou$name



ip fou del port $localport

Состояние туннеля контролируется путем периодической проверки связи внутреннего IP-адреса туннеля удаленного узла с помощью команды:

ping -c 1 $peerip -s 0

Периодический пинг нужен в первую очередь для поддержания канала, иначе при простое туннеля таблицы NAT на роутерах могут очиститься и тогда соединение будет разорвано.

Если пинг пропадает, то IPIP-туннель удаляется и ждет готовности от удаленного хоста.

Сам скрипт:

#!/bin/bash username="[email protected]" password="password" folder="vpnid" intip="10.0.0.1" localport=`shuf -i 10000-65000 -n 1` cid=`shuf -i 10000-99999 -n 1` tid=`shuf -i 10-99 -n 1` function yaread { curl -s --user "$1:$2" -X PROPFIND -H "Depth: 1" https://webdav.yandex.ru/$3 | sed 's/></>\n</g' | grep "displayname" | sed 's/<d:displayname>//g' | sed 's/<\/d:displayname>//g' | grep -v $3 | grep -v $4 | sort -r } function yacreate { curl -s -X MKCOL --user "$1:$2" https://webdav.yandex.ru/$3 } function yadelete { curl -s -X DELETE --user "$1:$2" https://webdav.yandex.ru/$3 } function myipport { stun stun.sipnet.ru -v -p $1 2>&1 | grep "MappedAddress" | sort | uniq | awk '{print $3}' | head -n1 } function tunnel-up {

Теги: #информационная безопасность #Сетевые технологии #Разработки для Интернета вещей #ipsec #ipip #udp дырокол

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.