28. august 2006 - 20:02Der er
4 kommentarer og 1 løsning
iptables - router
Hej
Jeg har lagt en ny firmware på min router, som er bygget over linux, og bruger derfor iptables. Jeg har lavet NAT entries, og de virker fint ude fra, men hvis jeg forsøger fra LAN'et af, virker det ikke.
Det her stod allerede i filen:
#!/bin/sh
. /etc/functions.sh WAN=$(nvram get wan_ifname) LAN=$(nvram get lan_ifname)
## CLEAR TABLES for T in filter nat; do iptables -t $T -F iptables -t $T -X done
### INPUT ### (connections with the router as destination)
# base case iptables -P INPUT DROP iptables -A INPUT -m state --state INVALID -j DROP iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp --tcp-flags SYN SYN --tcp-option \! 2 -j DROP
# # insert accept rule or to jump to new accept-check table here # iptables -A INPUT -j input_rule
# allow iptables -A INPUT -i \! $WAN -j ACCEPT # allow from lan/wifi interfaces iptables -A INPUT -p icmp -j ACCEPT # allow ICMP iptables -A INPUT -p gre -j ACCEPT # allow GRE
# reject (what to do with anything not allowed earlier) iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable
### OUTPUT ### (connections with the router as source)
# base case iptables -P OUTPUT DROP iptables -A OUTPUT -m state --state INVALID -j DROP iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# # insert accept rule or to jump to new accept-check table here # iptables -A OUTPUT -j output_rule
# allow iptables -A OUTPUT -j ACCEPT #allow everything out
# reject (what to do with anything not allowed earlier) iptables -A OUTPUT -p tcp -j REJECT --reject-with tcp-reset iptables -A OUTPUT -j REJECT --reject-with icmp-port-unreachable
### FORWARDING ### (connections routed through the router)
# base case iptables -P FORWARD DROP iptables -A FORWARD -m state --state INVALID -j DROP iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
# # insert accept rule or to jump to new accept-check table here # iptables -A FORWARD -j forwarding_rule
# allow iptables -A FORWARD -i br0 -o br0 -j ACCEPT iptables -A FORWARD -i $LAN -o $WAN -j ACCEPT
# reject (what to do with anything not allowed earlier) # uses the default -P DROP
### MASQ iptables -t nat -A PREROUTING -j prerouting_rule iptables -t nat -A POSTROUTING -j postrouting_rule iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
Jeg har så tilføjet flg. i bunden: iptables -A FORWARD -j ACCEPT -p tcp -m multiport --dport 21,80,3389 iptables -t nat -A PREROUTING -i $WAN -p tcp -m multiport --dport 21,80,3389 -j DNAT --to 192.168.1.2
Er der fejl i min NAT, eller skal der fjernes/tilføjes noget andet?
iptables -A FORWARD -j forwarding_rule iptables -t nat -A PREROUTING -j prerouting_rule iptables -t nat -A POSTROUTING -j postrouting_rule
Men det fremgår ikke noe sted i scriptet over at de aktuelle regelsettene blir gitt noe innhold. Altså sendes trafikken til tomme regelsett. (empty rule stacks).
Angir ikke dette en bridge (tror det ..) ?
iptables -A FORWARD -i br0 -o br0 -j ACCEPT
Og så kommer:
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
Man kan vel pr definisjon ikke bruke masquerade sammen med en bridge ?? (Med mindre dette skjer på en litt spesiell måte ..)
Synes ikke det ser ut som om tingene henger helt sammen.. (Ikke for å være nesevis ..)
Hvor kommer originalen fra ? ER det snakk om en to port Linux router ? (I teorien så kunne et jo være en router som også inneholder en bridge ..)
Se det blir noe helt annet. Kunne ikke få det som står over til å stemme med en alminnelig 2 port eller 3 port router.
Det som vel ellers også må være saken, det er at det scriptet som står over ikke kan være hele konfigureringsscriptet, men bare en del av et hele. Jeg ville tro at det da finnes flere muliggens selvstendige script eller konfigureringsregler som setter opp firewallen som helhet.
Tilbake til det opprinnelige spørsmål .. "Skal lige tilføjes at det virker hvis jeg bruger 192.168.1.2, men ikke hvis jeg bruger domæne.dk" .. dette er jo typisk hvis dns trafikken ikke slipper gjennom, dvs først og fremst udp port 53 og muligvis tcp port 53. Det kan jo testes som et eksperiment.
Ellers så tviler jeg på at det er rette måten å gjøre tingene på, å føye til konfigureringskode til slutten av filen, slik som over. Mener at det ser ut som om scriptet over ikke er komplett, og at det dreier seg om konfigureringsregler som skal gå inn i en helhet i forhold til andre regler. Uten et overblikk over denne helheten så går det måske ikke helt bra å gjøre for mange endringer.
Hva slags firewall dreier det seg om ? Det skulle ikke være slik at den har et grafisk eller web basert gresesnitt som genererer ut de reglene som man ikke kan lese ut av scriptet over ?
Det som ser ut til å være saken det er at det genereres flere chains eller rule stacs som også er i bruk for filtrering. Samtidig så finnes det ikke noen angivelse av hvilke rules som ligger i disse "rules stacs". Altså kan scriptet ikke være komplett, eller det spiller eventuelt sammen med andre scripts.
Ganske interessant "case" forresten. Det skulle vært interessant å sett hele konfigureringen .. (Fordi dette godt kan lages ved hjelp av standard Linux + PC + 5 vanlige nettverkskort + 1 trådløst kort.)
Ellers så kan jo det med udp/tcp port 53 testes bare for å få det eventuelt til å kjøre ..
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.