Назад | Перейти на главную страницу

iproute и nat на разных устройствах

У меня такая конфигурация:

vlan123@eth0 - range 1.2.3.0/24, with 1.2.3.4 assigned to it
br2000 - range 10.2.3.0/24

в ip route Я вижу:

10.2.3.0/24 dev br2000 proto kernel scope link src 10.2.3.1

В iptables я переписываю назначение входящих пакетов (таблица nat):

-A PREROUTING -d 1.2.3.4/32 -j DNAT --to-destination 10.2.3.4

Если я попытаюсь пропинговать адрес 1.2.3.4 К сожалению, я не получил пересылки, на которую рассчитывал. ip route get 10.2.3.4 from 2.3.4.5 iif vlan123 возвращает:

RTNETLINK answers: Invalid cross-device link

Что, кажется, подтверждает, что правильной маршрутизации нет. В чем может быть проблема?

Переадресация IP включена в sysctl, и я также отключил rp_filter для тестирования.

Если вы хотите переписать входящие пакеты, вам следует добавить правила в цепочку PREROUTING; Цепочка OUTPUT в правилах nat используется только для локально сгенерированных пакетов.

Обновление 1:

После того, как вы установите это в таблице PREROUTING, убедитесь, что целевой хост (10.2.3.4) действительно имеет 10.2.3.1 в качестве шлюза по умолчанию, иначе ответ никогда не достигнет источника.

Также добавьте правило регистрации в цепочку FORWARD, чтобы увидеть, действительно ли ваш пакет переписан правильно и отправлен на целевой хост.