[BSD] port-based policy routing hogyan?

Gabor Burjan burjang at elte.hu
2005. Ápr. 28., Cs, 11:53:23 CEST


Sziasztok,

A subjectben talalhato szornyuseget probalom elkovetni.  A halozatunk
jelenlegi strukturaja (leegyszerusitve) az alabbi:

   ISP1 berelt vonal           ISP2 berelt vonal
      |                                  |                            
  ,-------.                          ,-------.
  |router1|                          |router2| 
  `-------'                          `-------'
      |                                  |
   ,----------------------------------------.
   |              switch                    |
   `----------------------------------------'
                      |
                 .---xl0----.
                 |gw FreeBSD|
                 `----------'
                   |  |  | 
                 belso halozatok


A default gateway az ISP1 routere, a masodik berelt vonal most nott ra a
gatewayre.  A vegso cel az ISP2-re torteno atallas, azonban a kulso
rendszereken torteno kulonbozo (pl. source IP-re) vegzett ellenorzesek
miatt ezt alkalmazasonkent szeretnenk meglepni, azaz nem lehet a default
gatewayt egyszeruen ISP2 routerere atirni.  Mindket ISP ad publikus IP-t
a gepunknek (IP1 es IP2), a gw gep kifele nezo interface-en ezt az xl0
IP aliasanak fel is vettem.  Elso korben a gw gepen futo SMTP szervert
szerettem volna kivulrol elerni.  A problema nyilvanvalo, a kulso geprol
ISP2 felol befele jovo IP csomagra adott valasz a fennallo default route
miatt a masik ISP vonalan menne ki, amit az persze eldob.  Ha a konkret
kulso gepre felveszek egy host route-ot a router2 gateway-jel, akkor a
konkret kulso gep fele mukodik is a dolog, azonban en ezt
szolgaltatasonkent szeretnem szabalyozni.  A megoldas kezenfekvonek
tunne, Linuxszal mar csinaltam policy routingot (iptables MARK +
iproute2 parossal), gondoltam ugyanez kell nekem, csak FreeBSD-re.  A
google-n keresgelve talaltam is nem hivatalos leirast, miszerint a
ipfilter segitsegevel en is tudok ilyent csinalni, meg is orultem neki,
mert azt amugy is hasznaljuk.  A kovetkezo szabalyokat vettem fel:

# bejovo mailek
pass out quick on xl0 to xl0:router2IP proto tcp from IP2 port = 25 to any
# kimeno mailek
pass out quick on xl0 to xl0:router2IP proto tcp from IP2 to any port = 25

(router2IP a router2 befele nezo IP-je, amit a host route-os tesztnel
 is hasznaltam, IP2 a FreeBSD-nek adott publikus IP)

A problema az, hogy nem akar mukodni.  Probaltam tcpdump-pal nezni, de
csak annyit latok, hogy megfelelo source IP-vel a kulso gep fele kimegy
a csomag az xl0 interface-en, de sajnos a routeingot (hogy milyen
gateway fele adja a csomagot) nincs otletem, hogyan tudnam debugolni.  A
kulso gephez mar semmi nem erkezik a forgalomhoz.  A routerhez sajnos
nincs hozzaferesem.

Kerdeseim:

- mit ronthatok el? kellene-e meg valami a fenti beallitasokon tul?
- mukodik-e valakinek hasonlo FreeBSD alatt?
- hogyan lehetne debugolni a routeingot?
- hol talalok dokumentaciot a temarol?

Gabor



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