Gotowego rozwiazania nie mam. Moge Ci napisac co masz mniej wiecej zrobic. Konfigurujesz net_confem jakbys mial tylko DSL2 i LAN. Teraz caly ruch idzie przez niego. Podnosisz pozostale 2 sieciowki (popatrz na przyklad w /etc/network/internal). Dodajesz wpisy w /etc/iproute2/rt_tables np. 20000 symetryk i 10000 DSL1 (to jednorazowo, reszte proponuje zrobic w skrypcie podnoszacym interfejs). Dodajesz trasy domyslne do tych dwoch tabel:
ip route add default via brama dsl1 dev sieciowka dsl1 table DSL1
Dla symetryka podobnie:
ip route add default via brama symetryka dev sieciowka symetryka table symetryk
Musisz tez dodac odpowiednie wpisy do tych tabel:
ip rule from siec dsl1/maska dsl1 (siec dsl to ip o jeden nizsze niz ip modemu) table DSL1. TO samo dla symetryka.
Teraz dalej wszystko idzie przez DSL2, ale masz juz gotowe pozostale 2 lacza, tylko trzeba do nich wrzucic odpowiednie rzeczy. Proponuje nie dawac gier razem z ftp i poczta, bo gracze moga narzekac. Problem tez bedzie ze skype, bo ten cudak wykorzystuje swoj protokol i dziala na losowo wybieranym porcie, wiec nie udalo mi sie go wylapac.
Proponuje wiec tak:
DSL1: www, www szyfrowane, ssh, gg, gry, ping, dns
Symetryk: FTP, poczta, reszta niskich portow
DSL2: p2p i cala reszta
Teraz pytanie czy chcesz dynamiczny podzial lacza, czy obejdzie sie bez tego. Narazie, zeby Cie calkiem nie straszyc napisze Ci rozwiazanie bez podzialu. Jak sobie z nim poradzisz i bedziesz chcial z podzialem, to daj znac.
Powiedzmy, ze DSL1 przydzielisz mark 300 (w heksach12C), a symetrykowi mark 600 (w heksach 258). Proponuje to tez dopisac do skryptow podnoszacych interfejsy.
ip rule add fwmark 12C table DSL1
ip route flush cache
Dla symetryka:
ip rule add fwmark 258 table symetryk
ip route flush cache
Tworzenie SNAT (ew. maskarady) masz w poscie z firewallem- link gdzies ponizej. To tez dodaj najlepiej do firewalla.
Teraz pozostaje tylko zaznaczyc odpowiednie uslugi przydzielonymi markami (wazne jest, zeby reguly dla symetryka byly wczesniej):
Dla symetryka:
#wszystko na niskich tcp poza 411 i 412 (DC++)
iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 1:400 -j MARK --set-mark 0x600
iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 413:1024 -j MARK --set-mark 0x600
Dla DSL1:
#ping
iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -p icmp -j MARK --set-mark 0x300 (192.168.1.0/24 zmien na odpowiadajace swojej sieci)
#www
iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j MARK --set-mark 0x300
#szyfrowane
iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 443 -j MARK --set-mark 0x300
#gg
iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 8074 -j MARK --set-mark 0x300
#dns
iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -p udp --dport 53 -j MARK --set-mark 0x300
#ssh
iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 22 -j MARK --set-mark 0x300
#gry (tu porty musisz wylapac sam, napisze Ci tylko jak rozwiazalem #problem z cs 1.6 i steamem. Przydzielalem to tylko tym ktorzy mi #zglosili, ze graja, bo serwery csa stoja na najrozniejszych portach, ktore #czasem pokrywaja sie z portami p2p)
iptables -t mangle -A PREROUTING -s ip gracza (ja mam dla kazdego osobne reguly) -d 207.173.177.0/24 -j MARK --set-mark 0x300
iptables -t mangle -A PREROUTING -s ip gracza -p tcp --dport 27000:28000 -j MARK --set-mark 0x300
iptables -t mangle -A PREROUTING -s ip gracza -p udp --dport 15000:65000 -j MARK --set-mark 0x300
#na koniec wyrzuc p2p z zamarkowanych portow
iptables -I FORWARD -m ipp2p --ipp2p -m mark --mark 0x300 -j DROP
iptables -I FORWARD -m ipp2p --ipp2p -m mark --mark 0x600 -j DROP
Wiem, ze niektore porty (np. 80) sa markowane 2 razy, ale liczy sie ten ostatni, dlatego wazne jest, zeby reguly dla symetryka byly wczesniej.
Opis konfiguracji firewalla masz w tym watku:
http://forum.freesco.pl/viewtopic.php?t=11195 . Koniecznie popatrz na 2 posta, tego ze zmiana rt_tables. Bez tego nie pojdzie.
. Bedziesz go musial troche przerobic, zeby odpowiadal Twojej sytuacji. W razie problemow pisz.