Mój pierwszy ruter - pytania

Masz problemy z siecią bądź internetem? Zapytaj tu
Awatar użytkownika
sponsoriada
Beginner
Posty: 149
Rejestracja: 03 października 2010, 22:58
Lokalizacja: Płock

Mój pierwszy ruter - pytania

Post autor: sponsoriada »

Witam.
Usiadłem dzisiaj żeby to się człowiekowi nie nudziło do komputera i napisałem mój pierwszy router. Potrzebuje trochę porad. Na początek mój serwer:
[INDENT]łącze:
[INDENT]pobieranie 3,5Mbit/s
wysyłanie: 3,5Mbit/s[/INDENT][/INDENT]
Internet na eth0>nat>eth1 192.168.1.0/24

Kod: Zaznacz cały

ifconfig

Kod: Zaznacz cały

eth0      Link encap:Ethernet  HWaddr 00:50:7f:aa:15:c1  
          inet addr:80.48.4.229  Bcast:80.48.4.255  Mask:255.255.255.224
          inet6 addr: fe80::250:7fff:feaa:15c1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:94178 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34567 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:22615295 (21.5 MiB)  TX bytes:3882408 (3.7 MiB)
          Interrupt:252 Base address:0x4000 

eth1      Link encap:Ethernet  HWaddr 00:10:5a:c9:46:e0  
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::210:5aff:fec9:46e0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:244265 errors:0 dropped:0 overruns:0 frame:0
          TX packets:503461 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:18052988 (17.2 MiB)  TX bytes:750115314 (715.3 MiB)
          Interrupt:21 Base address:0x6c00 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:89 errors:0 dropped:0 overruns:0 frame:0
          TX packets:89 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:8547 (8.3 KiB)  TX bytes:8547 (8.3 KiB)
/etc/network/interfaces

Kod: Zaznacz cały

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
rc.router

Kod: Zaznacz cały

#!/bin/sh
ifconfig eth0 down
ifconfig eth0 hw ether 00:50:7f:aa:15:c1
dhclient eth0
ifconfig eth1 192.168.1.1 up

echo "1" > /proc/sys/net/ipv4/ip_forward

#Czyszczenie tablic
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter
#Domyslna polityka dzialania
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT ACCEPT

#Utrzymywanie polaczen nawiazanych



#przekierowanie pakietow, obie strony
iptables -t filter -A FORWARD -s 192.168.1.0/255.255.255.0 -d 0/0 -j ACCEPT
iptables -t filter -A FORWARD -s 0/0 -d 192.168.1.0/255.255.255.0 -j ACCEPT
#Nat- zamienianie z Ip wew na zew.
iptables -t nat -A POSTROUTING -s 192.168.1.0/16 -o eth0 -j SNAT --to-source 80.48.4.229

#Blokowanie odpowiedzi na ping
iptables -t filter -A INPUT -p icmp --icmp-type echo-request -j DROP
#Odblokowanie icmp w sieci
iptables -t filter -A INPUT -i eth1 -p icmp --icmp-type echo-request -j ACCEPT

#Przekierowania portów
#iptables -t nat -A PREROUTING -p tcp -i eth0 -s 0/0 --dport 1550 -j DNAT --to 192.168.1.10
#iptables -t nat -A PREROUTING -p udp -i eth0 -s 0/0 --dport 1550 -j DNAT --to 192.168.1.10

#Krztaltowanieruchu

#Czyszczenie wpisow
tc qdisc del root dev eth0
tc qdisc del root dev eth1

#Tworzenie klasy domyslnej
tc qdisc add dev eth root handle 1:0 htb default 

#Okreslanie maksymalnej predkosci lacza
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 3mbit ceil 3584kbps

#Klasa dla pozostalych pakietow
tc class add dev eth0 parent 1:1 classid 1:2 htb rate 256kbps ceil 512kbps

#Definicje klas dla poszczegolnych uslug
#SSH+SIP
tc class add dev eth0 parent 1:1 classid 1:3 htb rate 758kbps ceil 1mbit 
#SIP
tc class add dev eth0 parent 1:3 classid 1:30 htb rate 379kbps ceil 758kbps
tc class add dev eth0 parent 1:3 classid 1:31 htp rate 379kbps ceil 758kbps
#Komputery
tc class add dev eth0 parent 1:1 classid 1:4 htb rate 2048kbps ceil 3mbit
tc class add dev eth0 parent 1:1 classid 1:40 htb rate 1024kbps ceil 2048kbps
tc class add dev eth0 parent 1:5 classid 1:41 htb rate 1024kbps ceil 2048kbps
#Filtr
tc filter add dev eth0 protocol ip parent 1:0 u32 match ip sport 22 0xffff flowid 1:31
#Deklaracja lacza dla hosta
##BramkaVoiP
tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.1.104 flowid 1:30
##S&S
tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.1.100 flowid 1:40
tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.1.103 flowid 1:41

