Image

База знаний → Переадресация портов с IPv4 на IPv6 в Linux Debian 12

[Виртуальные сервера]
Дата публикации: 06.06.2025

При необходимости настроить переадресацию с одного порта 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

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





Нет комментариев