Tak jak obiecałem w HOWTO dot. kompilacji kernela
linux-2.4.24 ze napisze
nowe HOWTO w kotórym to będze dokładnie opisane jak
podłaczyć linuxa i go skonfigurować do dzielenia łacza dla 'przykładowo' 20
użytkowników
2. Założenia
1. Serwer postawiony na dystrybucji slackware 9.1 skonfigurowany wg mojego howto
2. 2 karty sieciowe 3com xxx ;>
eth0 ->
NET
eth1 -> LAN
3. Łącze stałe o przepustowości 1/1Mbits i przydzielonym
IP aaa.bbb.ccc.ddd
4. Podział łacza dla 20 uzytkowników w klasie IP
192.168.1.0/24
3. Konfiguracja interfejsów i routingu
Zakładam ze slack jest skompilowany z obłsugą iprouta2 i htb etc. tak więc zaczynamy od konfiguracji interfejsów sieciowych
wg. tego co przydziela nam dostawca z nowym łączem musimy
sobie poradzic i skonfigurowac serwer
Ustawiamy nasze wrota na INET
# ifconfig eth0 'IP' netmask 'MASKA' broadcast
'BROADCAST'
# route add default gw 'BRAMA'
A teraz nasza lokalke
# ifconfig eth1 192.168.1.1 netmask 255.255.255.0 brodcast 192.168.1.255
Oczywiscie przyjmuje ze necik chodzi bez problemu i
zajmiemy sie teraz naszym firewallem
Jest to bardzo ważny krok iż od tego
bedzie zależało jak bedzie nasz linux filtrował pakiety ;P
4. Konfiguracja FIRWALLA
------ CUT ----------- /etc/rc.d/rc.firewall
#!/bin/bash
# sciezka do
IPTABLES
IPT="/usr/local/sbin/iptables"
usage()
{
echo "Usage: $0
{start|stop}"
}
case "$1" in
start)
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
# interfejsy
GW="eth0"
IPGW="aaa.bbb.ccc.ddd" #
routowalny adres IP {od dostawcy}
IF="eth1"
IPIF="192.168.1.1"
# tu definiujejmy hosty ktorych adresy
maskujemy
NATED_HOSTS="192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14
192.168.1.15 192.168.1.16 192.168.1.17
192.168.1.18 192.168.1.19
192.168.1.20 192.168.1.21 192.168.1.22 192.168.1.23 192.168.24 192.168.1.25
192.168.1.26 192.168.1.27 192.168.1.28 192.168.1.29 192.168.1.30"
# a
to juz maskarada
for HOST in $NATED_HOSTS; do
$IPT -t nat -A
POSTROUTING -o $GW -s $HOST -j MASQUERADE
done
echo "1" >
/proc/sys/net/ipv4/conf/all/rp_filter
echo "1" >
/proc/sys/net/ipv4/ip_forward
# Hosty ktore ma wpuszczas serwer z sieci lokalnej
#
wg identyfijacji ADRES IP + MAC
$IPT -t nat -A PREROUTING -i $IF -s 192.168.1.11 -m mac
--mac-source 00:00:00:00:00:00 -j ACCEPT
$IPT -t nat -A PREROUTING -i $IF -s
192.168.1.12 -m mac --mac-source 00:00:00:00:00:01 -j ACCEPT
$IPT -t nat -A
PREROUTING -i $IF -s 192.168.1.13 -m mac --mac-source 00:00:00:00:00:02 -j
ACCEPT
$IPT -t nat -A PREROUTING -i $IF -s 192.168.1.14 -m mac --mac-source
00:00:00:00:00:03 -j ACCEPT
$IPT -t nat -A PREROUTING -i $IF -s 192.168.1.15
-m mac --mac-source 00:00:00:00:00:04 -j ACCEPT
$IPT -t nat -A PREROUTING -i
$IF -s 192.168.1.16 -m mac --mac-source 00:00:00:00:00:05 -j ACCEPT
$IPT -t
nat -A PREROUTING -i $IF -s 192.168.1.17 -m mac --mac-source 00:00:00:00:00:06
-j ACCEPT
$IPT -t nat -A PREROUTING -i $IF -s 192.168.1.18 -m mac
--mac-source 00:00:00:00:00:07 -j ACCEPT
$IPT -t nat -A PREROUTING -i $IF -s
192.168.1.19 -m mac --mac-source 00:00:00:00:00:08 -j ACCEPT
$IPT -t nat -A
PREROUTING -i $IF -s 192.168.1.20 -m mac --mac-source 00:00:00:00:00:09 -j
ACCEPT
$IPT -t nat -A PREROUTING -i $IF -s 192.168.1.21 -m mac --mac-source
00:00:00:00:00:0A -j ACCEPT
$IPT -t nat -A PREROUTING -i $IF -s 192.168.1.22
-m mac --mac-source 00:00:00:00:00:0B -j ACCEPT
$IPT -t nat -A PREROUTING -i
$IF -s 192.168.1.23 -m mac --mac-source 00:00:00:00:00:0C -j ACCEPT
$IPT -t
nat -A PREROUTING -i $IF -s 192.168.1.24 -m mac --mac-source 00:00:00:00:00:0D
-j ACCEPT
$IPT -t nat -A PREROUTING -i $IF -s 192.168.1.25 -m mac
--mac-source 00:00:00:00:00:0E -j ACCEPT
$IPT -t nat -A PREROUTING -i $IF -s
192.168.1.26 -m mac --mac-source 00:00:00:00:00:0F -j ACCEPT
$IPT -t nat -A
PREROUTING -i $IF -s 192.168.1.27 -m mac --mac-source 00:00:00:00:00:1A -j
ACCEPT
$IPT -t nat -A PREROUTING -i $IF -s 192.168.1.28 -m mac --mac-source
00:00:00:00:00:2A -j ACCEPT
$IPT -t nat -A PREROUTING -i $IF -s 192.168.1.29
-m mac --mac-source 00:00:00:00:00:3A -j ACCEPT
$IPT -t nat -A PREROUTING -i
$IF -s 192.168.1.30 -m mac --mac-source 00:00:00:00:00:4A -j
ACCEPT
# Blokujemy ruch
$IPT -t nat -A POSTROUTING -s 192.168.1.0/24 -d
192.168.1.0/24 -j ACCEPT
$IPT -t nat -A POSTROUTING -s 192.168.0.0/16 -d
192.168.0.0/16 -j DROP
# Blokujemy piratow!
$IPT -t nat -A PREROUTING -i $IF -j DROP
##
echo "Firewall wlaczony"
;;
stop)
$IPT
-F
$IPT -Z
$IPT -X
$IPT -t nat -F
$IPT -t nat -Z
$IPT -t nat
-X
echo "Firewall wylaczony"
;;
*)
usage
;;
esac
------ cut ---------
I tak własnie mamy bardzo
prostego i skutecznego firewalla, tzn nikt z lokalki nie będzie miał dostępu do
Internetu jeżeli nie przypisze się go do maskarady i do tablicy która sprawdza
powiązania IP + MACi i dopuszcza do serwera w każdym innym przypadku taki
delikfent jest blokowany i nie widzi naszego serwera z sieci lokalnej.
Nie
bede tutaj zagłębiał się i opisywał każdą linijkę po kolei, gdyż wprowadzenie do
firewalla macie dzięki uprzejmosci "pitt2k" który to napisał 2 artykuły na ten
temat:
Artykuł 1
Artykuł 2
aczkolwiek
jak by ktoś nie rozumiał czegos to czekam na maile.
5. Teraz pozostał nam ostatni kąsek czyli dzielenie łącza oparte o HTB
------ cut ------- /etc/firewall/htb
#!/bin/sh
tc=/sbin/tc
iface_in="eth0"
iface_out="eth1"
band_full="1024000kbit"
band_inet="960kbit"
band_inet_full="1024kbit"
band_inc="960kbit"
band_lan="102400kbit"
podsiec1="1"
ip_serw_lan="192.168."$podsiec1".1"
#wart
min transferu
rate="100kbit"
#wart max przy zalozeniu ze inni nie
wykorzystaja pasma
ceil="360kbit"
# czyszczenie regulek
echo "czyszcze"
$tc qdisc del
root dev $iface_in
$tc qdisc del root dev $iface_out
$tc qdisc del dev
$iface_in ingress
$tc qdisc del dev $iface_out ingress
echo
"done"
echo "root"
$tc qdisc add dev $iface_out root handle
1: htb
echo "glowna"
#kolejka glowna - max
przepustowosc
$tc class add dev $iface_out parent 1: classid 1:1 htb rate
$band_full ceil $band_full
echo "net"
#kolejka dla netu
$tc class add dev
$iface_out parent 1:1 classid 1:2 htb rate $band_inet ceil
$band_inet_full
echo "lan"
#kolejka dla lanu
$tc class add dev
$iface_out parent 1:1 classid 1:3 htb rate $band_lan ceil $band_lan
echo "dostep do kabla dla wielu
polaczen"
#sprawiedliwy dostep do kabla dla wielu jednoczesnych
polaczen
$tc qdisc add dev $iface_out parent 1:3 handle 3:0 sfq perturb
10
#echo "filtrowanie pakietow wracajacych"
#$tc qdisc
add dev $iface_in handle ffff: ingress
#$tc filter add dev $iface_in parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate $band_inc burst 15k drop flowid :1
##tc filter add dev $iface_out protocol ip preference 1 parent ffff: u32 match ip src 192.168.0.0/16 police rate $band_lan burst $band_lan drop flowid :2
echo "HTB dla podsieci .$podsiec1."
#nr
ip
x=10
#nr flowid
x1=30
while [ $x -le 30 ] ; do
x=$((x+1))
;
x1=$((x1+2)) ;
$tc class add dev $iface_out parent 1:2 classid 1:$x1 htb
rate $rate ceil $ceil ;
$tc filter add dev $iface_out protocol ip preference
2 parent 1: u32 match ip dst 192.168.$podsiec1.$x flowid 1:$x1 ;
$tc qdisc
add dev $iface_out parent 1:$x1 handle $x1:0 sfq perturb 10 ;
done
echo "
done $podsiec1 "
echo "HTB done."
---------cut--------------
I to jest już koniec ;))
Wystarczy tyle żeby to
wszystko dobrze chodzilo teraz możecie odpalić sobie 'iptrafa' i patrzeć jakie
macie obaciążenia na serwerze a najlepiej jakieś statystyki dla łacza ;>
Może innym razem jak znajde wiecęj czasu opisze jak robic statystyki
łacza...