LINUX.ORG.RU

как работает masquerade для icmp


0

2

Я как то не совсем понимаю как работает masquerade.

Для TCP/UDP вроде как понятно - роутер принимает пакет от компьютера из локалки, отправляет его от своего имени серверу. При этом запоминает, с какого порта он его отправил. И когда на этот порт приходит ответ, роутер знает, куда отправлять ответ.

Но, насколько я знаю, в icmp нет портов. Но это не мешает работа пинга. Более того, мне приходит ответный пакет даже если он отправлен не тем, кому я послал пакет, как например, в случае traceroute.

Как оно сделано?

★★★★★

Да так же и сделано. Если ты один на всю деревню пингаешь-трасероутишь, то для маскарадера-роутера-ядра нет проблем определить, кому ответ отправлять. И в icmp таки есть кое-какие признаки, позволяющие идентифицировать, тип сообщения, номер сообщения, если это пинг.

Если ты попробуешь с пяти консолей одновременно запустить пинги, то увидишь, что ответы беспорядочно приходят.

anto215 ★★ ()

почитай соответствующее место в исходниках ядра - узнаешь

Harald ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.