hostname ispons.pl
killall -9 dhcpd
dhcpd eth1
Prosiłbym o jakieś wskazówki albo wytknięcie jakiś błędów. Chciałbym jeszcze skonfigurować SFQ. Z tego co się dowiedziałem to on odpowiada które pakiety mają pierwszeństwo. Tak żeby ssh i sip miały największy priorytet.
I moje ostatnie pytanie wszędzie jest:

Kod: Zaznacz cały

add dev eth0
i tak się zastanawiam czy jak bramka SIP albo komputery wewnątrz sieci są pod eth1 to reguła gwarantująca przepustowość nie powinna być jako eth1. Mógłby to ktoś mi wyjaśnić? Z góry dziękuję i pozdrawiam.
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post autor: grzesiek »

Sposób kontroli przepustowości jaki użyłeś może kontrolować tylko ruch wychodzący, czyli przychodzące z zewnątrz, przechodzące przez router i wychodzące przez kartę sieci wewnętrzną (jej nazwa). Chyba o to Ci chodzi.
Awatar użytkownika
sponsoriada
Beginner
Posty: 149
Rejestracja: 03 października 2010, 22:58
Lokalizacja: Płock

Post autor: sponsoriada »

Tak. Pytania i potrzeby moje są takie. Czy jeśli na eth0 mam wyjście zewnętrzne a na eth1 sieć wewnętrzną to reguła

Kod: Zaznacz cały

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.1.103 flowid 1:41
jest dobrze skonstruowana?
Robię to pierwszy raz więc chciałbym wiedzieć, czy on sobie sam z eth0 przekieruje na 192.168.1.103 i zarezerwuje mu pasmo?
I jeszcze potrzebuje bardzo wiedzieć jak działają priorytety. Które pakiety są ważniejsze i mają pierwszeństwo. Chciałbym aby klasa 1:31 albo, czyli ssh miała pierwszeństwo przed innymi.

Dodane:
Panie i panowie wytłumaczcie mi jak mam teraz ustawić kolejki. Jak dołożyć sfq i priorytet. I co to jest priorytet? To mój poprawiony ruter.

Kod: Zaznacz cały

#!/bin/sh
ifconfig eth0 down
ifconfig eth0 hw ether 00:50:7f:aa:15:c1
dhclient eth0
ifconfig eth1 192.168.1.1 up

echo "1" > /proc/sys/net/ipv4/ip_forward

#Czyszczenie tablic
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter
#Domyslna polityka dzialania
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT ACCEPT

#Utrzymywanie polaczen nawiazanych

#Przekierowaniewanie pakietow, obie strony
iptables -t filter -A FORWARD -s 192.168.1.0/255.255.255.0 -d 0/0 -j ACCEPT
iptables -t filter -A FORWARD -s 0/0 -d 192.168.1.0/255.255.255.0 -j ACCEPT
#Nat- zamienianie z Ip wew na zew.
iptables -t nat -A POSTROUTING -s 192.168.1.0/16 -o eth0 -j SNAT --to-source 80.48.4.229

#Blokowanie odpowiedzi na ping
iptables -t filter -A INPUT -p icmp --icmp-type echo-request -j DROP
#Odblokowanie icmp w sieci
iptables -t filter -A INPUT -i eth1 -p icmp --icmp-type echo-request -j ACCEPT

#Przekierowania portów
#iptables -t nat -A PREROUTING -p tcp -i eth0 -s 0/0 --dport 1550 -j DNAT --to 192.168.1.10
#iptables -t nat -A PREROUTING -p udp -i eth0 -s 0/0 --dport 1550 -j DNAT --to 192.168.1.10

#Krztaltowanieruchu

#Czyszczenie wpisow
tc qdisc del root dev eth0
tc qdisc del root dev eth1

#Tworzenie klasy domyslnej
tc qdisc add dev eth root handle 1:0 htb default 

#Okreslanie maksymalnej predkosci lacza
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 3mbit ceil 4mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 128kbps ceil 3mbit
tc class add dev eth0 parent 1:10 classid 1:100 htb rate 64kbps ceil 128kbps
tc class add dev eth0 parent 1:10 classid 1:101 htb rate 64kbps ceil 128kbps 
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 1792kbps ceil 3mbit
tc class add dev eth0 parent 1:2 classid 1:200 htb rate 896kbps ceil 1536kbps
tc class add dev eth0 parent 1:2 classid 1:201 htb rate 896kbps ceil 1536kbps
tc class add dev eth0 parent 1:1 classid 1:30 htb rate 1mbit ceil 3mbit
tc class add dev eth0 parent 1:30 classid 1:300 htb rate 512kbps ceil 1mbit
tc class add dev eth0 parent 1:30 classid 1:301 htb rate 512kbps ceil 1mbit
tc class add dev eth0 parent 1:1 classid 1:40 htb rate 128kbps ceil 3mbit

