ubuntu to tez linux
W poniższym artykule pragnę opisać sposób podłączenia do serwera 2 niezależnych łacz
i podział w taki sposób aby na jednym były strony www, komunikatory itd. a na 2 reszta
ruchu czyli p2p, ftp (to co najbardziej zapycha łacze).
Na początku trzeba skompilować jądro zaznaczając opcje(szczerze powiedziawszy
najlepiej zaznaczyc prawie wszystkie, ale na stałe, a nie jako moduły):
<*> Netlink device emulation
TCP/IP networking
IP: multicasting
IP: advanced router
IP: policy routing
IP: use netfilter MARK value as routing key
IP: fast network address translation
IP: equal cost multipath
IP: use TOS value as routing key
IP: verbose route monitoring
IP: kernel level autoconfiguration
<*> IP: tunneling
<*> IP: GRE tunnels over IP
<*> DECnet Support
DECnet: SIOCGIFCONF support
DECnet: router support (EXPERIMENTAL)
DECnet: use FWMARK value as routing key (EXPERIMENTAL)
w QoS and/or fair queueing ---> tez przydało by się zaznaczyć najlepiej wszystko
Następnie trzeba zainstalować programik iproute2

nie będe opisywał tego procesu bo
każdy powinien dać sobie z tym radę
Gdy juz iproute2 i kernel są, gotowe należy do jakiegos pliku startowego dopisać:
/etc/iproute2/rt_tables:
200 N1
201 N2
i do jakiegoś pliku startowego (np. /etc/rc.d/rc.local) skrypt:
#!/bin/bash
echo "Ładuję zmienne"
IF0=eth0-siec lokalna
IF1=eth1-1 lacze
IF2=eth2-2 lacze
IP1=IP_1_LACZA
IP2=IP_2_LACZA
P1=GATEWAY_1_LACZA
P2=GATEWAY_2_LACZA
P0_NET=192.168.1.0/24
P1_NET=adres_sieci/prefix
P2_NET=adres_sieci/prefix
ip route add $P1_NET dev $IF1 src $IP1 table N1
ip route add $P2_NET dev $IF2 src $IP2 table N2
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
ip route add default via $P1
ip rule add from $IP2 table N2
ip rule add from $IP1 table N1
ip route add $P0_NET dev $IF0 table N1
ip route add $P2_NET dev $IF2 table N1
ip route add 127.0.0.0/8 dev lo table N1
ip route add $P0_NET dev $IF0 table N2
ip route add $P1_NET dev $IF1 table N2
ip route add 127.0.0.0/8 dev lo table N2
ip route add default via $P1 table N1
ip route add default via $P2 table N2
ip route flush cache
Po takim zabiegu należy zrobić reboot.
Następnie sprawdzić wystukując komendy:
ip route show i ip rule show
jeśli wygląda to tak:
83.16.170.120/30 dev eth1 proto kernel scope link src 83.16.170.122
83.16.22.168/29 dev eth2 proto kernel scope link src 83.16.22.170
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.1
127.0.0.0/8 dev lo scope link
default via 83.16.170.121 dev eth1 metric 1
i tak:
0: from all lookup local
32764: from 83.17.170.122 lookup N1
32765: from 83.16.22.170 lookup N2
32766: from all lookup main
32767: from all lookup default
Znaczy ze wszystko jest ok i można przejść do dalszej konfiguracji
Instalujemy najpierw proxy (squid). Może być z paczki.
.. dopisujemy do pliku (najczęściej /etc/squid/squid.conf)
tcp_outgoing_address IP_LACZA_NA_KTORYM_MA_DZIALAC_SQUID
udp_outgoing_address IP_LACZA_NA_KTORYM_MA_DZIALAC_SQUID
Można rownież ograniczyć zakres portów które ma obsługiwać squid:
acl SSL_ports port 443 563 1550
acl Safe_ports port 80 443
Zapisujemy zmiany i odpalamy squid.
Nastepnie nalezy zrobic transparent proxy dla np. www
iptables -t nat -A PREROUTING -i eth0 -p tcp ! -d 192.168.1.0/24 --dport 80 -j DNAT --
to 192.168.1.1:8080
Co sprawi ze wszystkie połączenia z sieci lokalnej na porcie 80 beda "przeżucane" na
proxy a tym samym na 2 łącze

.
I to chyba na tyle

Do transparent proxy mozna dopisać inne usługi (ja miałem problem
z https ftp i poczta).