Необработанный пакет ICMP для себя - PullRequest
0 голосов
/ 21 февраля 2011

В системе linux я построил свой собственный протокол туннелирования, где я ретранслирую пакеты по нестандартизированной, но проверенной среде. То, что я делаю, это перехватывает пакеты, используя iptables и NFQUEUE, ретранслирует их через мою среду, а на другом конце я повторно внедряю их, используя необработанные сокеты. Пакет, поступающий в туннель, точно такой же, как и выходящий, проверенный. Проблема в том, что это не работает для Ping ICMP (Echo Request), если назначение ping совпадает с конечной точкой туннеля. Если пункт назначения не совпадает с конечной точкой туннеля, пакет ping перенаправляется и поступает, как и положено, к получателю, и ответ ping возвращается отправителю. Кто-нибудь знает, что происходит? Разве нельзя отправить сырой icmp себе? Если нет, у кого-нибудь есть идея, что мне делать вместо этого?

Что у меня есть:

R1 ---- T1 ----- T2 ------ R2

R1 пинг R2.

R1, R2, маршрутизатор 1 и маршрутизатор 2 T1, T2, Туннельные Точки 1 и 2. (R1 и T1 расположены на одном маршрутизаторе, а R2 и T2 на одном маршрутизаторе). Эта настройка не работает.

Это работает:

R1 ---- T1 ----- T2 ------ R2 ----- R3

R1, пинг R3, это работает.

Есть идеи?

/ Andy

1 Ответ

1 голос
/ 21 февраля 2011

Я не знаю, возможно ли это, но предпочтительным способом перехвата и повторного ввода пакетов является использование интерфейса tun / tap (также см. Каталог документации / ядра). Я полагаю, что ICMP будет работать, если вы переключитесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...