IPTables Iptables Source-Mac

Есть два способа исправить это:

  1. Добавить сопоставления для всех виртуальных доменов в / etc / postfix / virtual . Postfix примет сообщение, если какая-либо запись в этом файле совпадает.

  2. Установка virtual_alias_domains в список других доменов, для которых вы хотите получать почту. Затем вы можете использовать таблицу регулярных выражений virtual_alias_maps = pcre: /etc/postfix/virtual.pcre , где последний содержит что-то вроде /.*/ info .

Осторожно: это не проверено.

2
30.08.2018, 17:33
1 ответ

Вот цели и средства ретранслятора (, т.е. relay1, relay2или relay3), для правильной обработки трафика, поступающего как через default-gateway(10.0.0.1), так и через HAProxymaster-relay(10.0.0.254)в прозрачном режиме, действуя как шлюз:

  1. Ретранслятор должен использовать обычный шлюз default-gatewayдля нормального трафика, то есть:

    • локально инициированный трафик,
    • исходящие ответы на удаленно инициированный трафик, который уже прошел через default-gateway.
  2. Ретранслятор должен использовать альтернативный шлюз master-relayдля прозрачно ретранслируемого трафика HAProxy, то есть только для:

    • исходящие ответы на удаленно инициированный трафик, который уже прошел через master-relay, действующий в качестве альтернативного шлюза.
  3. Селектор для различения случая маршрутизации 1. от случая 2. является MAC-адресом источника альтернативного шлюза master-relay. Скажем 02:03:04:05:06:07.

  4. Выбор, однажды сделанный в первом пакете соединения, должен оставаться тем же самым для всех других пакетов, входящих в это соединение.

Для этого требуется маршрутизация на основе политик с альтернативной таблицей маршрутизации (ip route add table..., дополнительное решение о маршрутизации (ip rule add fwmark...), основанное на iptablesиспользовании модуля соответствияmacдля селектора MAC-адресов, цельMARKдля изменения решение о маршрутизации и цельCONNMARKзапомнить решение для всего соединения.

Случай 1. является случаем по умолчанию без специальной обработки, а случай 2. является исключением, вам следует отменить изменение маршрутизации, чтобы использовать default-gatewayв качестве шлюза по умолчанию, как обычно:

ip route replace default via 10.0.0.1

Случай 2. будет сохранен в альтернативной таблице маршрутизации. Не надо его называть, любой номер подойдет, давайте выберем1000254(254был зарезервирован, это главная таблица...):

ip route add table 1000254 default via 10.0.0.254

Решение о маршрутизации будет инициировано значением метки (, поступающим от iptablesцели MARK). Давайте выберем254:

ip rule add fwmark 254 lookup 1000254

Как видно из Поток пакетов в Netfilter и общей сети ,правило iptablesв mangle/PREROUTINGили mangle/OUTPUTможет установить метку перед выполнением решения о маршрутизации (или проверки перемаршрута ). Вот так в итоге iptablesизменит маршрут. Таким образом, для одного входящего пакета это будет:

iptables -t mangle -A PREROUTING -m mac --mac-source 02:03:04:05:06:07 -j MARK --set-mark 254

Теперь, чтобы запомнить его для всего соединения, его следует обернуть вызовами CONNMARK, которые сохраняют и извлекают метку в записи conntrack для этого потока и позволяют установить ее только в первый раз, не забывая направление OUTPUT. Некоторые пояснения есть в этом блоге:Для Linux и не только! Сетевой фильтр Connmark . Нет необходимости помечать пакеты для трафика локальной сети, поэтому отфильтруйте их (, и это может помочь при использовании conntrack -L, см. в конце ). В итоге, включая предыдущее правило, получается:

iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -m mark ! --mark 0 -j RETURN
iptables -t mangle -A PREROUTING ! -s 10.0.0.0/24 -m mac --mac-source 02:03:04:05:06:07 -j MARK --set-mark 254
iptables -t mangle -A PREROUTING -j CONNMARK --save-mark
iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark

Вот именно. В этом случае даже не требуется переводrp_filterв свободный режим, поскольку задействован только один сетевой интерфейс.

Обратите внимание, что вы можете легко вставить больше таблиц, правил и меток, чтобы иметь более одной master-relay, если вам нужна избыточность (или просто добавить дополнительный MAC-адрес к master-relay, если его IP-адрес может изменить свой MAC-адрес. адрес по любой причине ). Пример дополнительного HAProxy с IP 10.0.0.250и MAC0A:09:08:07:06:05:

ip route add table 1000250 default via 10.0.0.250
ip rule add fwmark 250 lookup 1000250
iptables -t mangle -I PREROUTING 4 ! -s 10.0.0.0/24 -m mac --mac-source 0A:09:08:07:06:05 -j MARK --set-mark 250

conntrack -Lбудет отображать метку соединения и, таким образом, может использоваться для определения того, произошло ли соединение через master-relayвместо значения по умолчанию, потому что его метка будет 254вместо 0:

.
# conntrack -L -s 198.51.100.1
tcp      6 431635 ESTABLISHED src=198.51.100.1 dst=10.0.0.10 sport=50230 dport=25 src=10.0.0.10 dst=198.51.100.1 sport=25 dport=50230 [ASSURED] mark=0 secctx=system_u:object_r:unlabeled_t:s0 use=1
tcp      6 431527 ESTABLISHED src=198.51.100.1 dst=10.0.0.10 sport=49554 dport=25 src=10.0.0.10 dst=198.51.100.1 sport=25 dport=49554 [ASSURED] mark=254 secctx=system_u:object_r:unlabeled_t:s0 use=1
conntrack v1.4.4 (conntrack-tools): 2 flow entries have been shown.
1
27.01.2020, 22:31

Теги

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