Merhabalar,

problem su ki Squid'de yaptiginiz tcp_outgoing_address ayarlamalari isletim sisteminde ek bir ayar olmadan dogrudan default gw'e gitmeye calisir. Bizim default gw e gitmeye calisan paketleri pf +route-to ile dogru arabirime yonlendirmemiz lazim

Asagida kendi ortamimdan ornek kurallari aktariyorum siz de bunlara bakarak kendi ortaminiza uygun kurallari yazarsiniz.

default gw 192.168.2.1
ext_if1 192.168.2.21 -->default cikis arabirimi
ext_if2 172.16.10.2 --> diger cikis arabirimi


pf.conf
---------------------
ext_if1="vic0"
ext_if2="vic1"
int_if="vic2"
ext_gw1="192.168.2.1"
ext_gw2="172.16.10.1"


...
...
nat  on $ext_if1 proto tcp from 172.16.10.2   to any  -> $ext_if2
....

...
pass out log(all)on $ext_if1 route-to{($ext_if2 $ext_gw2)} proto tcp from 172.16.10.2 to any port 80 keep state
...


squid.conf

...
acl ag src 192.168.80.1/255.255.255.255
acl ag2 src 192.168.80.10/255.255.255.255

tcp_outgoing_address 172.16.10.2 ag
tcp_outgoing_address 192.168.2.21 ag2



Bu kurallarla default gw arabirimine giden paketler uygun bir sekilde dogru arabirime yonlendiriliyor. ps: Konu basligini daha anlasilir olmasi icin degistirdim.
Ismail OZATAY yazmış:
Merhaba ;

Arkadaslar birkaç gündür pf ile policy routing deniyorum. Bir test ortamım var topoloji şöyle ;

Sunucu : openbsd 4.3 stable
1. int : adsl
2.int  : leased line
3.int: : dmz (real subnet mevcut bu bacak için nat yapmıyorum )
4.int : internal 5 adet vlan tagged virtual interfaces ( vlan1.....vlan5)

Bu sunucu üzerinde pf, squid transparent ve ftp-proxy çalıştırıyorum.
Default gateway adsl modemi verdim.
Policy route yaptım vlan interfacelerden gelenleri adsl e dmz networkünü de leased line a yönlendirdim. Squid de tcp_outgoing_address dmz networkunu leased line subnetinden bir ip ile eşleştirdim. Bu şekilde iç networktekiler squid üzerinden internete çıkıyorlar çünkü default gw adsl. Fakat dmz internete çıkamıyor ( https, dns çalışıyor ) çünkü squid beni adsl den gönderiyor. Squid den dmz için çıkan trafiğin leased line yönlendirilmesini için birkaç deneme yaptım ama başaramadım. Keza öyle aynı sorun ftp içinde geçerli. İç network ftp ye rahatlıkla çıkıyor dmz yine gidemiyor. Sunucuya default gw girmeden sadece pf ile tüm yönlendirmeleri yapmayı denedim. Bu seferde caching nameserverı route edemedim. :)

Aşağıda yaptığım configleri yolluyorum;

pf.conf
-------
ll_if="sk0"
ll_ip="212.212.1.1"
ll_gw="212.212.1.2"

dmz_if="sk1"
dmz_net="100.100.100.0/24"
dmz_ip="100.100.100.1"

dsl_if="rl0"
dsl_ip="10.1.1.1"
dsl_gw="10.1.1.2"
dsl_vlan1_ip="10.1.1.10"
dsl_vlan2_ip="10.1.1.20"
dsl_vlan3_ip="10.1.1.30"
dsl_vlan4_ip="10.1.1.40"
dsl_vlan5_ip="10.1.1.50"

all_loc_if ="{ vlan1, vlan2, vlan3, vlan4, vlan5 }"

nat on $dsl_if from <all_net> to any -> $dsl_if

rdr pass on $all_loc_if proto tcp to port ftp -> $lo_ip port 8021
rdr pass on $dmz_if  proto tcp to port ftp -> $lo_ip port 8021

rdr pass on $all_loc_if proto tcp to port www -> $lo_ip port 3128
rdr pass on $dmz_if proto tcp to port www -> $lo_ip port 3128

block in log all
block out log all

pass out log on $ll_if inet proto tcp from $ll_if to any flags S/SA modulate state
pass out log on $ll_if inet proto udp from $ll_if to any keep state
pass out log on $ll_if inet proto icmp from $ll_if to any icmp-type echoreq keep state

pass out log on $dsl_if inet proto tcp from $dsl_if to any flags S/SA modulate state
pass out log on $dsl_if inet proto udp from $dsl_if to any keep state
pass out log on $dsl_if inet proto icmp from $dsl_if to any icmp-type echoreq keep state

pass in log on $dmz_if route-to($ll_if $ll_gw) inet proto tcp from $dmz_net to any port https flags S/SA keep state pass in log on $dmz_if route-to($ll_if $ll_gw) inet proto udp from $dmz_net to any port domain keep state pass in log on $dmz_if route-to($ll_if $ll_gw) inet proto icmp from $dmz_net to any icmp-type echoreq keep state pass in log on $dmz_if inet proto tcp from $dmz_net to $lo_ip port ftp flags S/SA keep state pass in log on $dmz_if inet proto tcp from $dmz_net to $lo_ip port 3128 flags S/SA keep state

pass in log on vlan1 route-to($dsl_if $dsl_gw) inet proto tcp from $int_net to any port https flags S/SA keep state pass in log on vlan1 route-to($dsl_if $dsl_gw) inet proto udp from $int_net to any port domain keep state pass in log on vlan1 route-to($dsl_if $dsl_gw) inet proto icmp from $int_net to any icmp-type echoreq keep state pass in log on vlan1 inet proto tcp from $int_net to $lo_ip port ftp flags S/SA keep state pass in log on vlan1 inet proto tcp from $int_net to $lo_ip port 3128 flags S/SA keep state

squid.conf
-----------
http_port 127.0.0.1:3128 transparent

acl dmz src 100.100.100.0/255.255.255.0
tcp_outgoing_address 212.212.1.1 dmz

Bu şekilde squid sorunumu nasıl çözebilirim.

Teşekkürler

Kolay gelsin

ismail



FreeBSD 6 kitabi: http://www.acikakademi.com/catalog/freebsd6
---------------------------------------------------------------------
Listeye soru sormadan once lutfen http://ipucu.enderunix.org sitesine bakiniz.

Cikmak icin, e-mail: [EMAIL PROTECTED]
Liste arsivi: http://news.gmane.org/gmane.org.user-groups.bsd.turkey



FreeBSD 6 kitabi: http://www.acikakademi.com/catalog/freebsd6
---------------------------------------------------------------------
Listeye soru sormadan once lutfen http://ipucu.enderunix.org sitesine bakiniz.

Cikmak icin, e-mail: [EMAIL PROTECTED]
Liste arsivi: http://news.gmane.org/gmane.org.user-groups.bsd.turkey


Cevap