SNAT для немаршрутизируемого интерфейса

NM передает conf-файл, чтобы dnsmasq не загружал файл конфигурации по умолчанию.

Однако обратите внимание:

--conf-dir=/etc/NetworkManager/dnsmasq.d 
1
20.06.2017, 09:27
1 ответ

Вполне возможно замаскировать или SNAT устройство, чей IP-адрес не маршрутизируется во внешний мир. И нахождение в сетевом пространстве имён или нет не имеет значения.

Вы забыли сообщить нам, что именно вы пробовали, но имейте в виду, что SNAT и MASQUERADE работают только в таблице POSTROUTING (, а DNAT работает только в таблице PREROUTING ), факт, который хорошо задокументирован, и что вы не можете не упомянуть явно в командах iptable.

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

Таким образом, обычная установка заключается в том, что маршрутизатор (хост или пространство имен )транслирует IP-адреса, поступающие с одной стороны, ко всему, что находится на другой стороне:

                +---------------+
                |               |
masq'ed IP --<--| eth0     eth1 |--<-- original IP
10.0.0.99       |               |      10.0.0.1
                +---------------+
                Host or Namespace

и вам нужен соответствующий DNAT для входящих соединений, поэтому:

iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.1/32  -j SNAT --to 10.0.0.99
iptables -t nat -A PREROUTING  -i eth0 -d 10.0.0.99/32 -j DNAT --to 10.0.0.1

Вы не указали, какие именно IP-адреса вы хотите замаскировать под какие IP-адреса, но если ваше основное пространство имен действует как такой маршрутизатор, и вы хотите замаскировать «RouteableNS», то есть 10.5.1.2, для внешнего мира, тогда это можно сделать, используя исходящий IF вашего основного пространства имен.

1
27.01.2020, 23:45

Теги

Похожие вопросы