rp_filter versus snat (for kernel hackers)
Rybarik, Michal
mrybarik na tronet.sk
Pondělí Prosinec 22 17:21:26 CET 2003
hello all,
mam podozrenie ze v kerneli nie je nieco s kostolnym poriadkom. skor nez
zacnem otravovat na vyssich miestach, hodte na to prosim oko, co si o tom
myslite vy.
situacia zjednodusene:
stroj 10.65.2.20 v LAN pinga host na internete (napr. 217.67.20.139).
ping prechadza mojim routerom (equinox), tam sa ma cez SNAT prelozit
na 10.1.9.20, prechadza druhou desiatkovou sietou (nie mojou), preklada
sa za verejnu IP-cku a ide internetom. vygeneruje sa reply, De-SNATuje
sa do prvej desiatkovej (cudzej) siete, prichadza na moj ruter (equinox),
tu by sa mal opat de-SNATovat a poslat klientovi. malo by to teda vyzerat
nejak takto (cesta icmp echo reply cez moj router na koncovy stroj):
Dec 22 16:55:35 equinox kernel: mangle-PREROUTING-eth0 IN=eth0 OUT=
MAC=00:06:29:b0:1b:22:00:50:fc:e7:d0:86:08:00 SRC=217.67.20.139
DST=10.1.9.20 LEN=84 TOS=0x00 PREC=0x00 TTL=117 ID=27706 PROTO=ICMP
TYPE=0 CODE=0 ID=8194 SEQ=0
Dec 22 16:55:35 equinox kernel: mangle-FORWARD-eth0 IN=eth0 OUT=eth2
SRC=217.67.20.139 DST=10.65.2.20 LEN=84 TOS=0x00 PREC=0x00 TTL=116
ID=27706 PROTO=ICMP TYPE=0 CODE=0 ID=8194 SEQ=0
Dec 22 16:55:35 equinox kernel: filter-FORWARD-eth0 IN=eth0 OUT=eth2
SRC=217.67.20.139 DST=10.65.2.20 LEN=84 TOS=0x00 PREC=0x00 TTL=116
ID=27706 PROTO=ICMP TYPE=0 CODE=0 ID=8194 SEQ=0
paket vchadza interfacom eth0. v mangle-PREROUTING je cielova IP este z
cudzej desiatkovej siete. v mangle-FORWARD je uz prelozena na moju desiatkovu
IP a koretne sa doruci.
takto to funguje, ked mam nastavenu default GW smerom na eth0. ked si
nastavim default gw na iny interface, a na eth0 posielam icmp echo requesty cez
iproute2 rule (source routing), pokasle sa to:
Dec 22 16:49:49 equinox kernel: mangle-PREROUTING-eth0 IN=eth0 OUT=
MAC=00:06:29:b0:1b:22:00:50:fc:e7:d0:86:08:00 SRC=217.67.20.139
DST=10.1.9.20 LEN=84 TOS=0x00 PREC=0x00 TTL=117 ID=35198 PROTO=ICMP
TYPE=0 CODE=0 ID=7938 SEQ=0
Dec 22 16:49:49 equinox kernel: martian source 10.65.2.20 from 217.67.20.139, on dev eth0
v prvom kroku je este vsetko OK. v druhom kroku je paket zahodeny, co je
IMHO zle. podla logu sudim ze sa najprv spravil De-SNAT a potom sa uplatnil
rp_filter. cielova ip-cka uz nezodpoveda interfacu ktorym paket prisiel, a je
vyhlaseny za martana. sudim ze by to malo byt naopak, najprv by sa mal filtrovat
a az potom De-SNATovat. zaujimavy a pre mna nepochopitelny je vplyv default
gateway na tieto operacie... je tu niekto natolko ostrielany aby vedel povedat,
kde je problem?
dakujem vsetkym
michal rybarik
Další informace o konferenci Linux