19 Mart 2008

Çift Adsl ve Linux Trafik Yönetimi

Başlıkta "çift adsl" ifadesini kullandım ama aslında bir adsl ve bir frame relay hattı olan ağda Linux ile yaptığım trafik yönlendirmesini anlatacağım. Yaptıklarım temelde aynı olduğu için frame relay yerine adsl hattı da olsa sonuç değişmez.

Bir kurumda yaşanan sorun şuydu: normal internet hareketleri için adsl'i kullanırken aynı zamanda bağlı bulundukları bakanlığın frame relay hattını kullanarak bakanlığın sayfalarında veri girişleri yapamıyorlardı. Her iki hat farklı IP gruplarında olduğundan PC'lerin IP ayarlarını sürekli değiştirerek işi çözüyorlardı. Bu durum da bilgi işleme ayrı bir yük getiriyordu tabi. Ayrıca PC'lerin IP'leri sürekli değiştirildiğinden odalardaki yazıcıların paylaşımı ve kullanımında sorunlar oluyordu. Aynı şekilde dosya paylaşımları da...

Çözüm olarak bu trafiğin ortasına bir Linux koyarak tüm ağı aynı IP grubuna aldım. Çıkışları da hedef adrese yada IP'ye göre yönlendirdim. Linux'a, şu şu şu adreslere iletişim frame relay hattından, geri kalan iletişim de adsl hattından yapılacak, dedim. Kullanıcıların sadece tarayıcılarına site adreslerini yada IP'lerini yazması yetti. Gerisini Linux halletti... Ha, tabi bu trafiği de web filtreleme, güvenlik duvarı, dhcp sunucu, trafik sınırlama (bandwith yönetimi) ile de cilalamayı unutmadım.

Teknik olarak bu işi şöyle yaptım:
Önce linux'a 3 adet ethernet kartı takıldı. Lokal, adsl ve frame relay bağlantıları için. Topoloji şekildeki gibi:



/etc/network/interfaces dosyası şu şekilde:
auto lo eth0 eth1 eth2
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet static
address 10.0.0.10
netmask 255.255.255.0
gateway 10.0.0.2

allow-hotplug eth1
iface eth1 inet static
dns-nameservers 10.0.0.2
address 192.168.1.254
netmask 255.255.255.0

allow-hotplug eth2
iface eth2 inet static
address 10.67.1.10
netmask 255.255.255.0


interfaces dosyasında da göründüğü gibi sadece eth0 için gateway tanımı ve eth1 için dns tanımı yaptım.

Bakanlıkta bağlanılan sistemin IP adresleri 10.6.8.0/24 ağındaydı. Bu IP grubu için ağ geçidi olarak router'ın IP adresini atadım.

# route add -net 10.6.8.0 netmask 255.255.255.0 gw 10.67.1.1

10.67.1.0/24 ağı için de aynı şeyi yaptım.

# route add -net 10.67.1.0 netmask 255.255.255.0 gw 10.67.1.1


route -n çıktısı şöyle:

Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.6.8.0 10.67.1.1 255.255.255.0 UG 0 0 0 eth2
10.67.1.0 10.67.1.1 255.255.255.0 UG 0 0 0 eth2
10.67.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
0.0.0.0 10.0.0.2 0.0.0.0 UG 0 0 0 eth0


firewall olarak kullandığım script'de iptables ile trafiği yönlendirdim. Aşağıdaki komutlarda göründüğü gibi 10.6.8.0/24 hedefine gitmek isteyen trafik eth2'ye yönlendiriliyor. Diğer trafik eth1'den çıkıyor.

iptables -t nat -A POSTROUTING -d 10.6.8.0/24 -o eth2 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth2 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE

Bu şekilde istediğim trafiği istediğim ağ arayüzüne yönlendirebilirim. Bu yapı benim işimi gayet iyi gördü.

Hiç yorum yok: