How to Wiki Database (change log)
http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
5.6 KiB
83 lines
5.6 KiB
====== Проброс соединений 6-4 (4-6) с помощью socat ====== |
|
|
|
**Socat** - это утилита на основе командной строки, которая устанавливает два двунаправленных потока байтов и передает данные между ними. Поскольку потоки могут быть сконструированы из большого набора различных типов приемников данных и источников, а также поскольку к потокам может быть применено множество вариантов адресации, socat можно использовать для самых разных целей. |
|
|
|
Ниже будет пара примеров использования утилиты socat для проброса соединений с IPv4 на IPv6 и обратно. |
|
|
|
Это может понадобиться, например, если у вас есть очень старое устройство, которое не поддерживает протокол IPv6, но вы хотите вывести его в [[yggdrasil:yggdrasil|Yggdrasil]]. |
|
|
|
===== Установка ===== |
|
|
|
Установить утилиту в дистрибутиве на базе [[wpru>Debian|Debian]] можно так: |
|
|
|
<code>sudo apt install socat</code> |
|
|
|
Для Windows socat можно скачать, например, отсюда: https://sourceforge.net/projects/unix-utils/files/socat/1.7.3.2/ |
|
|
|
===== 4-6 ===== |
|
|
|
<code>socat TCP4-Listen:4321,fork TCP6:[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]:80</code> |
|
|
|
Допустим, мы выполнили эту команду на устройстве, подключенном к Yggdrasil и имеющим локальный IPv4-адрес: 192.168.1.3 |
|
|
|
На устройстве, которое не подключено к Yggdrasil, но так же подключено к локальной сети IPv4, запускаем браузер, вбиваем в адресную строку: ''%%http://192.168.1.3:4321%%'' и что же видим? |
|
|
|
А увидим мы стартовую страницу этого ресурса. |
|
|
|
Браузер устанавливает TCP-соединение c 192.168.1.3:4321, на этом адресе и порте слушает socat, который "перебрасывает" соединение на [222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]:80. |
|
|
|
Ключ //**fork**// означает, что после установки соединения оно переносится в дочерний процесс, а родительский процесс (socat) после этого будет готов принимать новые соединения. |
|
|
|
Как видите, всё довольно просто :) |
|
|
|
=====6-4===== |
|
|
|
<code>socat TCP6-Listen:4321,fork TCP4:192.168.1.10:5000</code> |
|
|
|
Выполняем эту команду на устройстве, подключенном к Yggdrasil. |
|
|
|
На другом устройстве (так же подключенном к Yggdrasil) открываем браузер, вбиваем в адресной строке ''%%http://[203:52a2:a8fa:3f22:71cd:8310:6f4:f771]:4321%%'' (Yggdrasil-адрес первого устройства) и попадаем в Web-интерфейс устройства с адресом ЛВС 192.168.1.10 [как бы, не подключенного к Yggdrasil] (естественно, адреса и порты должны быть правильные, рабочие (на устройствах должны быть запущены соответствующие сервисы)). |
|
|
|
=====6-4 & 4-6===== |
|
|
|
Ну, и напоследок строка для запуска экземпляров socat для проброса соединений с 4 на 6 и с 6 на 4 одновременно. |
|
Команды выполняем на устройстве, подключенном к Yggdrasil, имеющим адреса: 192.168.1.3 и 203:52a2:a8fa:3f22:71cd:8310:6f4:f771. |
|
|
|
<code>socat TCP4-LISTEN:4322,fork TCP6:[202:421a:2eb5:40a4:fa32:f4a4:9b42:d4e4]:3202|socat TCP6-Listen:4321,fork TCP4:192.168.1.10:16881</code> |
|
|
|
Для проверки того, что у нас получилось выполним: |
|
<code>sudo netstat -natup |grep socat</code> |
|
|
|
<code>tcp 0 0 0.0.0.0:4322 0.0.0.0:* LISTEN 8428/socat |
|
tcp6 0 0 :::4321 :::* LISTEN 8429/socat</code> |
|
|
|
Слушаем IPv4 на 4322 и IPv6 на 4321. |
|
|
|
4322 перенаправляем на [202:421a:2eb5:40a4:fa32:f4a4:9b42:d4e4]:3202; 4321 перенаправляем в обратную сторону - на 192.168.1.10:16881. |
|
|
|
===== Автозапуск socat ===== |
|
|
|
Запускать socat можно из системного планировщика. |
|
|
|
В Linux с [[wpru>Systemd|systemd]] надежнее будет создать простенький юнит, например, такой: |
|
|
|
<code>[Unit] |
|
Description=socat-forwarding |
|
Documentation=http://www.dest-unreach.org/socat/doc/socat.html |
|
After=network-online.target |
|
|
|
[Service] |
|
Type=simple |
|
ExecStart=/usr/bin/socat TCP4-LISTEN:4322,fork TCP6:[202:421a:2eb5:40a4:fa32:f4a4:9b42:d4e4]:3202|/usr/bin/socat TCP6-Listen:4321,fork TCP4:192.168.1.10:16881 2>&1 |
|
Restart=always |
|
RestartSec=1 |
|
TimeoutStopSec=0 |
|
|
|
[Install] |
|
WantedBy=multi-user.target</code> |
|
|
|
Юнит можно поместить в ''%%/lib/systemd/system/%%''. |
|
|
|
====== Ссылки ====== |
|
|
|
Страница socat в Интернет (EN): http://www.dest-unreach.org/socat/ |