Назад | Перейти на главную страницу

iptables для перенаправления порта адреса ipv6 на порт localhost

Скажем, я хочу перенаправить 2a00: 1450: 400c: c01 :: 71 на порт 443 на порт localhost 12345.

Как это сделать с Iptables?

Обновить

Хорошо, это Weechat, который запускает SSL-реле на порте> = 1000. Он может устанавливать соединения с IPv4 и IPv6 через этот порт. Итак, я хочу привязать определенный IPv6: Port [2a00: 1450: 400c: c01 :: 71]: 443 к порту localhost IPv6 [:: 1]: 12345

У вас могут возникнуть проблемы, потому что с IPv6 вы не должны использовать NAT, но, начиная с ядра Linux 3.8, вы можете:

ip6tables -t nat -A PREROUTING -p tcp -m tcp \
          -d 2a00:1450:400c:c01::71 --dport 443 -j REDIRECT --to-ports 12345

Этот ответ применим к исходной версии вопроса до ее редактирования. Для обновленного вопроса применим ответ @SanderSteffann.

Вы не можете сделать это с iptables, так как iptables обрабатывает только IPv4, а не IPv6. Вы не можете сделать это с ip6tables либо, потому что ip6tables обрабатывает только IPv6, а не IPv4.

Существуют конвертеры протоколов, которые могут конвертировать между IPv4 и IPv6. Но они могут накладывать ограничения на то, какие IP-адреса они могут преобразовывать, потому что IPv4 и IPv6 не имеют одинакового количества IP-адресов.

Комбинирование транслятора протокола для изменения IP-адреса с помощью iptables изменить номер порта возможно. Но я бы не советовал использовать такую ​​комбинацию, в частности, не зная подробностей о ваших конкретных потребностях.

В любом случае у сервера не будет немедленного доступа к информации об IPv6-адресе клиента, потому что нет возможности встроить весь IPv6-адрес в клиентский IPv4-адрес, видимый серверу.

Основываясь на ограниченном объеме предоставленной информации, я бы дал тот же совет, что и @MichaelHampton, просто запустите службу на правильном порту в первую очередь. Если это не вариант, задайте вопрос получше. Объясните, какую службу вы пытались запустить, как вы пытались заставить ее прослушивать правильный порт и как это не удалось.

это сработало для меня, похоже на @Sander Steffann, но без жесткого IP-адреса, просто интерфейс

ip6tables -t nat -I PREROUTING -i eth0 -p tcp -m tcp --dport 22 -j REDIRECT --to-ports 2222