[OpenBSD] NAT redirect niet goed

Pagina: 1
Acties:

  • LeonM
  • Registratie: Oktober 2001
  • Laatst online: 29-10-2025
Ok, na heel wat vragen, proberen en manualtjes lezen verder ben ik al een heel eind gekomen :)

Het scenario:

Gateway:
OpenBSD 3.3
1 nic aan cable modem (PPPoE)
1 nic aan lan (192.168.0.1)
Packet Filter
NAT

Webserver:
FreeBSD 4.8
1 nic aan lan (192.168.0.2)
Apache 1 + PHP 4
Samba
FTP
Mail

De gateway moet alle requests voor poort 25, 21 en 80 redirecten naar de webserver op 192.168.0.2. Daarvoor gebruik ik NAT met de volgende rule:

code:
1
rdr on $external proto tcp from any to any port 80 -> 192.168.0.2 port 80


Het probleem:
Om een of andere reden werkt dat niet, krijgt netjes een DNS error voorgeschoteld als je vanaf het internet de webserver probeerd te bereiken :/ Als ik op me internet LAN http://192.168.0.2/ doe dan werkt het als een zonnetje.

Hele pf.conf (bijna letterlijk overgenomen van active2 _/-\o_) staat hier. Mijn pf.conf was eigenlijk bijna t zelfde, maar omdat dat niet werkte probeerde ik die van active2 maar even, helaas hielp dat niet veel.

De vraag:
Ik heb al van verschillende mensen gehoord dat de rule voor de redirect goed is, en sinds hij wel ftp doorlaat aan de cleints (FTP with NAT) werkt de NAT dus wel.

- Is er misschien toch iets fout aan me config?
- Moet er bij de gateway niet iets bijkomen in inetd.conf, zo ja wat dan?

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 21:21
Packet Filter is toch hetzelfde als IPF (FreeBSD) ?

En als je dit gebruikt:
code:
1
external="tun0"
Dan is dat toch niet goed? Moet dat niet verwijzen naar je ethernet-kaart?

Ik heb hier ook niet zo héél veel verstand van

  • miniBSD
  • Registratie: Augustus 2002
  • Laatst online: 20-12-2023
Om van buitenaf naar jouw server te gaan moet je poort 80 nog openzetten:

pass in on $external proto tcp from any to 192.168.0.2 port 80 flags S/SA keep state

Maar je wil toch meer dan poort 80 openzetten, dan zou deze ook redirecten:

rdr on $external proto tcp from any to any port { 21,25,80 } -> 192.168.0.2
pass in on $external proto tcp from any to 192.168.0.2 port { 21,25,80 } flags S/SA keep state

Quidquid latine dictum sit, altum sonatur (Whatever is said in Latin sounds profound).


  • LeonM
  • Registratie: Oktober 2001
  • Laatst online: 29-10-2025
ddc schreef op 19 June 2003 @ 15:59:
Packet Filter is toch hetzelfde als IPF (FreeBSD) ?

En als je dit gebruikt:
code:
1
external="tun0"
Dan is dat toch niet goed? Moet dat niet verwijzen naar je ethernet-kaart?

Ik heb hier ook niet zo héél veel verstand van
Nee dat moest persé tun0 zijn volgens de manuals, en dat werkt ook zo :)
miniBSD schreef op 19 June 2003 @ 15:59:
Om van buitenaf naar jouw server te gaan moet je poort 80 nog openzetten:

pass in on $external proto tcp from any to 192.168.0.2 port 80 flags S/SA keep state

Maar je wil toch meer dan poort 80 openzetten, dan zou deze ook redirecten:

rdr on $external proto tcp from any to any port { 21,25,80 } -> 192.168.0.2
pass in on $external proto tcp from any to 192.168.0.2 port { 21,25,80 } flags S/SA keep state
_/-\o_ ff proberen...

edit
Werkt dus niet :/

[ Voor 3% gewijzigd door LeonM op 19-06-2003 16:40 ]


Verwijderd

[quote]LeonM schreef op 19 June 2003 @ 16:02:
Werkt dus niet :/
# Debug your rules:
#
# To view the logfiles:
# tcpdump -n -e -ttt -r /var/log/pflog
#
# To tail -f the logfile: (well not really but...)
# tcpdump -n -e -ttt -i pflog0

:) handig om te debuggen
Want ik zie dat je geen pass in rule hebt.

Quote: 'RDR/NAT happens before PASS'
Dus vandaar het dikgedrukte in een rule van mij. Variables staan voor zich:

