Portál AbcLinuxu, 1. listopadu 2025 04:34
Zdravim, hlavne linux komunitu.
Obraciam sa na vas s prosbou o pomoc pri rieseni hlavolamu zvaneho IPTABLES.
Ja sam som z iptables-u dost mimo. Uz par krat som sa ho pokusal pochopit
no nikdy som nepresiel za ciaru zaciatocnika-amatera.
Bohuzial to co chcem vyriesit bude vyzadovat viac nez som sa kedy mohol
naucit a teda popis problemu:
------------------------------------------------------------------------
Predstavte si T-Com Cisco router pripojeny k eth1 na Linux-Debian serveri.
Predstavte si obrovsku skolsku siet zo (cca) 70 PC, preswitchovanu k
jednemu kabliku, ktory je pripojeny do toho isteho servera, do sietovej
karty eth0.
Na premostenie tychto dvoch sieti (sieti z Cisca a skolskej sieti)
pouzivam nasledovny skript:
iptables --flush # Flush all the rules in filter and nat tables
iptables --table nat --flush
iptables --delete-chain # Delete all chains that are not in default filter
and nat table
iptables --table nat --delete-chain
# Set up IP FORWARDing and Masquerading
iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
iptables --append FORWARD --in-interface eth0 -j ACCEPT
echo "1" >/proc/sys/net/ipv4/ip_forward
Tato cast skriptiku funguje dokonale. K tomu nie je co dodat.
Dnes, som pripojil do nasej lokalnej siete (t.j. za serverom) skolsky
internat. Po dlho-tyzdnovych prosbach sme obyvatelom skolskeho internatu
umoznili zakupit WiFi router na ktory sa par z nich pripaja laptopom a
pouzivaju net vo svojom volnom case priamo zo svojej izby. Wifi router ma
IP adresu 10.0.0.3 a okrem mnozstva upozorneni chcem spravit monitoring
prietoku dat na IP adresu 10.0.0.3. Znova som siahol po IPTABLESe a
skript som doplnil:
-----------------------------------------------------------------
iptables -N segment-A
iptables -A FORWARD -d 10.0.0.0/26 -j segment-A
iptables -A FORWARD -s 10.0.0.0/26 -j segment-A
iptables -A segment-A -d 10.0.0.3
iptables -A segment-A -s 10.0.0.3
------------------------------------------------------------------
Uspech je ale len polovicny. Po napisani prikazu:
# iptables -L -v -n
Chain FORWARD (policy ACCEPT 10M packets, 12G bytes)
pkts bytes target prot opt in out source
destination
17977 2236K ACCEPT 0 -- eth0 * 0.0.0.0/0 0.0.0.0/0
23186 22M segment-A 0 -- * * 0.0.0.0/0
10.0.0.0/26
0 0 segment-A 0 -- * * 10.0.0.0/26 0.0.0.0/0
Chain segment-A (2 references)
pkts bytes target prot opt in out source
destination
20194 18M 0 -- * * 0.0.0.0/0 10.0.0.3
0 0 0 -- * * 10.0.0.3 0.0.0.0/0
-----------------------------------------------------------------
Ako vidite z vypisu, dobre sa pocitaju DOWNLOADnute data.
Ale VOBEC sa nepocitaju tie UPLOADNUTE.
Uz nad tym sedim 4 hodiny a neviem na nic prist. Mozno mi nieco
uniklo/unika, mozno som len nieco zle pochopil/napisal/spravil/nespravil.
Mohol by mi niekto skusenejsi poradit kde robim chybu?
Dakujem za kazdu radu.
J.
Máte to trochu pomotané.
iptables --append FORWARD --in-interface eth0 -j ACCEPT
Řetězec FORWARD má policy (implicitní závěrečné pravidlo) ACCEPT. Takže znovu povolovat vstup packetů z eth0 je zbytečné.
S tím souvisí váš problém. Jak je vidět zpořadí pravidel ve FORWARD
# iptables -L -v -n
Chain FORWARD (policy ACCEPT 10M packets, 12G bytes)
pkts bytes target prot opt in out source
destination
17977 2236K ACCEPT 0 -- eth0 * 0.0.0.0/0 0.0.0.0/0
23186 22M segment-A 0 -- * * 0.0.0.0/0
10.0.0.0/26
0 0 segment-A 0 -- * * 10.0.0.0/26 0.0.0.0/0
veškerý provoz z eth0, ve kterém jsou i packety se zdrojovou adresou 10.0.0.0/26, se zpravuje hned prvním pravidlem a tudíž se takové packety k dalším pravidlům už nedostanou.
Doporučuji smazat první pravidlo z FORWARD.
Dále doporučuji si nastudovat, které cíle ukončují procházení tabulek (prakticky všechny) a které nikoliv (přesměrování do jiného řetězce, LOG, NFLOG, ULOG, RETURN).
Dakujem, vyskusam.
Chcem sa este raz podakovat. Vasa poznamka bola spravna a bol to ten problem co som mal.
Neuvedomil som si, ze na "poradi pravidiel zalezi".
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.