Conntrack получает неправильные правила пересылки для исходящего протокола 41

948
interfect

Я пытаюсь переслать протокол 41 (ipv6-in-ipv4) для туннеля HE через WRT54G под управлением Tomato 1.28. Tomato 1.28 использует ядро ​​2.4, которое абсолютно ничего не знает о протоколе 41, за исключением того, что он называется «ipv6». Наличие ядра 2.4 также означает, что conntrack нельзя просто отключить: нет «сырых» правил iptables.

Я могу настроить правила так, чтобы входящие пакеты DNAT-ed на правильный внутренний хост. Если удаленный хост сначала отправляет что-то через туннель, все работает нормально. Пакеты могут проходить через туннель в обоих направлениях с надлежащим NAT, и я получаю такую /proc/net/ip_conntrackзапись:

unknown 41 599 src=72.52.104.74 dst=67.180.229.14 src=10.1.0.3 dst=72.52.104.74 use=1 mark=0

Запись гласит, что он предназначен для неизвестного протокола 41, имеет время ожидания более 599 секунд, если трафик больше не принимается, и имеет одну пару адресов отправителя и получателя на стороне инициатора (которая является стороной WAN) и другую на принимающей стороне (это сторона локальной сети).

Но если моя система сначала пытается отправить пакет через туннель, адрес источника не преобразуется в адрес маршрутизатора, как это должно быть, и я получаю запись conntrack, например:

unknown 41 589 src=10.1.0.3 dst=72.52.104.74 [UNREPLIED] src=72.52.104.74 dst=10.1.0.3 use=1 mark=0

Пока моя машина пытается использовать туннель, она поддерживает эту фиктивную запись conntrack, и я могу видеть, как пакеты, покидающие мой маршрутизатор, подключаются к кабельному модему с внутренним адресом источника, который по-прежнему подключен, в результате чего они отбрасываются и никогда не попадают куда они идут.

Чтобы запустить мой туннель, я должен отключить туннельный интерфейс на своем конце, использовать инструмент ping HE, чтобы заставить трафик IPv6 проходить по каналу, и, пока 10-минутный тайм-аут все еще активен на правильном зафиксируйте вход, снова поднимите мой конец туннеля, а затем убедитесь, что он не будет простаивать в течение 10 минут подряд. Я могу это сделать, но это довольно глупо.

Прямо сейчас у меня настроены правила пересылки:

# Send incoming ipv6-in-ipv4 packets to the correct host iptables -t nat -A PREROUTING -p 41 -s 72.52.104.74 -j DNAT --to 10.1.0.3  # Allow those packets through the firewall iptables -I FORWARD -p 41 -d 10.1.0.3 -j ACCEPT  # Things I have added to try and solve my problem, which didn't work:  # Remove the default masquerade-everything rule iptables -t nat -D POSTROUTING 10 # Masquerade only protocols other than 41. Conntrack still gets its bogus entries,  # and if I get the correct entry in it still works. iptables -t nat -A POSTROUTING -p ! 41 -j MASQUERADE 

Я также однажды попытался настроить правило SNAT следующим образом:

iptables -t nat -I POSTROUTING -p 41 -s 10.1.0.3 -j SNAT --to 67.180.229.14

Но, насколько я мог судить, это тоже не помогло.

Итак, мой вопрос:

1) Кто-нибудь когда-нибудь получал протокол 41 для успешной пересылки через WRT54G с запущенным Tomato? Если да, какие специальные правила брандмауэра вы использовали?

2) Почему маршрутизатор считает, что он не должен выполнять преобразование адреса источника в исходящем протоколе 41?

1
У почтенного WRT54G еще может быть полезный срок службы, в зависимости от конкретной аппаратной версии, но я бы отказался от Tomato. У всех есть. Michael Hampton 10 лет назад 0
Можете ли вы порекомендовать прошивку с лучшей поддержкой IPv6? Или даже родная поддержка туннеля? Я мог бы запустить на этом OpenWRT, но он недостаточно мощный для запуска веб-интерфейса OpenWRT, поэтому я бы все делал вручную. interfect 10 лет назад 0
Я запускаю OpenWRT Barrier Breaker на всем, что у меня есть дома, которое в настоящее время является пятью маршрутизаторами разных моделей и возрастов, и довольно долго работает в ночных клубах. Я бы не считал отсутствие веб-интерфейса существенным недостатком, по крайней мере, после того, как вы привыкнете к файлам конфигурации OpenWRT. Michael Hampton 10 лет назад 0

1 ответ на вопрос

0
Pat

Как насчет

iptables -t nat -A PREROUTING -p 41 -s 72.52.104.74 -j DNAT --to 10.1.0.3 iptables -t nat -A POSTROUTING -j MASQUERADE 

Похожие вопросы