rdr on $ext_if inet proto tcp from any to $external_ip1 port 4662 -> $internal_ip3 port 4662
pass in quick on $ext_if inet proto tcp from any to $internal_ip3 port 4662 $tcp_options $mqueue

Zo'n constructie heb jij ook nodig. Ik zou zeggen:

rdr on $external proto tcp from any to $external_ipv4_verander_dit port 80 -> 192.168.0.2
pass in quick on $external proto tcp from any to 192.168.0.2 port 80 flags S/SA keep state

(hoewel die flags depreciated zijn:

# You can no longer use flags S since more and more flags are supported
# So to avoid any unexpected errors you have to enter the full thing:
# S/SAFRUPEW)

  • jep
  • Registratie: November 2000
  • Laatst online: 05-05 11:28

jep

Denk je eraan dat je dergelijke rules op je gateway niet intern kunt testen? Even door een externe aap laten proberen dus. :)

  • BoZ_
  • Registratie: Juni 2003
  • Laatst online: 05-10-2020
code:
1
2
3
4
nat on $ExtIF from 192.168.0.0/24 to any -> $ExtIP
rdr on $ExtIF proto tcp from any to any port 80 -> 192.168.0.2 port 80
block in on $ExtIF all
pass in on $ExtIF inet proto tcp from any to any port 80 flags S/SA keep state


Volgens mij heb je die 4 regels nodig voor een werkende NAT.
De eerste verzorgt je NAT, de tweede de redirect. Dan blockt de derde alle incoming packages van buitenaf en de vierde zorgt er voor dat incoming op port 80 wel wordt toegelaten (en die gaat dan via de redirect naar 192.168.0.2)

Natuurlijk niet vergeten om bovenaan je config te zetten:
ExtIF="tun0"
ExtIP="???.???.???.???"

tun0 klopt trouwens wel, volgens mij is een ppp verbinding altijd tun0 (na te kijken met ifconfig tun0 of course)

  • tech-no-logical
  • Registratie: December 2000
  • Laatst online: 24-04 14:10
deze misschien ? ik doe niet aan redirects, dus heb er niet teveel verstand van....

http://www.openbsd.org/faq/pf/nat.html#binat

  • LeonM
  • Registratie: Oktober 2001
  • Laatst online: 29-10-2025
jep schreef op 19 June 2003 @ 18:46:
Denk je eraan dat je dergelijke rules op je gateway niet intern kunt testen? Even door een externe aap laten proberen dus. :)
Deed ik ook
BoZ_ schreef op 19 June 2003 @ 19:01:
*knip*

Natuurlijk niet vergeten om bovenaan je config te zetten:
ExtIF="tun0"
ExtIP="???.???.???.???"

tun0 klopt trouwens wel, volgens mij is een ppp verbinding altijd tun0 (na te kijken met ifconfig tun0 of course)
Uiteraard weet ik zeker dat t tun0 is.
ExtIP hoef je niet in te vullen, want die is toch dynamish, als ik dit doe:
code:
1
pfctl -f /etc/pf.conf -v

Dan zie je dat hij vanzelf het ext ip invult die op dat moment gebruikt wordt.
tech-no-logical schreef op 19 June 2003 @ 21:25:
deze misschien ? ik doe niet aan redirects, dus heb er niet teveel verstand van....

http://www.openbsd.org/faq/pf/nat.html#binat
Die heb ik gebruikt :) Ik was al een heel eidn gekomen, maar zoals de rules daar staan werkte het dus niet :/

  • blender
  • Registratie: Juni 2001
  • Niet online
1. wordt het verkeer vanaf de 192.168.0.2 geNAT?
2. zijn er misschien rules die er voor zorgen dat deze bak het internet niet op mag?

Zelf heb ik bijvoorbeeld de volgende rules staan:

code:
1
2
3
4
5
6
7
#eerst NAT
nat on $ext_if from { $nat_networks }to any -> $ext_ip
#dan redirect
rdr on $ext_if proto tcp from any to $ext_ip port 1234 -> 192.168.1.1 port 1234

#en nog een rule om de shit binnen te laten
pass in on $ext_if proto tcp from any to any port 1234 keep state

$ext_if: NIC die aan internet hangt (tun0 bij jou neem ik aan)
$ext_ip: IP adres van NIC die aan internet hangt
$nat_networks: netwerk dat genat moet worden (192.168.0.0/24 bij jou denk ik)

Hopelijk heb je hier wat aan...

(oh en sorry voor de layout fuckup)

Wat geeft 'ifconfig -a' trouwens voor output? Misschien kun je wat dingetjes posten...

[ Voor 7% gewijzigd door blender op 19-06-2003 23:21 ]

Pagina: 1