привіт, у мене є VPN server (strongswan) та Radius (на віддаленому хості). Мені треба _здублювати_ Radius Accounting на інший хост. Награвся iptables по саме не хочу й не навчив його цьому трюку. Судячи з доступної документації (напр https://westoahu.hawaii.edu/cyber/forensics-weekly-executive-summmaries/week... ) пакет має пройти через mangle prerouting та nat prerouting за будь-яких умов. Роблю наступне (див нижче конф iptables) - маркую пакет та розставляю LOG всюди, де він може з'явитись, так от - він попадає в логи в MANGLE-PREROUTING й в MANGLE-INPUT, а от в NAT PREROUTING - ні: 2024-09-15T20:58:28.872788+07:00 vft-dev-edge kernel: MANGLE-PRE IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52 2024-09-15T20:58:28.872869+07:00 vft-dev-edge kernel: MANGLE-INP IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52 причому що я ЩЕ не розумію - судячи з наведеної вище діаграми, там має бути decision "For this host?", так ось в лозі вище 172.16.40.30 - це локальна адреса, а 172.16.40.32 - це remote host, відповідно пакет мав би відмітитись в MANGLE-FORWARD, а не в MANGLE-INPUT. Шо я роблю не так? Дякую. *mangle # промаркувати Radius-accounting пакет -A OUTPUT -p udp --dport 1716 -j MARK --set-mark 0x52 # здублювати його на localhost -A OUTPUT -p udp --dport 1716 -j TEE --gateway 127.0.0.1 # перевірити де чувак з'явиться -A PREROUTING -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-PRE " -A INPUT -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-INP " -A FORWARD -p udp --dport 1716 -j LOG --log-prefix "MANGLE-FWD " COMMIT *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p udp --dport 1716 -j LOG --log-prefix "NAT-PRE " # це NAT для власне VPN'а, він на internet-facing інтерфейсі, залишаю для повноти картини -A POSTROUTING -o ens33 -j MASQUERADE COMMIT -- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
Re кароч, стало ясніше й все одно шось не так. По-перше, -j TEE, яке відправляє на localhost, обробляєься в chain OUTPUT, тому в попередній лист можна не вникати, там все неправильно й я переписав правила: *filter /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "FILTER-OUT " /COMMIT *nat /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "NAT-OUT " /*# зробити DNAT для того хоста, куди мені треба здублювати трафік *-A OUTPUT -m mark --mark 0x53 -j DNAT --to-destination x.x.x.x COMMIT *mangle *# здублювати те, що мене цікавить (udp/1716, вихідний порт ens32)* -A OUTPUT -o ens32 -p udp --dport 1716 -j TEE --gateway 127.0.0.1 *# промаркувати здубльоване (localhost) для подальшого DNAT* -A OUTPUT -o lo -p udp --dport 1716 -j MARK --set-mark 0x53 /*# log* -I OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-pre " -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-post " /COMMIT й тут починається знову цікаве (спойлер - у мене враження, що пакети для localhost обробляються по якомусь іншому ланцюжку) : два пакети - один оригінальний, один - дублікат: * MANGLE-OUT-pre IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 * MANGLE-OUT-pre IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 після правил модіфікації - один промаркований, другий ні (as expected) * MANGLE-OUT-post IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 *MARK=0x53* * MANGLE-OUT-post IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 в NAT попадає тільки ОДИН (немаркований, out=ens32), відповідно DNAT для mark=0x53 не відбувається: * NAT-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 тому в filter out - два пакети (оригінальний через ens32) та дублікат, з яким неясно шо робити: * FILTER-OUT IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 MARK=0x53 * FILTER-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 В общем, якщо у когось є ідеї, як _скопіювати_ локально сгенерований трафік в інший дестинейшен - буду дуже вдячним. Дякуюю On 9/15/24 16:04, Volodymyr Litovka wrote:
привіт,
у мене є VPN server (strongswan) та Radius (на віддаленому хості). Мені треба _здублювати_ Radius Accounting на інший хост.
Награвся iptables по саме не хочу й не навчив його цьому трюку. Судячи з доступної документації (напр https://westoahu.hawaii.edu/cyber/forensics-weekly-executive-summmaries/week... ) пакет має пройти через mangle prerouting та nat prerouting за будь-яких умов.
Роблю наступне (див нижче конф iptables) - маркую пакет та розставляю LOG всюди, де він може з'явитись, так от - він попадає в логи в MANGLE-PREROUTING й в MANGLE-INPUT, а от в NAT PREROUTING - ні:
2024-09-15T20:58:28.872788+07:00 vft-dev-edge kernel: MANGLE-PRE IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52 2024-09-15T20:58:28.872869+07:00 vft-dev-edge kernel: MANGLE-INP IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52
причому що я ЩЕ не розумію - судячи з наведеної вище діаграми, там має бути decision "For this host?", так ось в лозі вище 172.16.40.30 - це локальна адреса, а 172.16.40.32 - це remote host, відповідно пакет мав би відмітитись в MANGLE-FORWARD, а не в MANGLE-INPUT.
Шо я роблю не так? Дякую.
*mangle # промаркувати Radius-accounting пакет -A OUTPUT -p udp --dport 1716 -j MARK --set-mark 0x52 # здублювати його на localhost -A OUTPUT -p udp --dport 1716 -j TEE --gateway 127.0.0.1
# перевірити де чувак з'явиться -A PREROUTING -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-PRE " -A INPUT -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-INP " -A FORWARD -p udp --dport 1716 -j LOG --log-prefix "MANGLE-FWD " COMMIT
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p udp --dport 1716 -j LOG --log-prefix "NAT-PRE "
# це NAT для власне VPN'а, він на internet-facing інтерфейсі, залишаю для повноти картини -A POSTROUTING -o ens33 -j MASQUERADE COMMIT
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
Привіт. IMHO злізь з мертвої кобили, котрій лишилося жити добре, якщо 1-2 релізи дистрибутивів - вже давно час переїхати на nftables. В термінах nftables те, що ти хочеш, буде виглядати якось так: |table netdev t_dup { chain c_ingress { type filter hook ingress device "lo" priority filter; policy accept; iif lo udp dport 1716 meta mark != 1 meta mark set 1 dup to ens32 udp dport set 1716 } } to, dport, dstaddr etc в другому правилі - підстав свої. | 15.09.24 19:26, Volodymyr Litovka via UANOG:
Re
кароч, стало ясніше й все одно шось не так. По-перше, -j TEE, яке відправляє на localhost, обробляєься в chain OUTPUT, тому в попередній лист можна не вникати, там все неправильно й я переписав правила:
*filter /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "FILTER-OUT " /COMMIT
*nat /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "NAT-OUT " /*# зробити DNAT для того хоста, куди мені треба здублювати трафік *-A OUTPUT -m mark --mark 0x53 -j DNAT --to-destination x.x.x.x COMMIT
*mangle *# здублювати те, що мене цікавить (udp/1716, вихідний порт ens32)* -A OUTPUT -o ens32 -p udp --dport 1716 -j TEE --gateway 127.0.0.1 *# промаркувати здубльоване (localhost) для подальшого DNAT* -A OUTPUT -o lo -p udp --dport 1716 -j MARK --set-mark 0x53 /*# log* -I OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-pre " -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-post " /COMMIT
й тут починається знову цікаве (спойлер - у мене враження, що пакети для localhost обробляються по якомусь іншому ланцюжку) :
два пакети - один оригінальний, один - дублікат:
* MANGLE-OUT-pre IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 * MANGLE-OUT-pre IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
після правил модіфікації - один промаркований, другий ні (as expected)
* MANGLE-OUT-post IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 *MARK=0x53* * MANGLE-OUT-post IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
в NAT попадає тільки ОДИН (немаркований, out=ens32), відповідно DNAT для mark=0x53 не відбувається:
* NAT-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
тому в filter out - два пакети (оригінальний через ens32) та дублікат, з яким неясно шо робити:
* FILTER-OUT IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 MARK=0x53 * FILTER-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
В общем, якщо у когось є ідеї, як _скопіювати_ локально сгенерований трафік в інший дестинейшен - буду дуже вдячним.
Дякуюю
On 9/15/24 16:04, Volodymyr Litovka wrote:
привіт,
у мене є VPN server (strongswan) та Radius (на віддаленому хості). Мені треба _здублювати_ Radius Accounting на інший хост.
Награвся iptables по саме не хочу й не навчив його цьому трюку. Судячи з доступної документації (напр https://westoahu.hawaii.edu/cyber/forensics-weekly-executive-summmaries/week... ) пакет має пройти через mangle prerouting та nat prerouting за будь-яких умов.
Роблю наступне (див нижче конф iptables) - маркую пакет та розставляю LOG всюди, де він може з'явитись, так от - він попадає в логи в MANGLE-PREROUTING й в MANGLE-INPUT, а от в NAT PREROUTING - ні:
2024-09-15T20:58:28.872788+07:00 vft-dev-edge kernel: MANGLE-PRE IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52 2024-09-15T20:58:28.872869+07:00 vft-dev-edge kernel: MANGLE-INP IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52
причому що я ЩЕ не розумію - судячи з наведеної вище діаграми, там має бути decision "For this host?", так ось в лозі вище 172.16.40.30 - це локальна адреса, а 172.16.40.32 - це remote host, відповідно пакет мав би відмітитись в MANGLE-FORWARD, а не в MANGLE-INPUT.
Шо я роблю не так? Дякую.
*mangle # промаркувати Radius-accounting пакет -A OUTPUT -p udp --dport 1716 -j MARK --set-mark 0x52 # здублювати його на localhost -A OUTPUT -p udp --dport 1716 -j TEE --gateway 127.0.0.1
# перевірити де чувак з'явиться -A PREROUTING -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-PRE " -A INPUT -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-INP " -A FORWARD -p udp --dport 1716 -j LOG --log-prefix "MANGLE-FWD " COMMIT
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p udp --dport 1716 -j LOG --log-prefix "NAT-PRE "
# це NAT для власне VPN'а, він на internet-facing інтерфейсі, залишаю для повноти картини -A POSTROUTING -o ens33 -j MASQUERADE COMMIT
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
Я цей сніпет, звісно, пробував - гуглити вмію :) Проблема не стільки в тому, щоб зробити дублікат, а в наступному кроці - на destination host висить тулза, яка слухає на своїй IP-адресі. Тому коли я роблю дубль - він доходить до віддаленого хоста, але з оригінальними src/dst ip/port. Я хотів викрутитись одним хостом, але, здається, шось йде не так, тому розвернув схему з двома хостами (edge ---[radacct]---> aaa) й налаштував aaa повертати radacct назад на edge. Те, про що я кажу вище, на edge виглядає так - (1) Це відповідь AAA на оригінальний Rad Acct пакет: IP aaa.1716 > edge.47385: UDP, length 20 (2) А це - тупо копія оригінального RadAcct пакету: *IP edge.47385 > aaa.1716: UDP, length 153 *- вона не змінена й софтінка яка слухає на цю копію, її не бачить, бо network stack її дропає ну тут я вже завтра повожусь - я колись вже робив таку фігню (саме на nftables, до речі) - переписування заголовків вхідного пакету, щоб він проходив до аппки. On 9/15/24 19:39, Volodymyr Pidgornyi wrote:
Привіт.
IMHO злізь з мертвої кобили, котрій лишилося жити добре, якщо 1-2 релізи дистрибутивів - вже давно час переїхати на nftables.
iptables
В термінах nftables те, що ти хочеш, буде виглядати якось так:
|table netdev t_dup { chain c_ingress { type filter hook ingress device "lo" priority filter; policy accept; iif lo udp dport 1716 meta mark != 1 meta mark set 1 dup to ens32 udp dport set 1716 } } to, dport, dstaddr etc в другому правилі - підстав свої. | 15.09.24 19:26, Volodymyr Litovka via UANOG:
Re
кароч, стало ясніше й все одно шось не так. По-перше, -j TEE, яке відправляє на localhost, обробляєься в chain OUTPUT, тому в попередній лист можна не вникати, там все неправильно й я переписав правила:
*filter /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "FILTER-OUT " /COMMIT
*nat /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "NAT-OUT " /*# зробити DNAT для того хоста, куди мені треба здублювати трафік *-A OUTPUT -m mark --mark 0x53 -j DNAT --to-destination x.x.x.x COMMIT
*mangle *# здублювати те, що мене цікавить (udp/1716, вихідний порт ens32)* -A OUTPUT -o ens32 -p udp --dport 1716 -j TEE --gateway 127.0.0.1 *# промаркувати здубльоване (localhost) для подальшого DNAT* -A OUTPUT -o lo -p udp --dport 1716 -j MARK --set-mark 0x53 /*# log* -I OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-pre " -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-post " /COMMIT
й тут починається знову цікаве (спойлер - у мене враження, що пакети для localhost обробляються по якомусь іншому ланцюжку) :
два пакети - один оригінальний, один - дублікат:
* MANGLE-OUT-pre IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 * MANGLE-OUT-pre IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
після правил модіфікації - один промаркований, другий ні (as expected)
* MANGLE-OUT-post IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 *MARK=0x53* * MANGLE-OUT-post IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
в NAT попадає тільки ОДИН (немаркований, out=ens32), відповідно DNAT для mark=0x53 не відбувається:
* NAT-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
тому в filter out - два пакети (оригінальний через ens32) та дублікат, з яким неясно шо робити:
* FILTER-OUT IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 MARK=0x53 * FILTER-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
В общем, якщо у когось є ідеї, як _скопіювати_ локально сгенерований трафік в інший дестинейшен - буду дуже вдячним.
Дякуюю
On 9/15/24 16:04, Volodymyr Litovka wrote:
привіт,
у мене є VPN server (strongswan) та Radius (на віддаленому хості). Мені треба _здублювати_ Radius Accounting на інший хост.
Награвся iptables по саме не хочу й не навчив його цьому трюку. Судячи з доступної документації (напр https://westoahu.hawaii.edu/cyber/forensics-weekly-executive-summmaries/week... ) пакет має пройти через mangle prerouting та nat prerouting за будь-яких умов.
Роблю наступне (див нижче конф iptables) - маркую пакет та розставляю LOG всюди, де він може з'явитись, так от - він попадає в логи в MANGLE-PREROUTING й в MANGLE-INPUT, а от в NAT PREROUTING - ні:
2024-09-15T20:58:28.872788+07:00 vft-dev-edge kernel: MANGLE-PRE IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52 2024-09-15T20:58:28.872869+07:00 vft-dev-edge kernel: MANGLE-INP IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52
причому що я ЩЕ не розумію - судячи з наведеної вище діаграми, там має бути decision "For this host?", так ось в лозі вище 172.16.40.30 - це локальна адреса, а 172.16.40.32 - це remote host, відповідно пакет мав би відмітитись в MANGLE-FORWARD, а не в MANGLE-INPUT.
Шо я роблю не так? Дякую.
*mangle # промаркувати Radius-accounting пакет -A OUTPUT -p udp --dport 1716 -j MARK --set-mark 0x52 # здублювати його на localhost -A OUTPUT -p udp --dport 1716 -j TEE --gateway 127.0.0.1
# перевірити де чувак з'явиться -A PREROUTING -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-PRE " -A INPUT -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-INP " -A FORWARD -p udp --dport 1716 -j LOG --log-prefix "MANGLE-FWD " COMMIT
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p udp --dport 1716 -j LOG --log-prefix "NAT-PRE "
# це NAT для власне VPN'а, він на internet-facing інтерфейсі, залишаю для повноти картини -A POSTROUTING -o ens33 -j MASQUERADE COMMIT
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
Вітаю.
А як щодо налаштування двох radacct серверів на джерелі? Мінус необхідність
дублювати пакети і правити заголовки по дорозі.
нд, 15 вер. 2024, 21:13 користувач Volodymyr Litovka
Я цей сніпет, звісно, пробував - гуглити вмію :)
Проблема не стільки в тому, щоб зробити дублікат, а в наступному кроці - на destination host висить тулза, яка слухає на своїй IP-адресі. Тому коли я роблю дубль - він доходить до віддаленого хоста, але з оригінальними src/dst ip/port.
Я хотів викрутитись одним хостом, але, здається, шось йде не так, тому розвернув схему з двома хостами (edge ---[radacct]---> aaa) й налаштував aaa повертати radacct назад на edge.
Те, про що я кажу вище, на edge виглядає так -
(1) Це відповідь AAA на оригінальний Rad Acct пакет: IP aaa.1716 > edge.47385: UDP, length 20 (2) А це - тупо копія оригінального RadAcct пакету: *IP edge.47385 > aaa.1716: UDP, length 153 *- вона не змінена й софтінка яка слухає на цю копію, її не бачить, бо network stack її дропає
ну тут я вже завтра повожусь - я колись вже робив таку фігню (саме на nftables, до речі) - переписування заголовків вхідного пакету, щоб він проходив до аппки.
On 9/15/24 19:39, Volodymyr Pidgornyi wrote:
Привіт.
IMHO злізь з мертвої кобили, котрій лишилося жити добре, якщо 1-2 релізи дистрибутивів - вже давно час переїхати на nftables.
iptables
В термінах nftables те, що ти хочеш, буде виглядати якось так:
table netdev t_dup { chain c_ingress { type filter hook ingress device "lo" priority filter; policy accept; iif lo udp dport 1716 meta mark != 1 meta mark set 1 dup to ens32 udp dport set 1716 } }
to, dport, dstaddr etc в другому правилі - підстав свої.
15.09.24 19:26, Volodymyr Litovka via UANOG:
Re
кароч, стало ясніше й все одно шось не так. По-перше, -j TEE, яке відправляє на localhost, обробляєься в chain OUTPUT, тому в попередній лист можна не вникати, там все неправильно й я переписав правила:
*filter
*# log -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "FILTER-OUT " * COMMIT
*nat
*# log -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "NAT-OUT " * *# зробити DNAT для того хоста, куди мені треба здублювати трафік *-A OUTPUT -m mark --mark 0x53 -j DNAT --to-destination x.x.x.x COMMIT
*mangle *# здублювати те, що мене цікавить (udp/1716, вихідний порт ens32)* -A OUTPUT -o ens32 -p udp --dport 1716 -j TEE --gateway 127.0.0.1 *# промаркувати здубльоване (localhost) для подальшого DNAT* -A OUTPUT -o lo -p udp --dport 1716 -j MARK --set-mark 0x53
*# log -I OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-pre " -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-post " * COMMIT
й тут починається знову цікаве (спойлер - у мене враження, що пакети для localhost обробляються по якомусь іншому ланцюжку) :
два пакети - один оригінальний, один - дублікат:
* MANGLE-OUT-pre IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 * MANGLE-OUT-pre IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
після правил модіфікації - один промаркований, другий ні (as expected)
* MANGLE-OUT-post IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 *MARK=0x53* * MANGLE-OUT-post IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
в NAT попадає тільки ОДИН (немаркований, out=ens32), відповідно DNAT для mark=0x53 не відбувається:
* NAT-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
тому в filter out - два пакети (оригінальний через ens32) та дублікат, з яким неясно шо робити:
* FILTER-OUT IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 MARK=0x53 * FILTER-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
В общем, якщо у когось є ідеї, як _скопіювати_ локально сгенерований трафік в інший дестинейшен - буду дуже вдячним.
Дякуюю
On 9/15/24 16:04, Volodymyr Litovka wrote:
привіт,
у мене є VPN server (strongswan) та Radius (на віддаленому хості). Мені треба _здублювати_ Radius Accounting на інший хост.
Награвся iptables по саме не хочу й не навчив його цьому трюку. Судячи з доступної документації (напр https://westoahu.hawaii.edu/cyber/forensics-weekly-executive-summmaries/week... ) пакет має пройти через mangle prerouting та nat prerouting за будь-яких умов.
Роблю наступне (див нижче конф iptables) - маркую пакет та розставляю LOG всюди, де він може з'явитись, так от - він попадає в логи в MANGLE-PREROUTING й в MANGLE-INPUT, а от в NAT PREROUTING - ні:
2024-09-15T20:58:28.872788+07:00 vft-dev-edge kernel: MANGLE-PRE IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52 2024-09-15T20:58:28.872869+07:00 vft-dev-edge kernel: MANGLE-INP IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52
причому що я ЩЕ не розумію - судячи з наведеної вище діаграми, там має бути decision "For this host?", так ось в лозі вище 172.16.40.30 - це локальна адреса, а 172.16.40.32 - це remote host, відповідно пакет мав би відмітитись в MANGLE-FORWARD, а не в MANGLE-INPUT.
Шо я роблю не так? Дякую.
*mangle # промаркувати Radius-accounting пакет -A OUTPUT -p udp --dport 1716 -j MARK --set-mark 0x52 # здублювати його на localhost -A OUTPUT -p udp --dport 1716 -j TEE --gateway 127.0.0.1
# перевірити де чувак з'явиться -A PREROUTING -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-PRE " -A INPUT -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-INP " -A FORWARD -p udp --dport 1716 -j LOG --log-prefix "MANGLE-FWD " COMMIT
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p udp --dport 1716 -j LOG --log-prefix "NAT-PRE "
# це NAT для власне VPN'а, він на internet-facing інтерфейсі, залишаю для повноти картини -A POSTROUTING -o ens33 -j MASQUERADE COMMIT
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ UANOG mailing list -- uanog@uanog.one To unsubscribe send an email to uanog-leave@uanog.one
_______________________________________________ UANOG mailing list -- uanog@uanog.one To unsubscribe send an email to uanog-leave@uanog.one
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
Я б залюбки, але стронгсван використовує radius як hot-stanby :-\ On 9/15/24 20:44, Vladimir A. Podgorny wrote:
Вітаю.
А як щодо налаштування двох radacct серверів на джерелі? Мінус необхідність дублювати пакети і правити заголовки по дорозі.
нд, 15 вер. 2024, 21:13 користувач Volodymyr Litovka
пише: Я цей сніпет, звісно, пробував - гуглити вмію :)
Проблема не стільки в тому, щоб зробити дублікат, а в наступному кроці - на destination host висить тулза, яка слухає на своїй IP-адресі. Тому коли я роблю дубль - він доходить до віддаленого хоста, але з оригінальними src/dst ip/port.
Я хотів викрутитись одним хостом, але, здається, шось йде не так, тому розвернув схему з двома хостами (edge ---[radacct]---> aaa) й налаштував aaa повертати radacct назад на edge.
Те, про що я кажу вище, на edge виглядає так -
(1) Це відповідь AAA на оригінальний Rad Acct пакет: IP aaa.1716 > edge.47385: UDP, length 20 (2) А це - тупо копія оригінального RadAcct пакету: *IP edge.47385 > aaa.1716: UDP, length 153 *- вона не змінена й софтінка яка слухає на цю копію, її не бачить, бо network stack її дропає
ну тут я вже завтра повожусь - я колись вже робив таку фігню (саме на nftables, до речі) - переписування заголовків вхідного пакету, щоб він проходив до аппки.
On 9/15/24 19:39, Volodymyr Pidgornyi wrote:
Привіт.
IMHO злізь з мертвої кобили, котрій лишилося жити добре, якщо 1-2 релізи дистрибутивів - вже давно час переїхати на nftables.
iptables
В термінах nftables те, що ти хочеш, буде виглядати якось так:
|table netdev t_dup { chain c_ingress { type filter hook ingress device "lo" priority filter; policy accept; iif lo udp dport 1716 meta mark != 1 meta mark set 1 dup to ens32 udp dport set 1716 } } to, dport, dstaddr etc в другому правилі - підстав свої. | 15.09.24 19:26, Volodymyr Litovka via UANOG:
Re
кароч, стало ясніше й все одно шось не так. По-перше, -j TEE, яке відправляє на localhost, обробляєься в chain OUTPUT, тому в попередній лист можна не вникати, там все неправильно й я переписав правила:
*filter /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "FILTER-OUT " /COMMIT
*nat /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "NAT-OUT " /*# зробити DNAT для того хоста, куди мені треба здублювати трафік *-A OUTPUT -m mark --mark 0x53 -j DNAT --to-destination x.x.x.x COMMIT
*mangle *# здублювати те, що мене цікавить (udp/1716, вихідний порт ens32)* -A OUTPUT -o ens32 -p udp --dport 1716 -j TEE --gateway 127.0.0.1 *# промаркувати здубльоване (localhost) для подальшого DNAT* -A OUTPUT -o lo -p udp --dport 1716 -j MARK --set-mark 0x53 /*# log* -I OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-pre " -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-post " /COMMIT
й тут починається знову цікаве (спойлер - у мене враження, що пакети для localhost обробляються по якомусь іншому ланцюжку) :
два пакети - один оригінальний, один - дублікат:
* MANGLE-OUT-pre IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 * MANGLE-OUT-pre IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
після правил модіфікації - один промаркований, другий ні (as expected)
* MANGLE-OUT-post IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 *MARK=0x53* * MANGLE-OUT-post IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
в NAT попадає тільки ОДИН (немаркований, out=ens32), відповідно DNAT для mark=0x53 не відбувається:
* NAT-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
тому в filter out - два пакети (оригінальний через ens32) та дублікат, з яким неясно шо робити:
* FILTER-OUT IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 MARK=0x53 * FILTER-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
В общем, якщо у когось є ідеї, як _скопіювати_ локально сгенерований трафік в інший дестинейшен - буду дуже вдячним.
Дякуюю
On 9/15/24 16:04, Volodymyr Litovka wrote:
привіт,
у мене є VPN server (strongswan) та Radius (на віддаленому хості). Мені треба _здублювати_ Radius Accounting на інший хост.
Награвся iptables по саме не хочу й не навчив його цьому трюку. Судячи з доступної документації (напр https://westoahu.hawaii.edu/cyber/forensics-weekly-executive-summmaries/week... ) пакет має пройти через mangle prerouting та nat prerouting за будь-яких умов.
Роблю наступне (див нижче конф iptables) - маркую пакет та розставляю LOG всюди, де він може з'явитись, так от - він попадає в логи в MANGLE-PREROUTING й в MANGLE-INPUT, а от в NAT PREROUTING - ні:
2024-09-15T20:58:28.872788+07:00 vft-dev-edge kernel: MANGLE-PRE IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52 2024-09-15T20:58:28.872869+07:00 vft-dev-edge kernel: MANGLE-INP IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52
причому що я ЩЕ не розумію - судячи з наведеної вище діаграми, там має бути decision "For this host?", так ось в лозі вище 172.16.40.30 - це локальна адреса, а 172.16.40.32 - це remote host, відповідно пакет мав би відмітитись в MANGLE-FORWARD, а не в MANGLE-INPUT.
Шо я роблю не так? Дякую.
*mangle # промаркувати Radius-accounting пакет -A OUTPUT -p udp --dport 1716 -j MARK --set-mark 0x52 # здублювати його на localhost -A OUTPUT -p udp --dport 1716 -j TEE --gateway 127.0.0.1
# перевірити де чувак з'явиться -A PREROUTING -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-PRE " -A INPUT -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-INP " -A FORWARD -p udp --dport 1716 -j LOG --log-prefix "MANGLE-FWD " COMMIT
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p udp --dport 1716 -j LOG --log-prefix "NAT-PRE "
# це NAT для власне VPN'а, він на internet-facing інтерфейсі, залишаю для повноти картини -A POSTROUTING -o ens33 -j MASQUERADE COMMIT
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
Ну й вдогонку - iptables вже давно frontend до nftables Мене дивує, що не працює те, що, згідно документації, має працювати... On 9/15/24 20:44, Vladimir A. Podgorny wrote:
Вітаю.
А як щодо налаштування двох radacct серверів на джерелі? Мінус необхідність дублювати пакети і правити заголовки по дорозі.
нд, 15 вер. 2024, 21:13 користувач Volodymyr Litovka
пише: Я цей сніпет, звісно, пробував - гуглити вмію :)
Проблема не стільки в тому, щоб зробити дублікат, а в наступному кроці - на destination host висить тулза, яка слухає на своїй IP-адресі. Тому коли я роблю дубль - він доходить до віддаленого хоста, але з оригінальними src/dst ip/port.
Я хотів викрутитись одним хостом, але, здається, шось йде не так, тому розвернув схему з двома хостами (edge ---[radacct]---> aaa) й налаштував aaa повертати radacct назад на edge.
Те, про що я кажу вище, на edge виглядає так -
(1) Це відповідь AAA на оригінальний Rad Acct пакет: IP aaa.1716 > edge.47385: UDP, length 20 (2) А це - тупо копія оригінального RadAcct пакету: *IP edge.47385 > aaa.1716: UDP, length 153 *- вона не змінена й софтінка яка слухає на цю копію, її не бачить, бо network stack її дропає
ну тут я вже завтра повожусь - я колись вже робив таку фігню (саме на nftables, до речі) - переписування заголовків вхідного пакету, щоб він проходив до аппки.
On 9/15/24 19:39, Volodymyr Pidgornyi wrote:
Привіт.
IMHO злізь з мертвої кобили, котрій лишилося жити добре, якщо 1-2 релізи дистрибутивів - вже давно час переїхати на nftables.
iptables
В термінах nftables те, що ти хочеш, буде виглядати якось так:
|table netdev t_dup { chain c_ingress { type filter hook ingress device "lo" priority filter; policy accept; iif lo udp dport 1716 meta mark != 1 meta mark set 1 dup to ens32 udp dport set 1716 } } to, dport, dstaddr etc в другому правилі - підстав свої. | 15.09.24 19:26, Volodymyr Litovka via UANOG:
Re
кароч, стало ясніше й все одно шось не так. По-перше, -j TEE, яке відправляє на localhost, обробляєься в chain OUTPUT, тому в попередній лист можна не вникати, там все неправильно й я переписав правила:
*filter /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "FILTER-OUT " /COMMIT
*nat /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "NAT-OUT " /*# зробити DNAT для того хоста, куди мені треба здублювати трафік *-A OUTPUT -m mark --mark 0x53 -j DNAT --to-destination x.x.x.x COMMIT
*mangle *# здублювати те, що мене цікавить (udp/1716, вихідний порт ens32)* -A OUTPUT -o ens32 -p udp --dport 1716 -j TEE --gateway 127.0.0.1 *# промаркувати здубльоване (localhost) для подальшого DNAT* -A OUTPUT -o lo -p udp --dport 1716 -j MARK --set-mark 0x53 /*# log* -I OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-pre " -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-post " /COMMIT
й тут починається знову цікаве (спойлер - у мене враження, що пакети для localhost обробляються по якомусь іншому ланцюжку) :
два пакети - один оригінальний, один - дублікат:
* MANGLE-OUT-pre IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 * MANGLE-OUT-pre IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
після правил модіфікації - один промаркований, другий ні (as expected)
* MANGLE-OUT-post IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 *MARK=0x53* * MANGLE-OUT-post IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
в NAT попадає тільки ОДИН (немаркований, out=ens32), відповідно DNAT для mark=0x53 не відбувається:
* NAT-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
тому в filter out - два пакети (оригінальний через ens32) та дублікат, з яким неясно шо робити:
* FILTER-OUT IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 MARK=0x53 * FILTER-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
В общем, якщо у когось є ідеї, як _скопіювати_ локально сгенерований трафік в інший дестинейшен - буду дуже вдячним.
Дякуюю
On 9/15/24 16:04, Volodymyr Litovka wrote:
привіт,
у мене є VPN server (strongswan) та Radius (на віддаленому хості). Мені треба _здублювати_ Radius Accounting на інший хост.
Награвся iptables по саме не хочу й не навчив його цьому трюку. Судячи з доступної документації (напр https://westoahu.hawaii.edu/cyber/forensics-weekly-executive-summmaries/week... ) пакет має пройти через mangle prerouting та nat prerouting за будь-яких умов.
Роблю наступне (див нижче конф iptables) - маркую пакет та розставляю LOG всюди, де він може з'явитись, так от - він попадає в логи в MANGLE-PREROUTING й в MANGLE-INPUT, а от в NAT PREROUTING - ні:
2024-09-15T20:58:28.872788+07:00 vft-dev-edge kernel: MANGLE-PRE IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52 2024-09-15T20:58:28.872869+07:00 vft-dev-edge kernel: MANGLE-INP IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52
причому що я ЩЕ не розумію - судячи з наведеної вище діаграми, там має бути decision "For this host?", так ось в лозі вище 172.16.40.30 - це локальна адреса, а 172.16.40.32 - це remote host, відповідно пакет мав би відмітитись в MANGLE-FORWARD, а не в MANGLE-INPUT.
Шо я роблю не так? Дякую.
*mangle # промаркувати Radius-accounting пакет -A OUTPUT -p udp --dport 1716 -j MARK --set-mark 0x52 # здублювати його на localhost -A OUTPUT -p udp --dport 1716 -j TEE --gateway 127.0.0.1
# перевірити де чувак з'явиться -A PREROUTING -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-PRE " -A INPUT -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-INP " -A FORWARD -p udp --dport 1716 -j LOG --log-prefix "MANGLE-FWD " COMMIT
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p udp --dport 1716 -j LOG --log-prefix "NAT-PRE "
# це NAT для власне VPN'а, він на internet-facing інтерфейсі, залишаю для повноти картини -A POSTROUTING -o ens33 -j MASQUERADE COMMIT
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
Дядя Вова, общєм, пішов я шляхом - взяти за базу ті nft rules, які робить iptables та попрацювати з ними, врешті - здається, запрацювало. Завтра ще перевірю в реальному житті, але table ip mangle { chain mangleOut { type route hook output priority mangle; policy accept; # If it's already marked - change destination / port meta mark 0x01 counter udp dport set 1717 ip daddr set x.x.x.x meta nftrace set 1 # If it's original port - mark packet and duplicate it udp dport 1716 counter meta mark set 0x1 dup to 127.0.0.1 # Log what we have udp dport 1716-1717 counter log prefix "mangleOut " } } де x.x.x.x - адреса ресівера для дублів чесно переписує заголовки та відправляє в два напрямки. Переписування портів дещо спрощує правила - можна матчити порти, а не марки. On 9/15/24 22:39, Volodymyr Litovka wrote:
Ну й вдогонку - iptables вже давно frontend до nftables
Мене дивує, що не працює те, що, згідно документації, має працювати...
On 9/15/24 20:44, Vladimir A. Podgorny wrote:
Вітаю.
А як щодо налаштування двох radacct серверів на джерелі? Мінус необхідність дублювати пакети і правити заголовки по дорозі.
нд, 15 вер. 2024, 21:13 користувач Volodymyr Litovka
пише: Я цей сніпет, звісно, пробував - гуглити вмію :)
Проблема не стільки в тому, щоб зробити дублікат, а в наступному кроці - на destination host висить тулза, яка слухає на своїй IP-адресі. Тому коли я роблю дубль - він доходить до віддаленого хоста, але з оригінальними src/dst ip/port.
Я хотів викрутитись одним хостом, але, здається, шось йде не так, тому розвернув схему з двома хостами (edge ---[radacct]---> aaa) й налаштував aaa повертати radacct назад на edge.
Те, про що я кажу вище, на edge виглядає так -
(1) Це відповідь AAA на оригінальний Rad Acct пакет: IP aaa.1716 > edge.47385: UDP, length 20 (2) А це - тупо копія оригінального RadAcct пакету: *IP edge.47385 > aaa.1716: UDP, length 153 *- вона не змінена й софтінка яка слухає на цю копію, її не бачить, бо network stack її дропає
ну тут я вже завтра повожусь - я колись вже робив таку фігню (саме на nftables, до речі) - переписування заголовків вхідного пакету, щоб він проходив до аппки.
On 9/15/24 19:39, Volodymyr Pidgornyi wrote:
Привіт.
IMHO злізь з мертвої кобили, котрій лишилося жити добре, якщо 1-2 релізи дистрибутивів - вже давно час переїхати на nftables.
iptables
В термінах nftables те, що ти хочеш, буде виглядати якось так:
|table netdev t_dup { chain c_ingress { type filter hook ingress device "lo" priority filter; policy accept; iif lo udp dport 1716 meta mark != 1 meta mark set 1 dup to ens32 udp dport set 1716 } } to, dport, dstaddr etc в другому правилі - підстав свої. | 15.09.24 19:26, Volodymyr Litovka via UANOG:
Re
кароч, стало ясніше й все одно шось не так. По-перше, -j TEE, яке відправляє на localhost, обробляєься в chain OUTPUT, тому в попередній лист можна не вникати, там все неправильно й я переписав правила:
*filter /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "FILTER-OUT " /COMMIT
*nat /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "NAT-OUT " /*# зробити DNAT для того хоста, куди мені треба здублювати трафік *-A OUTPUT -m mark --mark 0x53 -j DNAT --to-destination x.x.x.x COMMIT
*mangle *# здублювати те, що мене цікавить (udp/1716, вихідний порт ens32)* -A OUTPUT -o ens32 -p udp --dport 1716 -j TEE --gateway 127.0.0.1 *# промаркувати здубльоване (localhost) для подальшого DNAT* -A OUTPUT -o lo -p udp --dport 1716 -j MARK --set-mark 0x53 /*# log* -I OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-pre " -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-post " /COMMIT
й тут починається знову цікаве (спойлер - у мене враження, що пакети для localhost обробляються по якомусь іншому ланцюжку) :
два пакети - один оригінальний, один - дублікат:
* MANGLE-OUT-pre IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 * MANGLE-OUT-pre IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
після правил модіфікації - один промаркований, другий ні (as expected)
* MANGLE-OUT-post IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 *MARK=0x53* * MANGLE-OUT-post IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
в NAT попадає тільки ОДИН (немаркований, out=ens32), відповідно DNAT для mark=0x53 не відбувається:
* NAT-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
тому в filter out - два пакети (оригінальний через ens32) та дублікат, з яким неясно шо робити:
* FILTER-OUT IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 MARK=0x53 * FILTER-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
В общем, якщо у когось є ідеї, як _скопіювати_ локально сгенерований трафік в інший дестинейшен - буду дуже вдячним.
Дякуюю
On 9/15/24 16:04, Volodymyr Litovka wrote:
привіт,
у мене є VPN server (strongswan) та Radius (на віддаленому хості). Мені треба _здублювати_ Radius Accounting на інший хост.
Награвся iptables по саме не хочу й не навчив його цьому трюку. Судячи з доступної документації (напр https://westoahu.hawaii.edu/cyber/forensics-weekly-executive-summmaries/week... ) пакет має пройти через mangle prerouting та nat prerouting за будь-яких умов.
Роблю наступне (див нижче конф iptables) - маркую пакет та розставляю LOG всюди, де він може з'явитись, так от - він попадає в логи в MANGLE-PREROUTING й в MANGLE-INPUT, а от в NAT PREROUTING - ні:
2024-09-15T20:58:28.872788+07:00 vft-dev-edge kernel: MANGLE-PRE IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52 2024-09-15T20:58:28.872869+07:00 vft-dev-edge kernel: MANGLE-INP IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52
причому що я ЩЕ не розумію - судячи з наведеної вище діаграми, там має бути decision "For this host?", так ось в лозі вище 172.16.40.30 - це локальна адреса, а 172.16.40.32 - це remote host, відповідно пакет мав би відмітитись в MANGLE-FORWARD, а не в MANGLE-INPUT.
Шо я роблю не так? Дякую.
*mangle # промаркувати Radius-accounting пакет -A OUTPUT -p udp --dport 1716 -j MARK --set-mark 0x52 # здублювати його на localhost -A OUTPUT -p udp --dport 1716 -j TEE --gateway 127.0.0.1
# перевірити де чувак з'явиться -A PREROUTING -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-PRE " -A INPUT -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-INP " -A FORWARD -p udp --dport 1716 -j LOG --log-prefix "MANGLE-FWD " COMMIT
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p udp --dport 1716 -j LOG --log-prefix "NAT-PRE "
# це NAT для власне VPN'а, він на internet-facing інтерфейсі, залишаю для повноти картини -A POSTROUTING -o ens33 -j MASQUERADE COMMIT
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
Вітаю. Я не знаю, який саме дистрибутив крутиш ти (маю підозру, що якусь убунту, але можу і помилятись), але в RHEL-сумісних ситуація наступна: These tools are deprecated in Red Hat Enterprise Linux. They are maintenance only and will not receive new features. New setups should use nft(8). Existing setups should migrate to nft(8) when possible. See ⟨https://red.ht/nft_your_tables⟩ for details. There is also iptables-translate(8)/ip6tables-translate(8) to help with the migration. Тобто вони не врапери поверх nftables, а саме ті старі добрі iptables/ip6tables/ebtables, що і раніше. А от врапером поверх і тих, і інших є firewalld (хай би йому грець). 15.09.24 23:39, Volodymyr Litovka:
Ну й вдогонку - iptables вже давно frontend до nftables
Мене дивує, що не працює те, що, згідно документації, має працювати...
On 9/15/24 20:44, Vladimir A. Podgorny wrote:
Вітаю.
А як щодо налаштування двох radacct серверів на джерелі? Мінус необхідність дублювати пакети і правити заголовки по дорозі.
нд, 15 вер. 2024, 21:13 користувач Volodymyr Litovka
пише: Я цей сніпет, звісно, пробував - гуглити вмію :)
Проблема не стільки в тому, щоб зробити дублікат, а в наступному кроці - на destination host висить тулза, яка слухає на своїй IP-адресі. Тому коли я роблю дубль - він доходить до віддаленого хоста, але з оригінальними src/dst ip/port.
Я хотів викрутитись одним хостом, але, здається, шось йде не так, тому розвернув схему з двома хостами (edge ---[radacct]---> aaa) й налаштував aaa повертати radacct назад на edge.
Те, про що я кажу вище, на edge виглядає так -
(1) Це відповідь AAA на оригінальний Rad Acct пакет: IP aaa.1716 > edge.47385: UDP, length 20 (2) А це - тупо копія оригінального RadAcct пакету: *IP edge.47385 > aaa.1716: UDP, length 153 *- вона не змінена й софтінка яка слухає на цю копію, її не бачить, бо network stack її дропає
ну тут я вже завтра повожусь - я колись вже робив таку фігню (саме на nftables, до речі) - переписування заголовків вхідного пакету, щоб він проходив до аппки.
On 9/15/24 19:39, Volodymyr Pidgornyi wrote:
Привіт.
IMHO злізь з мертвої кобили, котрій лишилося жити добре, якщо 1-2 релізи дистрибутивів - вже давно час переїхати на nftables.
iptables
В термінах nftables те, що ти хочеш, буде виглядати якось так:
|table netdev t_dup { chain c_ingress { type filter hook ingress device "lo" priority filter; policy accept; iif lo udp dport 1716 meta mark != 1 meta mark set 1 dup to ens32 udp dport set 1716 } } to, dport, dstaddr etc в другому правилі - підстав свої. | 15.09.24 19:26, Volodymyr Litovka via UANOG:
Re
кароч, стало ясніше й все одно шось не так. По-перше, -j TEE, яке відправляє на localhost, обробляєься в chain OUTPUT, тому в попередній лист можна не вникати, там все неправильно й я переписав правила:
*filter /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "FILTER-OUT " /COMMIT
*nat /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "NAT-OUT " /*# зробити DNAT для того хоста, куди мені треба здублювати трафік *-A OUTPUT -m mark --mark 0x53 -j DNAT --to-destination x.x.x.x COMMIT
*mangle *# здублювати те, що мене цікавить (udp/1716, вихідний порт ens32)* -A OUTPUT -o ens32 -p udp --dport 1716 -j TEE --gateway 127.0.0.1 *# промаркувати здубльоване (localhost) для подальшого DNAT* -A OUTPUT -o lo -p udp --dport 1716 -j MARK --set-mark 0x53 /*# log* -I OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-pre " -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-post " /COMMIT
й тут починається знову цікаве (спойлер - у мене враження, що пакети для localhost обробляються по якомусь іншому ланцюжку) :
два пакети - один оригінальний, один - дублікат:
* MANGLE-OUT-pre IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 * MANGLE-OUT-pre IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
після правил модіфікації - один промаркований, другий ні (as expected)
* MANGLE-OUT-post IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 *MARK=0x53* * MANGLE-OUT-post IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
в NAT попадає тільки ОДИН (немаркований, out=ens32), відповідно DNAT для mark=0x53 не відбувається:
* NAT-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
тому в filter out - два пакети (оригінальний через ens32) та дублікат, з яким неясно шо робити:
* FILTER-OUT IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 MARK=0x53 * FILTER-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
В общем, якщо у когось є ідеї, як _скопіювати_ локально сгенерований трафік в інший дестинейшен - буду дуже вдячним.
Дякуюю
On 9/15/24 16:04, Volodymyr Litovka wrote:
привіт,
у мене є VPN server (strongswan) та Radius (на віддаленому хості). Мені треба _здублювати_ Radius Accounting на інший хост.
Награвся iptables по саме не хочу й не навчив його цьому трюку. Судячи з доступної документації (напр https://westoahu.hawaii.edu/cyber/forensics-weekly-executive-summmaries/week... ) пакет має пройти через mangle prerouting та nat prerouting за будь-яких умов.
Роблю наступне (див нижче конф iptables) - маркую пакет та розставляю LOG всюди, де він може з'явитись, так от - він попадає в логи в MANGLE-PREROUTING й в MANGLE-INPUT, а от в NAT PREROUTING - ні:
2024-09-15T20:58:28.872788+07:00 vft-dev-edge kernel: MANGLE-PRE IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52 2024-09-15T20:58:28.872869+07:00 vft-dev-edge kernel: MANGLE-INP IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52
причому що я ЩЕ не розумію - судячи з наведеної вище діаграми, там має бути decision "For this host?", так ось в лозі вище 172.16.40.30 - це локальна адреса, а 172.16.40.32 - це remote host, відповідно пакет мав би відмітитись в MANGLE-FORWARD, а не в MANGLE-INPUT.
Шо я роблю не так? Дякую.
*mangle # промаркувати Radius-accounting пакет -A OUTPUT -p udp --dport 1716 -j MARK --set-mark 0x52 # здублювати його на localhost -A OUTPUT -p udp --dport 1716 -j TEE --gateway 127.0.0.1
# перевірити де чувак з'явиться -A PREROUTING -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-PRE " -A INPUT -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-INP " -A FORWARD -p udp --dport 1716 -j LOG --log-prefix "MANGLE-FWD " COMMIT
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p udp --dport 1716 -j LOG --log-prefix "NAT-PRE "
# це NAT для власне VPN'а, він на internet-facing інтерфейсі, залишаю для повноти картини -A POSTROUTING -o ens33 -j MASQUERADE COMMIT
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
Убунта - все, що робиться iptables, може бути переглянуто 'nft list ruleset' - чим я й скористувався врешті: взяв за базу ці правила й розширив їх тим, чого немає в iptables :) On 9/16/24 10:49, Volodymyr O. Pidgornyi wrote:
Вітаю.
Я не знаю, який саме дистрибутив крутиш ти (маю підозру, що якусь убунту, але можу і помилятись), але в RHEL-сумісних ситуація наступна:
These tools are deprecated in Red Hat Enterprise Linux. They are maintenance only and will not receive new features. New setups should use nft(8). Existing setups should migrate to nft(8) when possible. See ⟨https://red.ht/nft_your_tables⟩ for details. There is also iptables-translate(8)/ip6tables-translate(8) to help with the migration.
Тобто вони не врапери поверх nftables, а саме ті старі добрі iptables/ip6tables/ebtables, що і раніше. А от врапером поверх і тих, і інших є firewalld (хай би йому грець).
15.09.24 23:39, Volodymyr Litovka:
Ну й вдогонку - iptables вже давно frontend до nftables
Мене дивує, що не працює те, що, згідно документації, має працювати...
On 9/15/24 20:44, Vladimir A. Podgorny wrote:
Вітаю.
А як щодо налаштування двох radacct серверів на джерелі? Мінус необхідність дублювати пакети і правити заголовки по дорозі.
нд, 15 вер. 2024, 21:13 користувач Volodymyr Litovka
пише: Я цей сніпет, звісно, пробував - гуглити вмію :)
Проблема не стільки в тому, щоб зробити дублікат, а в наступному кроці - на destination host висить тулза, яка слухає на своїй IP-адресі. Тому коли я роблю дубль - він доходить до віддаленого хоста, але з оригінальними src/dst ip/port.
Я хотів викрутитись одним хостом, але, здається, шось йде не так, тому розвернув схему з двома хостами (edge ---[radacct]---> aaa) й налаштував aaa повертати radacct назад на edge.
Те, про що я кажу вище, на edge виглядає так -
(1) Це відповідь AAA на оригінальний Rad Acct пакет: IP aaa.1716 > edge.47385: UDP, length 20 (2) А це - тупо копія оригінального RadAcct пакету: *IP edge.47385 > aaa.1716: UDP, length 153 *- вона не змінена й софтінка яка слухає на цю копію, її не бачить, бо network stack її дропає
ну тут я вже завтра повожусь - я колись вже робив таку фігню (саме на nftables, до речі) - переписування заголовків вхідного пакету, щоб він проходив до аппки.
On 9/15/24 19:39, Volodymyr Pidgornyi wrote:
Привіт.
IMHO злізь з мертвої кобили, котрій лишилося жити добре, якщо 1-2 релізи дистрибутивів - вже давно час переїхати на nftables.
iptables
В термінах nftables те, що ти хочеш, буде виглядати якось так:
|table netdev t_dup { chain c_ingress { type filter hook ingress device "lo" priority filter; policy accept; iif lo udp dport 1716 meta mark != 1 meta mark set 1 dup to ens32 udp dport set 1716 } } to, dport, dstaddr etc в другому правилі - підстав свої. | 15.09.24 19:26, Volodymyr Litovka via UANOG:
Re
кароч, стало ясніше й все одно шось не так. По-перше, -j TEE, яке відправляє на localhost, обробляєься в chain OUTPUT, тому в попередній лист можна не вникати, там все неправильно й я переписав правила:
*filter /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "FILTER-OUT " /COMMIT
*nat /*# log *-A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "NAT-OUT " /*# зробити DNAT для того хоста, куди мені треба здублювати трафік *-A OUTPUT -m mark --mark 0x53 -j DNAT --to-destination x.x.x.x COMMIT
*mangle *# здублювати те, що мене цікавить (udp/1716, вихідний порт ens32)* -A OUTPUT -o ens32 -p udp --dport 1716 -j TEE --gateway 127.0.0.1 *# промаркувати здубльоване (localhost) для подальшого DNAT* -A OUTPUT -o lo -p udp --dport 1716 -j MARK --set-mark 0x53 /*# log* -I OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-pre " -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-post " /COMMIT
й тут починається знову цікаве (спойлер - у мене враження, що пакети для localhost обробляються по якомусь іншому ланцюжку) :
два пакети - один оригінальний, один - дублікат:
* MANGLE-OUT-pre IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 * MANGLE-OUT-pre IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
після правил модіфікації - один промаркований, другий ні (as expected)
* MANGLE-OUT-post IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 *MARK=0x53* * MANGLE-OUT-post IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
в NAT попадає тільки ОДИН (немаркований, out=ens32), відповідно DNAT для mark=0x53 не відбувається:
* NAT-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
тому в filter out - два пакети (оригінальний через ens32) та дублікат, з яким неясно шо робити:
* FILTER-OUT IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 MARK=0x53 * FILTER-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
В общем, якщо у когось є ідеї, як _скопіювати_ локально сгенерований трафік в інший дестинейшен - буду дуже вдячним.
Дякуюю
On 9/15/24 16:04, Volodymyr Litovka wrote:
привіт,
у мене є VPN server (strongswan) та Radius (на віддаленому хості). Мені треба _здублювати_ Radius Accounting на інший хост.
Награвся iptables по саме не хочу й не навчив його цьому трюку. Судячи з доступної документації (напр https://westoahu.hawaii.edu/cyber/forensics-weekly-executive-summmaries/week... ) пакет має пройти через mangle prerouting та nat prerouting за будь-яких умов.
Роблю наступне (див нижче конф iptables) - маркую пакет та розставляю LOG всюди, де він може з'явитись, так от - він попадає в логи в MANGLE-PREROUTING й в MANGLE-INPUT, а от в NAT PREROUTING - ні:
2024-09-15T20:58:28.872788+07:00 vft-dev-edge kernel: MANGLE-PRE IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52 2024-09-15T20:58:28.872869+07:00 vft-dev-edge kernel: MANGLE-INP IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52
причому що я ЩЕ не розумію - судячи з наведеної вище діаграми, там має бути decision "For this host?", так ось в лозі вище 172.16.40.30 - це локальна адреса, а 172.16.40.32 - це remote host, відповідно пакет мав би відмітитись в MANGLE-FORWARD, а не в MANGLE-INPUT.
Шо я роблю не так? Дякую.
*mangle # промаркувати Radius-accounting пакет -A OUTPUT -p udp --dport 1716 -j MARK --set-mark 0x52 # здублювати його на localhost -A OUTPUT -p udp --dport 1716 -j TEE --gateway 127.0.0.1
# перевірити де чувак з'явиться -A PREROUTING -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-PRE " -A INPUT -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-INP " -A FORWARD -p udp --dport 1716 -j LOG --log-prefix "MANGLE-FWD " COMMIT
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p udp --dport 1716 -j LOG --log-prefix "NAT-PRE "
# це NAT для власне VPN'а, він на internet-facing інтерфейсі, залишаю для повноти картини -A POSTROUTING -o ens33 -j MASQUERADE COMMIT
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
_______________________________________________ UANOG mailing list --uanog@uanog.one To unsubscribe send an email touanog-leave@uanog.one
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
Ні,
Тобто вони не врапери поверх nftables, а саме ті старі добрі iptables/ip6tables/ebtables, що і раніше.
але в RHEL-сумісних ситуація наступна: These tools are deprecated in Red Hat Enterprise Linux. They are
setups should use nft(8). Existing setups should migrate to nft(8) when
Старий / добрий / ламповий iptables був в rhel-7 / ubuntu-16.04 / ubuntu-18.04 / ubuntu-20.04: rhel-7# iptables -V iptables v1.4.21 ubuntu-16.04# iptables -V iptables v1.6.0 ubuntu-18.04# iptables -V iptables v1.6.1 ubuntu-20.04# iptables -V iptables v1.8.4 (legacy) --- В більш нових дистрибутивах як раз використовується враппер в nftables, але бінарник називається так само iptables: rhel-8# iptables -V iptables v1.8.5 (nf_tables) rhel-9# iptables -V iptables v1.8.10 (nf_tables) ubuntu-22.04# iptables -V iptables v1.8.7 (nf_tables) ubuntu-24.04# iptables -V iptables v1.8.10 (nf_tables) iptables: The iptables utility on Red Hat Enterprise Linux uses the nf_tables kernel API instead of the legacy back end. The nf_tables API provides backward compatibility so that scripts that use iptables commands still work on Red Hat Enterprise Linux. For new firewall scripts, Red Hat recommends to use nftables. https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/con... maintenance only and will not receive new features. New possible. Це мається на увазі що вони збираються видалити цей враппер (пакет iptables-nft, в якому лежить iptables) в майбутніх версіях, та користувачі вимушені будуть мігрувати на nft.
А от врапером поверх і тих, і інших є firewalld (хай би йому грець).
Це зовсім інший лісапед, який часто створює більше проблем ніж вирішує...
--
Best regards,
Mykola
On Mon, Sep 16, 2024 at 11:49 AM Volodymyr O. Pidgornyi
Вітаю.
Я не знаю, який саме дистрибутив крутиш ти (маю підозру, що якусь убунту, але можу і помилятись), але в RHEL-сумісних ситуація наступна:
These tools are deprecated in Red Hat Enterprise Linux. They are maintenance only and will not receive new features. New setups should use nft(8). Existing setups should migrate to nft(8) when possible. See ⟨https://red.ht/nft_your_tables⟩ for details. There is also iptables-translate(8)/ip6tables-translate(8) to help with the migration.
Тобто вони не врапери поверх nftables, а саме ті старі добрі iptables/ip6tables/ebtables, що і раніше. А от врапером поверх і тих, і інших є firewalld (хай би йому грець).
15.09.24 23:39, Volodymyr Litovka:
Ну й вдогонку - iptables вже давно frontend до nftables
Мене дивує, що не працює те, що, згідно документації, має працювати...
On 9/15/24 20:44, Vladimir A. Podgorny wrote:
Вітаю.
А як щодо налаштування двох radacct серверів на джерелі? Мінус необхідність дублювати пакети і правити заголовки по дорозі.
нд, 15 вер. 2024, 21:13 користувач Volodymyr Litovka
пише: Я цей сніпет, звісно, пробував - гуглити вмію :)
Проблема не стільки в тому, щоб зробити дублікат, а в наступному кроці - на destination host висить тулза, яка слухає на своїй IP-адресі. Тому коли я роблю дубль - він доходить до віддаленого хоста, але з оригінальними src/dst ip/port.
Я хотів викрутитись одним хостом, але, здається, шось йде не так, тому розвернув схему з двома хостами (edge ---[radacct]---> aaa) й налаштував aaa повертати radacct назад на edge.
Те, про що я кажу вище, на edge виглядає так -
(1) Це відповідь AAA на оригінальний Rad Acct пакет: IP aaa.1716 > edge.47385: UDP, length 20 (2) А це - тупо копія оригінального RadAcct пакету: *IP edge.47385 > aaa.1716: UDP, length 153 *- вона не змінена й софтінка яка слухає на цю копію, її не бачить, бо network stack її дропає
ну тут я вже завтра повожусь - я колись вже робив таку фігню (саме на nftables, до речі) - переписування заголовків вхідного пакету, щоб він проходив до аппки.
On 9/15/24 19:39, Volodymyr Pidgornyi wrote:
Привіт.
IMHO злізь з мертвої кобили, котрій лишилося жити добре, якщо 1-2 релізи дистрибутивів - вже давно час переїхати на nftables.
iptables
В термінах nftables те, що ти хочеш, буде виглядати якось так:
table netdev t_dup { chain c_ingress { type filter hook ingress device "lo" priority filter; policy accept; iif lo udp dport 1716 meta mark != 1 meta mark set 1 dup to ens32 udp dport set 1716 } }
to, dport, dstaddr etc в другому правилі - підстав свої.
15.09.24 19:26, Volodymyr Litovka via UANOG:
Re
кароч, стало ясніше й все одно шось не так. По-перше, -j TEE, яке відправляє на localhost, обробляєься в chain OUTPUT, тому в попередній лист можна не вникати, там все неправильно й я переписав правила:
*filter
*# log -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "FILTER-OUT " * COMMIT
*nat
*# log -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "NAT-OUT " * *# зробити DNAT для того хоста, куди мені треба здублювати трафік *-A OUTPUT -m mark --mark 0x53 -j DNAT --to-destination x.x.x.x COMMIT
*mangle *# здублювати те, що мене цікавить (udp/1716, вихідний порт ens32)* -A OUTPUT -o ens32 -p udp --dport 1716 -j TEE --gateway 127.0.0.1 *# промаркувати здубльоване (localhost) для подальшого DNAT* -A OUTPUT -o lo -p udp --dport 1716 -j MARK --set-mark 0x53
*# log -I OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-pre " -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-post " * COMMIT
й тут починається знову цікаве (спойлер - у мене враження, що пакети для localhost обробляються по якомусь іншому ланцюжку) :
два пакети - один оригінальний, один - дублікат:
* MANGLE-OUT-pre IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 * MANGLE-OUT-pre IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
після правил модіфікації - один промаркований, другий ні (as expected)
* MANGLE-OUT-post IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 *MARK=0x53* * MANGLE-OUT-post IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
в NAT попадає тільки ОДИН (немаркований, out=ens32), відповідно DNAT для mark=0x53 не відбувається:
* NAT-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
тому в filter out - два пакети (оригінальний через ens32) та дублікат, з яким неясно шо робити:
* FILTER-OUT IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 MARK=0x53 * FILTER-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
В общем, якщо у когось є ідеї, як _скопіювати_ локально сгенерований трафік в інший дестинейшен - буду дуже вдячним.
Дякуюю
On 9/15/24 16:04, Volodymyr Litovka wrote:
привіт,
у мене є VPN server (strongswan) та Radius (на віддаленому хості). Мені треба _здублювати_ Radius Accounting на інший хост.
Награвся iptables по саме не хочу й не навчив його цьому трюку. Судячи з доступної документації (напр https://westoahu.hawaii.edu/cyber/forensics-weekly-executive-summmaries/week... ) пакет має пройти через mangle prerouting та nat prerouting за будь-яких умов.
Роблю наступне (див нижче конф iptables) - маркую пакет та розставляю LOG всюди, де він може з'явитись, так от - він попадає в логи в MANGLE-PREROUTING й в MANGLE-INPUT, а от в NAT PREROUTING - ні:
2024-09-15T20:58:28.872788+07:00 vft-dev-edge kernel: MANGLE-PRE IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52 2024-09-15T20:58:28.872869+07:00 vft-dev-edge kernel: MANGLE-INP IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52
причому що я ЩЕ не розумію - судячи з наведеної вище діаграми, там має бути decision "For this host?", так ось в лозі вище 172.16.40.30 - це локальна адреса, а 172.16.40.32 - це remote host, відповідно пакет мав би відмітитись в MANGLE-FORWARD, а не в MANGLE-INPUT.
Шо я роблю не так? Дякую.
*mangle # промаркувати Radius-accounting пакет -A OUTPUT -p udp --dport 1716 -j MARK --set-mark 0x52 # здублювати його на localhost -A OUTPUT -p udp --dport 1716 -j TEE --gateway 127.0.0.1
# перевірити де чувак з'явиться -A PREROUTING -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-PRE " -A INPUT -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-INP " -A FORWARD -p udp --dport 1716 -j LOG --log-prefix "MANGLE-FWD " COMMIT
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p udp --dport 1716 -j LOG --log-prefix "NAT-PRE "
# це NAT для власне VPN'а, він на internet-facing інтерфейсі, залишаю для повноти картини -A POSTROUTING -o ens33 -j MASQUERADE COMMIT
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ UANOG mailing list -- uanog@uanog.one To unsubscribe send an email to uanog-leave@uanog.one
_______________________________________________ UANOG mailing list -- uanog@uanog.one To unsubscribe send an email to uanog-leave@uanog.one
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ UANOG mailing list -- uanog@uanog.one To unsubscribe send an email to uanog-leave@uanog.one
Привіт
Якщо погуглити, то всі рекомендації зводяться до одного правила iptables:
iptables -t mangle -A PREROUTING -p udp --dport 1716 -j TEE --gateway x.x.x.x
Також є згадка що --gateway повинен знаходитись в тій же мережі.
Сам нічого не перевіряв.
--
Best regards,
Mykola
On Sun, Sep 15, 2024 at 7:26 PM Volodymyr Litovka via UANOG
Re
кароч, стало ясніше й все одно шось не так. По-перше, -j TEE, яке відправляє на localhost, обробляєься в chain OUTPUT, тому в попередній лист можна не вникати, там все неправильно й я переписав правила:
*filter
*# log -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "FILTER-OUT " * COMMIT
*nat
*# log -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "NAT-OUT " * *# зробити DNAT для того хоста, куди мені треба здублювати трафік *-A OUTPUT -m mark --mark 0x53 -j DNAT --to-destination x.x.x.x COMMIT
*mangle *# здублювати те, що мене цікавить (udp/1716, вихідний порт ens32)* -A OUTPUT -o ens32 -p udp --dport 1716 -j TEE --gateway 127.0.0.1 *# промаркувати здубльоване (localhost) для подальшого DNAT* -A OUTPUT -o lo -p udp --dport 1716 -j MARK --set-mark 0x53
*# log -I OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-pre " -A OUTPUT -p udp --dport 1716 -j LOG --log-prefix "MANGLE-OUT-post " * COMMIT
й тут починається знову цікаве (спойлер - у мене враження, що пакети для localhost обробляються по якомусь іншому ланцюжку) :
два пакети - один оригінальний, один - дублікат:
* MANGLE-OUT-pre IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 * MANGLE-OUT-pre IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
після правил модіфікації - один промаркований, другий ні (as expected)
* MANGLE-OUT-post IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 *MARK=0x53* * MANGLE-OUT-post IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
в NAT попадає тільки ОДИН (немаркований, out=ens32), відповідно DNAT для mark=0x53 не відбувається:
* NAT-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
тому в filter out - два пакети (оригінальний через ens32) та дублікат, з яким неясно шо робити:
* FILTER-OUT IN= OUT=lo SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161 MARK=0x53 * FILTER-OUT IN= OUT=ens32 SRC=172.16.40.30 DST=172.16.40.32 LEN=181 TOS=0x00 PREC=0x00 TTL=64 ID=17851 DF PROTO=UDP SPT=49242 DPT=1716 LEN=161
В общем, якщо у когось є ідеї, як _скопіювати_ локально сгенерований трафік в інший дестинейшен - буду дуже вдячним.
Дякуюю
On 9/15/24 16:04, Volodymyr Litovka wrote:
привіт,
у мене є VPN server (strongswan) та Radius (на віддаленому хості). Мені треба _здублювати_ Radius Accounting на інший хост.
Награвся iptables по саме не хочу й не навчив його цьому трюку. Судячи з доступної документації (напр https://westoahu.hawaii.edu/cyber/forensics-weekly-executive-summmaries/week... ) пакет має пройти через mangle prerouting та nat prerouting за будь-яких умов.
Роблю наступне (див нижче конф iptables) - маркую пакет та розставляю LOG всюди, де він може з'явитись, так от - він попадає в логи в MANGLE-PREROUTING й в MANGLE-INPUT, а от в NAT PREROUTING - ні:
2024-09-15T20:58:28.872788+07:00 vft-dev-edge kernel: MANGLE-PRE IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52 2024-09-15T20:58:28.872869+07:00 vft-dev-edge kernel: MANGLE-INP IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=172.16.40.30 DST=172.16.40.32 LEN=211 TOS=0x00 PREC=0x00 TTL=64 ID=38173 DF PROTO=UDP SPT=56012 DPT=1716 LEN=191 MARK=0x52
причому що я ЩЕ не розумію - судячи з наведеної вище діаграми, там має бути decision "For this host?", так ось в лозі вище 172.16.40.30 - це локальна адреса, а 172.16.40.32 - це remote host, відповідно пакет мав би відмітитись в MANGLE-FORWARD, а не в MANGLE-INPUT.
Шо я роблю не так? Дякую.
*mangle # промаркувати Radius-accounting пакет -A OUTPUT -p udp --dport 1716 -j MARK --set-mark 0x52 # здублювати його на localhost -A OUTPUT -p udp --dport 1716 -j TEE --gateway 127.0.0.1
# перевірити де чувак з'явиться -A PREROUTING -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-PRE " -A INPUT -i lo -p udp --dport 1716 -j LOG --log-prefix "MANGLE-INP " -A FORWARD -p udp --dport 1716 -j LOG --log-prefix "MANGLE-FWD " COMMIT
*nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p udp --dport 1716 -j LOG --log-prefix "NAT-PRE "
# це NAT для власне VPN'а, він на internet-facing інтерфейсі, залишаю для повноти картини -A POSTROUTING -o ens33 -j MASQUERADE COMMIT
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ UANOG mailing list -- uanog@uanog.one To unsubscribe send an email to uanog-leave@uanog.one
participants (5)
-
Mykola Ulianytskyi
-
Vladimir A. Podgorny
-
Volodymyr Litovka
-
Volodymyr O. Pidgornyi
-
Volodymyr Pidgornyi