Portál AbcLinuxu, 6. května 2025 14:19
# Vypnuti conntrack tabulky na prochazejici pakety *raw :PREROUTING ACCEPT [0:0] -A PREROUTING -d 10.0.0.1/32 -j ACCEPT -A PREROUTING -j CT --notrack COMMITTo je sice funkční, ale vůbec se mi to nelíbí. Ten stroj má stovky vlanů a na každym jinou adresu. Musím je teda mít všechny vyjmenovaný jako ACCEPT, aby nespadly do NOTRACKu. To mi připadá hloupý a nepřehledný. Nedá se prostě nějak vypnout conntrack pro FORWARD, aniž by se tím vypnul pro INPUT? Pro OUTPUT se to dá nastavovat zvlášť, pro INPUT jsem to ale bohužel zatím nevyřešil. A tak všechny příchozí packety zkončí v conntracku ať už směřují do FORWARDu nebo do INPUTU.
-A PREROUTING -d LOCAL -j ACCEPT
kde by "-d LOCAL" matchovalo vsechny packety co maj v dst nekterou z adres, ktery jsou na lokalnich interfacech.
-A PREROUTING -m addrtype --src-type LOCAL -j ACCEPT -A PREROUTING -m addrtype --dst-type LOCAL -j ACCEPT
--limit-iface-in
nebo --limit-iface-out
. Ale znamená to route lookup pro každý paket, což na stroji s takovým množstvím adres nemusí být moc efektivní (ale samozřejmě pořád mnohem efektivnější než chain se stovkami pravidel).
Manuálová stránka iptables-extensions(8)
je dost neurčitá:
This module matches packets based on their address type. Address types are used within the kernel networking stack and categorize addresses into various groups. The exact definition of that group depends on the specific layer three protocol.
…
LOCAL
a local address
To je skutečně dost nejednoznačné. Při troše fantazie se to, že jde o route lookup, dá uhodnout z toho, že další možné hodnoty jsou UNICAST
, MULTICAST
, BROADCAST
, ANYCAST
, BLACKHOLE
, UNREACHABLE
, PROHIBIT
, THROW
, NAT
a XRESOLVE
(poslední tři zcela bez popisu). Ale stejně jsem se radši podíval do zdrojáku, abych si byl jistý.
Přesně k tomuhle slouží ipset:
ipset create myaddr hash:ip ipset add myaddr 10.0.0.1 ... (další stovky řádků s ostatními adresami) iptables -A PREROUTING -m set --match-set myaddr dst -j ACCEPT
Pokud se všechny ty adresy vejdou do jednoho /16 rozsahu, bude efektivnější použít (např.)
ipset create myaddr bitmap:ip range 10.0.0.0/16
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.