При необходимости настроить переадресацию с одного порта IPv4 на другой порт IPv6 мы будем использовать socat
.
Предполагается, что IPv6 у Вас уже настроен и работает. Проверить можно командами
ping6 <domain>
в Linux илиping -6 <domain>
в Windows.
Редко встречается случай, когда Ping работает, но фактически трафик не ходит, можно дополнительно проверить подключением через команду
curl --ipv6 -k -I https://ipv6.google.com
как для Linux, так и для Windows (если в cmd ее нет, откройте PowerShell).
Предположим, что у нас есть задача перенаправить порт 443 с IPv4 на порт 4445 на IPv6.
1. Установка socat
apt install socat
2. Переадресация
socat TCP6-LISTEN:4445,fork,reuseaddr TCP4:127.0.0.1:443
Убедитесь, что 443 порт доступен с IP локально, или поменяйте на внешний.
telnet 127.0.0.1 443
2.1 Проверка
telnet <ipv6> 4445
3. Создание службы
Теперь создадим файл службы, чтобы при перезагрузке все возобновлялось без необходимости запускать вручную. Также учтем момент, что сервис nginx
должен быть запущен раньше, чем наша команда.
nano /etc/systemd/system/socat-portforward.service
[Unit]
Description=Socat IPv6 to IPv4 Port Forwarding
After=network.target
After=nginx.service
Requires=nginx.service
[Service]
ExecStart=/usr/bin/socat TCP6-LISTEN:4445,fork,reuseaddr TCP4:127.0.0.1:443
Restart=always
RestartSec=3
User=root
Group=root
KillMode=process
[Install]
WantedBy=multi-user.target
3.1 Завершение работы нашего сервиса
Нажмите Ctrl + C
или, если запустили через &
:
killall socat
3.2 Запуск как сервис
systemctl daemon-reload
systemctl enable --now socat-portforward
systemctl status socat-portforward
3.3 Последовательность запуска
Мы добавили строки в раздел [Unit]
, чтобы соблюдать последовательность запуска:
After=nginx.service
Requires=nginx.service
Готово, данную команду можно использовать для настройки переадресации портов в различных конфигурациях.