[BSD] ipnat -> natd -> pf nat

Kollár Csaba csaba.kollar at enternet.hu
2012. Jan. 16., H, 22:23:50 CET


On 2011.12.27. 17:50, Kollár Csaba wrote:
> Többnyire ipnat-ot használtam eddig a Freebsd-ken, ott, ahol szükség
> volt gateway funkciókra, egy helyen azonban natd-t kellett konfigurálnom
> nat traversal miatt (problémák voltak bizonyos vpn kliensekkel
> ipnat-nál, a nat-t patch esetén is). A natd megoldotta a problémákat, de
> lettek helyette újak :)
>
> Az egyik, és legjobban fájó, hogy nagyobb file-ok letöltése esetén
> szakadozik a kapcsolat a nat mögött levő gépeken.
 >....

Sajnos nem sikerult megoldani a problemat, szamomra erthetetlen okok 
miatt a natd random kiutotte azokat a sessionoket, amelyeken viszonylag 
rovid ido alatt (>40-60sec) viszonylag nagyobb (>50-100Mbyte) 
adatmennyiseg ment at.

Amugy sem volt szimpatikus a debug lehetosegek teljes hianya miatt, 
ezert inkabb elkezdtem a pf-el ismerkedni.

Ezzel viszont nagyjabol ott tartok ahol az ipnat-al (mar ha a pf nat 
fukciojat nezzuk), tehat az ipsec-et hasznalo pptp VPN kapcsolatok nem 
mukodnek jol. Pontosabban az elso kliensrol az elso kapcsolodas sikerul 
a kulso VPN szerverre (Windows), a kovetkezo kliens mar nem tud 
csatlakozni. Erre lenne ugye hivatott a NAT traversal, egyfajta "Ipsec 
Passthroug" megoldaskent, ami pl. a natd-vel szepen mukodik, ipnat-al 
vagy pf-el viszont nem.

Google turas utan eleg vegyes a kep, talalok nehany panaszt, es nehany 
megoldast, melyek tobbek kozott arra hivatkoznak, hogy a kernelben levo 
ipsec/ipsec_natt-t hasznalja a pf ha rendelkezesre all, es ez megoldana 
a dolgot, viszont nem oldja meg. Mukodik ez valakinel? Ha igen, hogy? :)
Megoldas lenne meg a pptp proxy, amit pf-el transzparense teszek, de ezt 
vegkepp nem szeretnem.

# uname -a:
FreeBSD xyz 8.2-RELEASE FreeBSD 8.2-RELEASE #1: Mon Jan 16 21:05:57 CET 
2012     root at xyz:/usr/obj/usr/src/sys/XYZ  i386

# sysctl kern.features.ipsec_natt
kern.features.ipsec_natt: 1

kernel config:

include		GENERIC
ident		XYZ

# IPSEC
options         IPSEC
options		IPSEC_DEBUG
options         IPSEC_NAT_T
options         IPSEC_FILTERTUNNEL
device          crypto

(-- snipp, mas nincs is benne --)

pf.conf:

#macros
ext_if="em0"
int_if="em1"
external_addr="1.2.3.4"
internal_net="10.0.0.0/24"

#setting
set block-policy return
set loginterface $ext_if
set skip on lo0
set skip on tun

#nat
nat on $ext_if from $internal_net to any -> ($ext_if)

pass in all
pass out all

Persze ennel joval szofisztikaltabb (lenne) a ruleset, az egyszerusites 
szandekos, hogy a teszt ideje alatt tuti ne legyen semmilyen rule, ami 
korlatozhatna barmilyen forgalmat (pl. gre es egyebek).


-- 
Csaba




További információk a(z) BSD levelezőlistáról