#Filtr
tc filter add dev eth0 protocol ip parent 1:0 u32 match ip sport 22 0xffff flowid 1:100
tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.1.104 flowid 1:101
tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.1.100 flowid 1:200
tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.1.103 flowid 1:201
tc filter add dev eth0 protocol ip parent 1:0 u32 match ip sport 21 0xffff flowid 1:300
tc filter add dev eth0 protocol ip parent 1:0 u32 match ip sport 80 0xffff flowid 1:301

hostname ispons.pl
killall -9 dhcpd
dhcpd eth1
Dodane:
I co Panie i Panowie nikt mi nie pomoże? Pytanie jedno bo się zagubiłem, klasy które porobiłem na przydzielanie łącza dotyczą tego co ściągam, tak?
I moje pytanie jeszcze co do:

Kod: Zaznacz cały

#Nat- zamienianie z Ip wew[b]nętrzne[/b] na zew[b]nętrzne[/b]
iptables -t nat -A POSTROUTING -s 192.168.1.0/16 -o eth0 -j SNAT --to-source 80.48.4.229
A co jeśli moje IP się zmienia co jakiś czas? Proszę o pomoc w zrozumieniu tego wszystkiego. Niestety czytając poradnik nie wszystko do mnie trafia. Chciałbym zrobić tak żeby pakiety, które trafiają przez filtr do klasy 1:100 i 1:101 miały najwyższy priorytet.

Dodane:
Czy dobrze rozumiem? Jest to kontrola ruchu który przychodzi ze świata do mnie tak?
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post autor: grzesiek »

Nie właśnie, bo taki ruch urządzenie odbierające może tylko 'łapać' czyli buforować.
Awatar użytkownika
sponsoriada
Beginner
Posty: 149
Rejestracja: 03 października 2010, 22:58
Lokalizacja: Płock

Post autor: sponsoriada »

Rozumiem, czyli w ten sposób mogę kontrolować ruch wychodzący ode mnie z sieci. A czy w jakiś sposób mogę kontrolować ruch przychodzący do mnie? Mam 3 komputery w sieci i 2 inne urządzenia w tym bramkę VoIP. Chciałbym zapewnić jej wystarczające pasmo i priorytet podczas rozmów. Można to w jakiś sposób uzyskać?
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post autor: grzesiek »

Tak, jakieś sztuczne interfejsy się robi, ja się tym nie zajmowałem, ale był ten temat poruszany na forum może jakiś rok temu - poszukaj.
Awatar użytkownika
markossx
Beginner
Posty: 489
Rejestracja: 26 maja 2007, 16:01
Lokalizacja: Polska

Post autor: markossx »

Łańcuch INPUT powinien być ustawiony na DROP.
Awatar użytkownika
sponsoriada
Beginner
Posty: 149
Rejestracja: 03 października 2010, 22:58
Lokalizacja: Płock

Post autor: sponsoriada »

Jeśli dam łańcuch INPUT na DROP to zablokuję wszystko co będzie do mnie przychodziło i będą wtedy problemy.
snejk
Posty: 78
Rejestracja: 03 sierpnia 2010, 00:33
Lokalizacja: /dev/random

Post autor: snejk »

Łańcuch INPUT ustawia się na DROP a następnie otwiera tylko potrzebne porty. Taka jest zasada pisania firewalla. Jeżeli chcesz też kontrolować ruch przychodzący to musisz zainteresować się IMQ, ale nie obejdzie się bez rekomplacji i patchowania jądra / iptables / iproute2. Ogólnie polecam projekt LinuxBox. Ściągasz z niego gotowy powerpack i nie musisz szukać godzinami odpowiednich patchy na odpowiednie wersje.
Awatar użytkownika
sponsoriada
Beginner
Posty: 149
Rejestracja: 03 października 2010, 22:58
Lokalizacja: Płock

Post autor: sponsoriada »

No dobrze, a teraz mam pytanie takie. Jeśli w sieci mam ps3 to muszę otworzyć porty, z których korzysta i przekierować na niego. Mógłby mi ktoś napisać jak otworzyć port np. 80 na serwer - przypomnę eth0 to zewnętrzny interfejs na serwerze /nat eth1 - wewnętrzny. Prosiłbym bardzo o przykład. Z góry dziękuję.
ODPOWIEDZ