Squid ile kullanicilari birden fazla hatta dagitma

Birden fazla internet hattina sahipsiniz ve bu hatlari belirli isler icin paylastirmak istiyorsunuz. Bunun icin kullandiginiz guvenlik duvarinin birden fazla hatti kontrol edebiliyor olmasi lazim. Daha teknik bir ifade ile Firewall’unuz “policy based routing” desteklemeli. Hem Linux Iptables  hem de OpenBSD Packet Filter bu isi oldukca iyi basariyor.

Mesela mail sunucunuzu LeaseLine uzerinden calistirmak, ic ag kullanicilarinizi da ADSL hatti uzerinden internete cikarmak , otesinde Proxy kullanarak bazi kullanicilari bir hattan bazilarini baska hattan cikarmak isteyebilirsiniz. Burada da Squid yardiminiza kosar. Squid’de bulunan tcp_outgoing_address tanimlamalari ile belirli kullanicilari x hattina belirli kullanicilari y hattina yonlendirerek hatlarinizi daha verimli kullanabilirsiniz.

Uye oldugum listelerde en cok sorulan sorulardan birisi Squid’i cift hatli ortamlarda kullanma uzerine oluyor ve genelde bu sorular cevapsiz kaliyor.

Bu konuda uzun suredir birseyler yazmayi planliyordum ama gercekten uzun surdu:). Ben de daha da uzun surmesin diye birkac satirla nasil yapilacagini anlatan bir yazi hazirladim.

Kurmak istedigimiz yapi asagidakine benzer olacaktir

Sisteme ait bazi bilgiler:

Firewall’un ADSL’ine bakan ip adresi : 192.168.2.23
Firewall’un LL’a bakan ip adresi :172.16.10.2
ADSL’in ip adresi    : 192.168.2.1
LL’ni ip adresi        : 172.16.10.1
Default GW: 192.168.2.1

Birden fazla hat icin Squid uzerinde dagitim yapma
Squid.conf icin yapilandirma

#Proxy’nin transparan calismasi icin
http_port 3128 transparent

#IC taraftaki farkli istemci gruplarini tanimlama

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

#Http_access ile ilgili ip adreslerine izin/yasaklama yapi

#Hangi istemcinin hangi hattan cikacagini belirleme

tcp_outgoing_address 172.16.10.2 ag2
tcp_outgoing_address 192.168.2.23 ag

Bu yapilandirma sonrasinda Squid 192.168.80.10 ip adresinden gelen istekleri 172.16.10.2 ip adresi uzerinden gondermeye calisacaktir fakat isletim sisteminde tum paketler icin default gw 192.168.2.1’dir.

Burada paketler yanlis arabirimden gidecektir ve hedefe ulasamayacaktir. Bizim firewall’u kullanarak yanlis arabirime giden paketleri dogru arabirime yonlendirmemiz gerekiyor. Bunu da Packet Filter’daki  route-to tanimlamasini kullanarak basaracagiz.

pf.conf’da paketlerin ilgili arabirime gidebilmesi icin kurallar.

ext_if1=”vic0″    #ADSL
ext_if2=”vic1″    #LeaseLine
int_if=”vic2″
ext_gw1=”192.168.2.1″
ext_gw2=”172.16.10.1″

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

Benzer sekilde ADSL ve LL olmak uzere iki farkli internet erisimi olan bir sistemde Squid’i ADSL uzerinden cikarmak icin ayni yapilandirmayi kullanabilirsiniz. Sadece tcp_outgoing_Address ve acl tanimlamalarinda ic agi tek bir acl ile tanimlamaniz yeterli. Sonrasinda pf’e yukaridaki kurali yazmaniz.(yapiya gore duzenlenmeli) Squid isteklerinin (disariya giden tcp 80) ADSL uzerinden gitmesini saglayacaktir. Eger 443. port isteklerini de Squid uzerinden aktariyorsaniz 443. port icin de bir kural yazmani ve 443. porta giden paketlerin uygun arabirimden cikmasini saglamalisiniz.

Bu test ortami nasil kuruldu:

