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 [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]