Скажите, что я хочу перенаправить 2a00:1450:400c:c01:: 71 на Порте 443 к localhost Порту 12345.
Как сделать это с Iptables?
Okey, это - Weechat который, выполняя реле SSL на порте> =1000. Это может установить связи с IPv4 и IPv6 на этом порте. Таким образом, я хочу связать определенный IPv6:Port [2a00:1450:400c:c01:: 71]:443 к IPv6 localhost Порт [:: 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