Firewall opnieuw draaien als DDNS ander IP krijgt

Pagina: 1
Acties:

  • lvh
  • Registratie: Juli 2001
  • Laatst online: 02-11-2022
(jarig!)
Ik ben bezig aan een Linux 2.6 + iptables router/firewall te bouwen voor een kleine onderneming. Die onderneming gebruikt dyndns.dk, met Dynsite op alle clients, omdat het personeel soms met de laptop via GPRS/UMTS op locatie zit en die client per definitie altijd bereikbaar moet zijn via die naam, mits hij aan het internet hangt en opstaat natuurlijk.

Probleem is dat ze dit ook gebruiken als beide hosts op het interne netwerk, gewoon in het bedrijf zelf, zitten. Dit vindt die router niet zo leuk. Ze willen geen IP/hostname gebruiken als ze lokaal zitten en een andere als ze remote zijn. Daarom moet die iptables router dus DNAT doen en als het een pakket met die destination tegenkomt, terug het interne netwerk opsturen met het lokale IP.

Dat gaat er dan zo uitzien:
code:
1
2
iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 --dport 8080 \
             -j DNAT --to 192.168.1.1:80


Het probleem is dus dat die destination een DDNS-hostname is. Het hele punt van DDNS is natuurlijk dat dat IP niet altijd hetzelfde is, maar eens die rules in iptables zitten veranderd dat ip natuurlijk wel niet meer.

Ik heb dus iets nodig wat ik bv in een cronjob kan zetten, de DDNS naar een IP resolvet, dat vergelijkt met wat het n minuten geleden was, en indien er een verandering is opgetreden de firewall opnieuw start.

  • Mac_Cain13
  • Registratie: Juni 2003
  • Laatst online: 27-01 22:51
Als ik je goed begrijp komt het er dus op neer dat je dat IP-adres 1.2.3.4 bij -d om de zoveel tijd wilt verifieren en indien het niet meer klopt updaten in je firewall?

Het makkelijkste zou natuurlijk zijn dat je gewoon een hostname op kunt geven in iptables, maar dat heb je vast al hebt nagezocht. ;) Dus zul je toch iets van een scriptje moeten gaan schrijven.

Dat script kun je om de zoveel tijd de hostname laten resolven en kijken of het ip nog hetzelfde is. Zo niet dan laat je het script gewoon je firewall aanpassen, zoals je anders met de hand zou doen. Lijkt me goed te doen in een taal als bash, perl of python.

Er zijn vast ook hele pakketten die dit soort truukjes kunnen, maar als dit het enige aparte is wat je wilt lijkt me dat nogal overkill. Dus ik denk dat je je scripting skillz weer uit de kast moet halen (of eens op moet waarderen). :P

  • daft_dutch
  • Registratie: December 2003
  • Laatst online: 02-12-2025

daft_dutch

>.< >.< >.< >.<

Ik neem aan dat de interface altijd de zelfde blijft
kan je beter dit gebruiken
code:
1
2
EXTIF="ppp0"
iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 8080 -j DNAT --to 192.168.1.1:80

[ Voor 32% gewijzigd door daft_dutch op 14-04-2006 01:53 ]

>.< >.< >.< >.<


  • freggy
  • Registratie: Juli 2002
  • Niet online
Ik vermoed dat dat IP-adres via DHCP verkregen wordt? Dan kan je in /etc/dhcp3/dhclient-exit-hooks.d een scriptje zetten dat uitgevoerd worden telkens als dhclient een DHCP-request aanvraagt.

  • lvh
  • Registratie: Juli 2001
  • Laatst online: 02-11-2022
(jarig!)
daft_dutch schreef op vrijdag 14 april 2006 @ 01:51:
Ik neem aan dat de interface altijd de zelfde blijft
kan je beter dit gebruiken
code:
1
2
EXTIF="ppp0"
iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 8080 -j DNAT --to 192.168.1.1:80
Neen, want het kan ook zijn dat het pakket effectief naar buiten moet en niet intern weggemoffeld moet worden.
Freggy schreef op vrijdag 14 april 2006 @ 09:04:
Ik vermoed dat dat IP-adres via DHCP verkregen wordt? Dan kan je in /etc/dhcp3/dhclient-exit-hooks.d een scriptje zetten dat uitgevoerd worden telkens als dhclient een DHCP-request aanvraagt.
Het moet opnieuw draaien als een van de clients een nieuw IP krijgt, om de reden die hierboven is vermeld: soms moet het pakket echt naar buiten en niet binnen blijven.