Я думал, что пакет данных из другой подсети всегда отклоняется. Но когда у меня есть два хоста (h1 и h2) в двух разных подсетях (s1 и s2) и один маршрутизатор (r) с активированным ip_forward и доступом к обеим подсетям, я могу пинговать h1 из h2. Я понимаю, как пакет направляется на h1, но не понимаю, почему h1 принимает пакет из другой подсети. Если маскарад закончится, мне все ясно. Но без маскировки не могу этого понять.
Означает ли это, что в протоколе TCP / IP пакет из другой подсети всегда принимается, если он достигает хоста? Таким образом, проблема без маршрутизатора заключается только в том, что отправляющий узел не отправляет пакет с адресатом в другой подсети?
Да, вы в значительной степени правы - если хост получает IP-пакет и имеет действительный путь маршрутизации к источнику, он просто отвечает. Очевидно, между ними может быть брандмауэр, который может блокировать трафик.
За исключением более сложных тем, таких как протоколы динамической маршрутизации, дело довольно простое. Если нет пути класса связи (прямого) или на основе шлюза (косвенный), наконец, самый широкий путь по умолчанию (0.0.0.0/0) используется маршрут. Подумайте об этом, и вы обнаружите, что все это имеет смысл. :-)
Как уже отмечал @MichaelHampton, именно так работает Интернет. NAT - это всего лишь дополнение (созданное спустя годы после IP-протокола), обычно используемое для подключения классов локальных адресов (отметьте RFC1918) в WAN и, таким образом, сохраняя общедоступные маршрутизируемые адреса.
Вы используете маршрутизатор всякий раз, когда хотите соединить 2 или более сетей. Хосты в этих сетях ДОЛЖНЫ знать об этом маршрутизаторе и правильно использовать его для подключения от одной сети к другой, если вы не СОЕДИНИТЕ эти сети с чем-то вроде brctl
, который «превращает роутер в коммутатор». Если ваш маршрутизатор ip_forward
on, то он ничего не блокирует и маршрутизирует все, если знает, как это сделать, или возвращает «немаршрутизируемый адрес». Если вы не укажете несколько правил блокировки с помощью iptables
для нормальной маршрутизации или ebtables
для мостов.