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ü.