Прозрачный прокси для трафика IPv6 под Linux

При обслуживании сетей часто целесообразно использовать прозрачный прокси. Под прозрачным прокси я подразумеваю прокси, который «перехватывает» исходящие соединения и запускает их через локальную службу. В частности, я запускаю брандмауэр Linux со squid, настроенным так, чтобы все соединения tcp/ip, направляемые на порт 80, проксировались squid.

Это достигается с помощью таблицы iptables 'nat' с использованием IPv4.

Но в iptables для IPv6 нет таблицы 'nat', поэтому я не могу использовать ту же реализацию. Какую технику я могу использовать для прозрачного прокси-трафика для соединений IPv6?


person Jerub    schedule 09.03.2009    source источник


Ответы (6)


Жизнеспособным способом сделать это является правило TPROXY в iptables, документация доступна здесь:

Это должно поддерживаться Squid (>= версии 3.2). Использование --enable-linux-netfilter и правила iptables -t mangle -j TPROXY.

person Jerub    schedule 09.09.2010

В iptables есть цель QUEUE, которую вы можете использовать для доставки пакетов в пользовательское пространство. Я не уверен, но, возможно, там можно было бы что-то реализовать.

Кроме того, вы можете попытаться добавить что-нибудь в ядро ​​для перенаправления.

person Zoredache    schedule 09.03.2009

Вы не можете. Цитата из squid-cache.org:

NAT просто не существует в IPv6. По дизайну.

Учитывая, что прозрачность / перехват на самом деле является функцией, полученной путем тайного скручивания маршрутов NAT наизнанку и обратно. Вполне логично, что протокол без NAT не может так обеспечить прозрачность и перехват.

person innaM    schedule 25.03.2009

Вот реализация:

http://www.suse.de/~krahmer/ip6nat/

person dwcarder    schedule 24.06.2009

Еще один уродливый хак:

  • ПОМЕТИТЬ весь трафик с помощью iptables (кажется, есть цель CONNMARK для IPv6)
  • направить весь отмеченный трафик на настраиваемое устройство
  • выполнить NAT в пользовательском пространстве в демоне, прослушивающем устройство tun
  • ...
person darkk    schedule 10.03.2009
comment
Это на самом деле возможно? Есть идеи, с чего начать реализацию tun с поддержкой ipv6? - person Jerub; 11.03.2009
comment
ИМХО, это ДОЛЖНО быть возможно. Драйвер Linux tun/tap, кажется, поддерживает IPv6. Попробуйте драйвер tap (виртуальный ethernet) вместо tun, если я ошибаюсь и IPv6 не поддерживается. Я не знаю, что можно сделать с iptables QUEUE, но решение на основе tun должно работать, хотя, возможно, оно не подходит для highload. - person darkk; 16.03.2009

Напишите собственную реализацию NAT в стеке IPv6.

person Kazimieras Aliulis    schedule 25.03.2009