[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

RE: Trixa med ipchains...



Jag var i samma dilemma så jag valde att "outsourcea" min dns till loopia & sen satte jag upp en interndns som sköter mitt svarta nät. Det fungerar bra för mig då jag väldigt sällan skaffar ny domän eller ändrar i dns'en. Men det borde ju fungera ifall du sätter upp en interndns och sedan forwardar allt som inte ska till ihse.net till din yttre dns på NSLU2.

//-Job

-----Original Message-----
From: Magnus Ihse Bursie [mailto:magnus@ihse.net] 
Sent: den 3 augusti 2008 15:06
To: debian-user-swedish@lists.debian.org
Subject: Trixa med ipchains...

Jag har följande scenario:
 * Ett LAN med ett antal datorer och gadgets på
 * En NSLU2 som kör Debian och som agerar brandvägg/router (och dessutom 
DNS-/DHCP-server etc, men det är inte relevant nu)
 * En domän (ihse.net) där jag har skapat adresser för specifika 
tjänster (t.ex. wiki.ihse.net, mail.ihse.net).
 * Jag gör port forwardning från min NSLU2 (som heter Jana) på t.ex. 
port 80 och 443 till en mer kraftfull dator inne på nätet (som heter 
Vesta) som har en Apache.
 * På Vesta har jag konfigurerat upp virtuella servrar, så att man 
kommer till webbmail om man surfar till mail.ihse.net och en wiki för 
wiki.ihse.net.
 * Dessa virtuella hostar har i DNS:en samma IP-adress, nämligen min 
externa IP-adress.

Resultatet av denna konfiguration är att det går alldeles utmärkt att 
sitta nånstans på Internet och komma åt olika tjänster på mail.ihse.net 
och wiki.ihse.net.

Men.

Det går inte att komma åt tjänsterna på insidan av LAN:et. Eftersom 
wiki.ihse.net resolverar till min externa adress, kommer anropet från 
insidan av LAN:et att riktas till Jana (routern). Den ser att anropet 
kommer från insidan av LAN:et och försöker inte göra någon port 
forwarding. Istället får jag reda på att ingen lyssnar på port 80 på den 
adressen.

Så, hur löser man detta? Jag har hittills gjort så att jag fuskat, och 
lagt in en rad för wiki.ihse.net som resolverar till Vesta:s adress i 
/etc/hosts på alla maskiner på LAN:et. Det har fungerat men känts lite 
hackigt. Nu har jag precis skaffat en Nokia N810 (grymt kul pryl, f.ö.! 
:-)) och min fru en laptop, och då blev det plötsligt uppenbart hur 
otillräcklig en sådan lösning är -- eftersom WLAN:et är på insidan av 
routern, så måste man ändra i /etc/hosts varje gång man tar 
N810:an/laptopen innanför eller utanför lägenheten. Det duger inte.

Så jag är tillbaka nu på att försöka lösa problemet på ett bättre sätt. 
Men fasen vet hur. Två idéer:
1) Ändra så att DNS-servern lämnar ut olika adressuppgifter för 
wiki.ihse.net om förfrågan kommer inifrån LAN:et än utifrån.

2) Ändra ipchains-reglerna på routern, så att den gör som jag vill.

Som jag förstått är det är 1) knepigt att få till och lite läskigt; jag 
vill ju inte att jag plötsligt börjar sitta och berätta för omvärlden 
att wikin ligger på 192.168... Alltså har jag satsat på 2.

Men det är inte lätt. Jag har suttit och slitit lite med dokumentationen 
för ipchains, men jag får ingen rätsida på hur jag ska göra. Det brukar 
sluta med att Jana äter upp mina utgående accesser på port 80 vilket 
inte är riktigt vad jag tänkt mig. :-)

Jag använder ett handhackat skript för att sätta upp mina nuvarande 
ipchains-regler. Så här ser de relevanta delarna ut just nu:
---
INSIDE=eth0
OUTSIDE=eth1
EXTERNAL_IP=77.110.63.65

# Load firewalling modules
modprobe iptable_filter
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ipt_LOG
modprobe ipt_state

# Load masquerading module
modprobe iptable_nat

## Waste any previous iptables setup, and create new chain
iptables -F
iptables -X
iptables -F -t nat
iptables -X -t nat
iptables -N jwall

# Accept new connections from the inside
iptables -A jwall -m state --state NEW -i ! $OUTSIDE -j ACCEPT

# Accept all packets belonging to open connections
iptables -A jwall -m state --state ESTABLISHED,RELATED -j ACCEPT

# Accept IDENT packets
iptables -A jwall -p TCP --destination-port ident -j ACCEPT

# Accept ICMP packets
iptables -A jwall -p ICMP -j ACCEPT

# Ignore (drop) DHCP DISCOVER (?) packets
iptables -A jwall -p UDP --source-port bootpc -d 255.255.255.255 
--destination-port bootps -j DROP

# Accept DNS
iptables -A jwall -p UDP --destination-port domain -j ACCEPT
iptables -A jwall -p TCP --destination-port domain -j ACCEPT

# Drop the rest
iptables -A jwall -j DROP

## Jump to our new chain from the INPUT and FORWARD chains
iptables -A INPUT -j jwall
iptables -A FORWARD -j jwall

# Portforward http to vesta
HTTPFORWARDADDR=192.168.0.12
HTTPPORT=80

iptables -t nat -A PREROUTING -i $OUTSIDE -p tcp --dport $HTTPPORT -j 
DNAT --to-destination $HTTPFORWARDADDR
iptables -t nat -A PREROUTING -i $OUTSIDE -p udp --dport $HTTPPORT -j 
DNAT --to-destination $HTTPFORWARDADDR
iptables -I FORWARD -i $OUTSIDE -p tcp --dport $HTTPPORT -j ACCEPT
iptables -I FORWARD -i $OUTSIDE -p udp --dport $HTTPPORT -j ACCEPT
---
Jag blir inte klok på hur jag ska göra för att få till det här. Någon 
som kan hjälpa till?

/Magnus


-- 
To UNSUBSCRIBE, email to debian-user-swedish-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org


--
This message was scanned by ESVA and is believed to be clean.
Click here to report this message as spam. 
http://mail-gw.bjorck.info/cgi-bin/learn-msg.cgi?id=B04DB27EE6.4C823



Reply to: