Я встретил в сценарии следующие две строки:
echo "1" > /proc/sys/net/ipv4/ip_forward/
echo "0" > /proc/sys/net/ipv4/conf/eth0/send_redirects
Первая строка включает переадресацию IP, благодаря чему мой компьютер работает как маршрутизатор.
Я хотел бы понять, что именно делает вторая строка. Она отключается send_redirects
на интерфейсе eth0
, но что это значит? Что send_redirect
в этом контексте?
решение1
«ip_forward» — включение пересылки пакетов для IPv4.
«Отправка перенаправлений» включена только в том случае, если узел действует как маршрутизатор. То есть хост не должен отправлять сообщение ICMP Redirect. Оно используется маршрутизаторами для уведомления хоста о лучшем пути маршрутизации, который доступен для определенного пункта назначения. После этого хост обновляет запись кэша маршрута и пересылает последующие пакеты напрямую по оптимальному пути/маршруту, предложенному в сообщении ICMP redirect.
Однако этот механизм обновления информации о маршрутизации является рискованным и вызывает обеспокоенность у сообщества специалистов по безопасности, поскольку перенаправления ICMP могут быть подделаны/подделаны вредоносным программным обеспечением/злоумышленником для перенаправления на желаемый путь.
Более подробную информацию и положения, такие как «Сообщение о перенаправлении СЛЕДУЕТ без уведомления отбрасывать, если новый адрес шлюза, который оно указывает, не находится в той же подключенной (под)сети, через которую пришло перенаправление, или если источник перенаправления не является текущим шлюзом первого перехода для указанного пункта назначения» см. в RFC 1122 (раздел 3.3.1 и приложение A).
решение2
Перенаправления происходят, когда у вас есть несколько маршрутизаторов в одной локальной сети. Например, предположим, что у нас есть сеть с одним хостом и двумя маршрутизаторами. Хост может отправить пакет на маршрутизатор A, а маршрутизатору A может потребоваться отправить этот пакет по той же локальной сети на маршрутизатор B, поскольку его таблица маршрутизации говорит ему об этом. Затем маршрутизатор A может отправить сообщение о перенаправлении хосту, чтобы сообщить ему, что было бы более эффективно, если бы он отправил пакет для этого конкретного пункта назначения напрямую на маршрутизатор B.
При выключении send_redirect
маршрутизатор не будет отправлять такие сообщения о перенаправлении.