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