
Расширения Netfilterстраница руководстваговорится, что:
МАСКАРАД: Эта цель действительна только в
nat
таблице, вPOSTROUTING
цепочке
ВОПРОС: Как клонироватьвыходцели MASQUERADE
с TEE
целью?
Если вы посмотрите на схему netfilter/iptables
ниже, вы заметите, что nat.POSTROUTING
это последняя цепочка, которая будет оценена перед отправкой пакета на исходящий интерфейс. Цепи нет raw.POSTROUTING
, ...или есть?
Также смэтот.
PS
В чем смысл обработки mangle
таблиц и nat
в том же порядке в интерфейсе outbound
и inbound
, когда данные поступают впротивоположные направлениячерез эти интерфейсы (выход и вход)?
решение1
Насколько мне известно, поскольку это невозможно,iptablesправило выполняется посленат/ПОСТРАСТЕНИЕ, который является последним крючком, предоставленнымiptables, невозможно использоватьiptablesдля захвата пакета после NAT.
Но это возможно при использованииnftables, так какприоритет хука определяется пользователем.нфт'sдубликатзаявление является прямой заменойiptables'ТРОЙНИК. Можно смешиватьnftablesиiptablesесли только они оба не выполняют NAT (ресурс NAT является специальным и не может быть совместно использован между ними)iptablesиnftables). С использованиемiptables-over-nftablesверсияiptablesтакже будет работать (следует соблюдать осторожность при очистке наборов правил), и, конечно, использовать тольконфтибо все также будет работать.
Вот готовыйнфтнабор правил для этого на маршрутизаторе с NAT-сетью LAN наeth1и его WAN-сторона наeth2, чтобы отправить копию на 192.168.0.3 в локальной сети. как описано вдругой вопрос от OP. Поместить в какой-то файл с именемforwireshark.nftи быть «загруженным» с помощью nft -f forwireshark.nft
:
table ip forwireshark {
chain postnat {
type filter hook postrouting priority 250; policy accept;
oif eth2 counter dup to 192.168.0.3 device eth1
}
}
Здесь важно то, что значение 250 выбрано выше, чемiptables'NF_IP_PRI_NAT_SRC
(100).
Вот что обычно получает хост Wireshark, когда хост ping делает это ping -c1 8.8.8.8
после некоторого бездействия (обратите внимание на странный ARP-запрос с «неправильного» IP-адреса, который может не приниматься по умолчанию в некоторых системах):
root@ns-wireshark:~# tcpdump -e -n -s0 -p -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:06:03.074142 82:01:54:27:4d:d7 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.1 tell 192.168.0.2, length 28
21:06:03.074301 9a:80:fb:e6:6a:0a > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.3 tell 140.82.118.4, length 28
21:06:03.074343 7e:0a:6c:12:00:61 > 9a:80:fb:e6:6a:0a, ethertype ARP (0x0806), length 42: Reply 192.168.0.3 is-at 7e:0a:6c:12:00:61, length 28
21:06:03.074387 9a:80:fb:e6:6a:0a > 7e:0a:6c:12:00:61, ethertype IPv4 (0x0800), length 98: 140.82.118.4 > 8.8.8.8: ICMP echo request, id 1633, seq 1, length 64
Я не знаю обоснования порядкакалечить/ПОСТРАСТЯЖКАинат/ПОСТРАСТЕНИЕ. В любом случае это частьiptables' ограничения, потому что вnftables, за исключением эквивалентакалечить/ВЫХОДчто является особеннымтип маршрутахук для перенаправления, все другие эквивалентные использованияувечьеявляются частьютип фильтра: на самом деле нет отдельногоувечьебольше печатать. Возможность выбирать порядок приоритетов позволяет делать больше.