Jelenlegi hely

Új hozzászólás

CSÉCSY László képe

Egyetlen céges hálózat két ADSL kijárattal

Adott egy cég, ahol kinőtték az eddigi egyetlen ADSL kapcsolat nyújtotta lehetőségeket, ellenben csak egy újabb ADSL hozzáférés fenntartására van pénz. A feladat: a belső hálózatban levő gépekre gépenként lehessen megmondani, melyik ADSL kapcsolaton kommunikálhatnak kifelé.

A megoldás során a következő feltételezésekkel fogunk élni: mindkét (fix külső IP-s) ADSL-kapcsolatot egy-egy routeren keresztül használjuk, így az általuk nyújtott szolgáltatások a 192.168.64.0/24 (régi), illetve a 192.168.66.0/24 (új) hálózatokban érhetőek el, ahol a routerek mindig a .1-es IP-vel szerepelnek. A cég által tűzfal-célokra használt Linux-hajtotta számítógépben három hálókártya foglal helyet: 192.168.64.2 (eth0) és 192.168.66.2 (eth2) a megfelelő routerek felé, valamint a belső, 192.168.0.0/24-es hálózat felé 192.168.0.2 (eth1) IP-vel. Kiindulási állapotban minden forgalom a 192.168.64.1-es router felé halad, hiszen ez a számítógép alapértelmezett átjárója (default gateway) is.

A megoldás egyszerű: az eddig meglevő egyetlen route tábla mellé hozzunk létre még egyet, ahol a default gateway a korábbi 192.168.64.1-gyel ellentétben 192.168.66.1, majd a megfelelő, belső hálózatbeli gépek forgalmát irányítsuk ezen route tábla alapján. Mivel azonban a tűzfal némely szolgáltatásokat a külvilág számára is elérhetővé tesz, ezen szolgáltatások elérhetőségét is meg kell tartani – azaz biztosítani kell, hogy amelyik külső hálózat/router felől érkezik be kérés a tűzfalhoz, ugyanazon irányba menjen a válasz is. Íme a megoldás.

Az iproute2 csomagban levő /etc/iproute2/rt_tables fájlt egészítsük ki az alábbi két sorral:

2 reginet
3 ujnet

Hozzunk létre egy shell szkriptet az alábbi tartalommal, és gondoskodjunk róla, hogy a tűzfal minden indulásakor lefusson:

#!/bin/bash
# Régi szabályokat töröljük
ip route del 192.168.64.0/24
ip route del 192.168.66.0/24
ip route del 192.168.64.0/24 table reginet
ip route del 192.168.66.0/24 table ujnet
ip rule del from 192.168.64.2 table reginet
ip rule del from 192.168.66.2 table ujnet
ip route del default via 192.168.64.1 dev eth0
ip route del default via 192.168.64.1 dev eth0 table reginet
ip route del default via 192.168.66.1 dev eth2 table ujnet
 
# Ezen IP-kről érkező kérésre való válasznak errefelé kell kimenni
ip route add 192.168.64.0/24 dev eth0 src 192.168.64.2 table reginet
ip route add 192.168.66.0/24 dev eth2 src 192.168.66.2 table ujnet
 
# Ezen IP-kről ebbe az irányba ezen az IFACE-en kell kimenni (main routing table)
ip route add 192.168.64.0/24 dev eth0 src 192.168.64.2
ip route add 192.168.66.0/24 dev eth2 src 192.168.66.2
 
# Alapértelmezett kijárás
ip route add default via 192.168.64.1 dev eth0
 
# Ezen IP-kről ezen táblákon van meghatározva a kijárás és a default gateway
ip rule add from 192.168.64.2 table reginet
ip rule add from 192.168.66.2 table ujnet
ip route add default via 192.168.64.1 table reginet
ip route add default via 192.168.66.1 table ujnet
 
# 3-mal jelölt csomagok az ujnet tábla felé
ip rule add fwmark 3 table ujnet
ip route flush cache
 
# Ezen belső hálós gépekről kifelé menő csomagokat jelöljük meg
iptables -t mangle -A PREROUTING -s 192.168.0.101/32 -j MARK --set-mark 3
iptables -t mangle -A PREROUTING -s 192.168.0.12/32 -j MARK --set-mark 3

Az utolsó két sor által meghatározott IP-jű gépek innentől kezdve az új ADSL kapcsolatot használják a régi helyett. Mint látható, a route tábla/táblák beállítása után egyszerű iptables-szabályokkal lehet állítani, melyik belső hálós gép merre kommunikáljon kifelé. Ennek alapértelmezése a régi ADSL, azaz amíg egy gépre nincs külön szabály meghatározva, addig az a régi kapcsolatot használja.

Felhasznált irodalom:

Technológia: