[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