Windows XP kurulu bir sistem uzerinde Vmware kurularak icerisinde OpenBSD kuruldu. OpenBSD’e uc adet ethernet karti eklendi. Bu kartlardan bir tanesi Host Only digerleri de bridge olacak sekilde  yapilandirildi. Bridge arabirimlerden bir tanesi adsl modeme digeri de PIX’e bakacak sekilde yapilandirildi.  Sonrasinda GNS3  ve icerisinde PIX kullanilarak ek bir hat varmis gibi network yapilandirildi. PIX’in bir bacagi openbsd e diger bacagi da modeme bakacak sekilde ayarlanarak Openbsd’den gelen istekler(172.li ) nat’lanarak sanki farkli bir hat uzerinden cikiyormus hissi verildi.

OpenBSD sanki onunde iki hat varmis ve bu hatlardan birisi 192.168. digeri de 172.16.0 li
imiscesine ayarlandi ve gerekli kurallar yazildi ve ana bilgisayarin default gw!i olarak OpenBSD ayarlandi.

Nat yapan PIX yapilandirmasi:

PIX’in yapilandirmasi

PIX Version 7.2(4)
!
hostname pixfirewall
enable password 8Ry2YjIyt7RRXU24 encrypted
passwd 2KFQnbNIdI.2KYOU encrypted
names
!
interface Ethernet0
shutdown
no nameif
no security-level
no ip address
!
interface Ethernet1
shutdown
no nameif
no security-level
no ip address
!
interface Ethernet2
nameif inside
security-level 100
ip address 172.16.10.1 255.255.255.0
!
interface Ethernet3
nameif outside
security-level 0
ip address dhcp setroute
!
interface Ethernet4
shutdown
no nameif
no security-level
no ip address
!
ftp mode passive
pager lines 24
mtu outside 1500
mtu inside 1500
icmp unreachable rate-limit 1 burst-size 1
no asdm history enable
arp timeout 14400
nat-control
global (outside) 1 interface
nat (inside) 1 172.16.10.0 255.255.255.0
timeout xlate 3:00:00
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
timeout sip-provisional-media 0:02:00 uauth 0:05:00 absolute
no snmp-server location
no snmp-server contact
snmp-server enable traps snmp authentication linkup linkdown coldstart
telnet timeout 5
ssh timeout 5
console timeout 0
!
!
prompt hostname context
Cryptochecksum:99c599dfeaaa3e21fe56ae442cf9dc03

This entry was posted in Misc, OpenBSD. Bookmark the permalink.

5 Responses to Squid ile kullanicilari birden fazla hatta dagitma

  1. zapatov says:

    selamlar,
    hocam network ve güvenlik konularını aşmış biri olarak siz sertifika programlarını öneriyomusunuz? öneriyosanız hangi sertifika programlarını? iş hayatına yanmasımaları ve sektördeki durumunu nasıl değerlendiryosunuz?

  2. Merhaba,
    Güzel bir yazı, elinize sağlık.

    Benzer bir yapıyı bir kurumda gerçekleştirmiştim. Yalnız bu kurumdaki ihtiyaç, hedef IP’ye göre yönlendirme yapılmasıydı. Ayrıntılar için : http://aytekinux.blogspot.com/2008/03/ift-adsl-ve-linux-trafik-ynetimi.html

  3. Huzeyfe ONAL says:

    Baglanti icin Tesekkurler. Buradaki istek sadece birden fazla hattin yonetimi degil, Squid’i ya da bir servisi belirli hattan verme durumu idi.

    Zapatov: Bu konu burada cevaplanamayacak kadar uzun. Kisa cevabi kendinizi daha iyi ifade edebilecek birseyler bulamiyorsaniz sertifika programlari iyidir.

    Ek olarak “asmis” biri degil, arastirma yapmayi seven birisi olarak tanimliyorum kendimi.

  4. aaa says:

    ADSL ve KABLO_NET kullanıyorum,
    iki hattı yedekli çalıştırma şansım var mı? bir gittiğinde diğeri üzerinden kendiliğinden devam edebilir mi?

  5. Huzeyfe ONAL says:

    Bunun icin Linux iptables ya da OpenBSD PF benzeri bir Firewall kullanmaniz gerekir. Yani su ozellige sahip olmali: birden fazla hatti idare edip her iki hat icin hatlarin durumunu kontrol eden ve biri gittiginde digerine yuku aktarabilecek.

Leave a Reply

Your email address will not be published. Required fields are marked *

four + 11 =