Скажем, я хочу перенаправить 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