Я не знаю, является ли это ошибкой или преднамеренным резервным поведением, но из того, что я вижу здесь, это не имеет ничего общего с wlan0
локальный маршрут, который вы упомянули, или все шлюзы по умолчанию (без обид, но для меня это почти не имеет смысла), указанные в другом / «правильном» ответе.
Обычно как МАСКАРАД
работает, он выбирает адрес, который настроен на исходящий интерфейс (который определяется маршрутизацией, следовательно, РАЗМЕЩЕНИЕ
) для исходного NAT, который он выполняет. (Если на интерфейсе назначено несколько адресов, он, вероятно, выберет первый или тот, который установлен в качестве предпочтительного исходного адреса в соответствующем маршруте; я не очень знаком с этим, и это выходит за рамки здесь тем не мение). Это не имеет ничего общего с адресом nexthop/gateway маршрута по умолчанию. (В любом случае это не то, как работает исходный NAT.)
Однако, когда дело доходит до интерфейса вот
, все становится немного сложнее. Точнее, это, похоже, не связано с самим интерфейсом (кроме того, что это будет исходящий интерфейс, потому что адрес назначения является локальным адресом), а скорее с тем, что адреса в 127.0.0.0/8
блок не в тему Глобальный
. Хотя я понятия не имею, что происходит за кулисами, кажется, что трафик не может «появиться», если у хоста нет области видимости. Глобальный
IP-адрес настроен, но попытка МАСКАРАД
.
Что я вижу здесь, так это то, что даже если вы просто настроите адрес, который действителен для области Глобальный
(например. 192.168.0.10/32
) на любом интерфейсе (включая вот
), вы увидите, что он снова работает. (Упомянутый вами локальный маршрут будет добавлен автоматически.Но я не вижу, чтобы здесь работало добавление только маршрута.)
Что бы это ни стоило, адреса и интерфейсы не сильно связаны друг с другом в Linux (не прямолинейным образом, например, он будет отвечать на трафик, только если их адрес назначения совпадает с настроенным адресом на входящем интерфейсе, даже когда IP-переадресация включена). не вызывает беспокойства). Так что это может иметь какое-то отношение к этому: в случае МАСКАРАД
не могу выбрать область Глобальный
адрес из того, что настроено на исходящем интерфейсе, он просто выбирает один из любого (хотя я сомневаюсь, что приоритет имеет какое-то отношение к маршруту по умолчанию), если все еще нет, он просто отказывается работать каким-то образом.
Если вам действительно нужно правило, позволяющее МАСКАРАД
на всех интерфейсах, кроме вот
, вы можете иметь:
iptables -t nat -A ОТПРАВКА ! -o lo -j МАСКАРАД