routing.conf

# example routing config file

####################
##   INTERFEJSY   ##
####################

# indeksy tablicy konfiguracyjnej interfejsow dla:
#  interfejsu wewnętrznego
int_conf=0
# interfejsu zewnętrznego
ext_conf=1
# interfejsu zewnętrznego dla ipv6
extv6_conf=2


# typ konfiguracji o numerze X int = interfejs, sit = tunel typu sit
mode[0]="int"
# nazwa interfejsu tunelu o numerze
name[0]="eth0"
# prędkość urządzenia dla traffic control
interface_speed[0]="99mbit"

# podstawowy numer IPv4
base_ipv4[0]="192.168.1.1"
# długość prefixu (maska w postaci ilości bitów o wartości 1) podstawowego numeru IPv4
base_maskv4[0]="24"
# bramka domyślna IPv4
#gatewayv4[X]="IP.IP.IP.IP"
# dodatkowe adresy IPv4 rozdzielane spacjami
other_ipv4[0]="192.168.1.254 192.168.10.1"
# długości prefixów (maski w postaci ilości bitów o wartości 1) dodatkowych adresów IPv4 rozdzielane spacjami (w kolejności takiej jak adresy)
other_maskv4[0]="24 24"

# podstawowy numer IPv6
base_ipv6[0]="2001:db8::1"
# długość prefixu (maskaw postaci ilości bitów o wartości 1) podstawowego numeru IPv6
base_maskv6[0]="48"
# bramka domyślna IPv6
# gatewayv6[X]="IP:IP::IP"
# dodatkowe adresy IPv6 rozdzielane spacjami
other_ipv6[0]="2001:db8::5879:12df"
# długości prefixów (w postaci ilości bitów o wartości 1) dodatkowych adresów IPv6 rozdzielane spacjami (w kolejności takiej jak adresy)
other_maskv6[0]="48"

# adres IPv4 drugiego końca tunelu (tylko dla sit)
#remote[X]="IP.IP.IP.IP"
# adres IPv4 tego końca tunelu (tylko dla sit)
#local[X]="IP.IP.IP.IP"


mode[1]="int"
name[1]="eth1"
base_ipv4[1]="10.10.0.1"
base_maskv4[1]="24"
# bramka domyślna IPv4
gatewayv4[1]="10.10.0.2"


mode[2]="sit"
name[2]="tun1"
base_ipv6[2]="2001:db8:1::5"
base_maskv6[2]="126"
remote[2]="10.10.2.1"
local[2]="10.10.0.1"



##################
##   IPTABLES   ##
##################

# rozdzielana spacjami lista blokowanych portów
block_ports="98 143 10000 20000"

# typ NATu - SNAT (gdy na interfejsie z stałym IP) lub MASQUERADE (gdy na interfejsie z zmiennym IP) lub NO (aby nie korzystać z natu)
nat_mode="SNAT"
# sieć NATowana
nat_network="192.168.1.0/24"

# adresy IP (ewentualnie sieci w postaci adres.sieci/maska_krotka)
#   uprawnione do wyjścia na świat, można wczytać z pliku np. forwarding_ip=`<plik.conf`
#   każda linia jest wrzucana do jednej kolejki HTB, składa się z 4 pól rozdzielanych | ->
#   lista adresów IPv4 (rozdz. spacjami), lista adresów IPv6 (rozdz. spacjami),
#   ograniczenia HTB - prędkość gwarantowana, ograniczenia HTB - prędkość maksymalna
forwarding_ip=`cat /etc/forwarding_ip.conf`
forwarding_ip="$forwarding_ip
192.168.1.0/26|2001:db8::341 2001:db8::342|100kbit|90kbit
192.168.1.244||100kbit
192.168.1.245"

#  tymczasowe i spacjalne ustawienia routingu (np. iptables)
#   mogą to być wszczególności przekierowania portów dla połączeń p2p:
#    iptables -A PREROUTING -t nat -d $IP_ZEWNETRZNE -p tcp --dport $PORT_ZEWNETRZNY \
#    -j DNAT --to $IP_WEWNETRZNE:$PORT_WEWNWTRZNY
#  a także inne ustawienia, jak tymczasowe blokady itp
router_tmp(){
  # ograniczenie ilości pingów do 16 na minute ...
  # sprzątamy
  iptables -F PINGI 2> /dev/null
  iptables -X PINGI 2> /dev/null
  # wszystkie tworzymy osobny łańcuch na pingi
  iptables -N PINGI
  # kierujemy do niego wszystkie pingi
  iptables -A INPUT -p icmp --icmp-type echo-request -j PINGI
  # puszczamy 16 na minute
  iptables -A PINGI -m limit --limit 16/minute -j ACCEPT
  # reszte DROPujemy
  iptables -A PINGI -j DROP
  # powyższe ilustruje też tworzenie własnego łańcucha i kierowanie ruchu do niego
  # zamiast powtarzania reguły filtrującej (-p icmp --icmp-type echo-request)
  # w każdej z reguł mających normalny TARGET (w tym wypadku regół działających na łańcuchu PINGI)
  
  # dostęp do SMTP z LANu na niestandardowym porcie (zab. pred robakami wysyłającymi spam)
  iptables -A PREROUTING -t mangle -s 192.168.0.0/16 -d 0.0.0.0/0 -p tcp --dport 325 -j MARK --set-mark 0x01
  iptables -A PREROUTING -t mangle -s 192.168.0.0/16 -d 0.0.0.0/0 -p tcp --dport 25  -j MARK --set-mark 0x00
  iptables -A PREROUTING -t nat    -s 192.168.0.0/16 -d 0.0.0.0/0 -p tcp --dport 325 -j DNAT --to :25
  iptables -A FORWARD -s 192.168.0.0/16 -d 0.0.0.0/0 -p tcp --dport 25 -m mark --mark 0x01 -j ACCEPT
  iptables -A FORWARD -s 192.168.0.0/16 -d 0.0.0.0/0 -p tcp --dport 25 -j DROP
  # wykorzystane w powyższym markowanie można także sprawdzać/wykorzystać w:
  # - filtrach tc (patrz poniżej)
  # - w wyborze tablicy routingu (ip rule ... fwmark)
  # - itd
  
  # przyjmujemy tylko ssh
  # iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  # iptables -A INPUT -p tcp -j DROP

  # forward pomiędzy dwiema klasami adresowymi LANu
  # w zasadzie należy konfigurować na każdym hoście na urządzeniu routing na dwie klasy
  # chyba że są to różne vlany lub różne fizyczne lany
  iptables -A FORWARD -i ${name[$int_conf]} -s $nat_network -d 192.168.10.1/24 -j ACCEPT
  iptables -A FORWARD -i ${name[$int_conf]} -s 192.168.10.1/24 -d $nat_network -j ACCEPT

  # przekierowanie portu do LANU
  iptables -A PREROUTING -t nat -d ${base_ipv4[$ext_conf]} -p tcp --dport 8024 -j DNAT --to 192.168.1.80:8010
  
  # MTU dla tuneli IPv6
  # ifconfig eth1 mtu 1280
  ifconfig tun1 mtu 1280
}



##########################
##    TrafficControl    ##
##########################

# czy korzystać z IMQ (wymaga to kernela skompilowanego z obsługą IMQ w trybie AB)
use_imq=true

# czy korzystać z kolejki priorytetowej umieszczoneuj "powyżej" htb
use_prio_queue=true

# host z którego filtryujemy po ToS dla potzeb ruchu priorytetowego
voip_host_ipv4="10.10.0.1"
voip_host_ipv6="2001:db8::341 2001:db8::456"


# czy włączone tc (htb) dla uploadu
use_tc_up=true
# pełna prędkość urządzenia zewnętrznego dla traffic control (do ISP)
full_speed_up="3010898"
# prędkośc gwarantowana kolejki priorytetowej
pri_speed_up="160kbit"
# prędkość urządzenia zewnętrznego po odjęciu rezerwy (do podziału na uzytkowników)
speed_up="2700000"
# prędkość gwarantowana uploadu dla sieci serwerowej
serw_speed_up="1000kbit"
# prędkość gwarantowana uploadu dla sieci LAN
lan_speed_up="500kbit"

#  dodatkowe ustawienia filtru pakierow dla traffic control dla uploadu
#   np. filtrowanie po portach (u32 match ip [dport|sport])
#    lub polu TOS (u32 match ip tos ...)
#    lub na podstawie znaczników fwmark uswawianych przez -j MARK --set-mark (handle)
#  zamiast "preference PREF" należy korzystać z $TC_PREF ustawianej wywołaniem "tc_pref_inc NUM"
#  gdzie NUM odpowiada liczbie całkowitej >=0 i <=9, standarowe wartości NUM:
#   1 - wewnetrzne
#   3 - priorytetowe
#   5 - serwery
#   7 - reszta sieci
tc_filter_tmp_up() {
  # uprzywilejowanie pingów z wybranego hosta
  tc_pref_inc 3
  tc filter add dev $tc_up_dev protocol ip $TC_PREF parent 2:0 u32 match ip protocol 1 0xff match ip src $voip_host_ipv4 flowid 2:4
  
  # operowanie na ruchu oznaczonym poprzez "-j MARK --set-mark 0x03" w iptables
  # tc_pref_inc 3; tc filter add dev $tc_up_dev protocol all $TC_PREF parent 2:0 handle 3 fw flowid 2:4
}


# czy włączone tc (htb) dla downloadu
use_tc_down=true
# różnica prędkości urządzenia wewnętrznego i łącza (prędkość kolejki ruchu wewnętrznego)
int_speed_down="95mbit"
# pełna prędkość urządzenia zewnętrznego dla traffic control (od ISP)
full_speed_down="3010898" # 2.88 * 1024 * 1024 = 3019898
# prędkośc gwarantowana kolejki priorytetowej
pri_speed_down="160kbit"
# prędkość urządzenia zewnętrznego po odjęciu rezerwy (do podziału na uzytkowników)
speed_down="2700000"
# minimalne (gwarantowane) prędkości dla pojedynczych użytkowników (grup IP zaliczanych do kolejki pojedyńczego użytkownika)
user_speed_down="100kbit"

#  dodatkowe ustawienia filtru pakierow dla traffic control dla downloadu
#   np. filtrowanie po portach (u32 match ip [dport|sport])
#    lub polu TOS (u32 match ip tos ...)
#    lub na podstawie znaczników fwmark uswawianych przez -j MARK --set-mark (handle)
#  zamiast "preference PREF" należy korzystać z $TC_PREF ustawianej wywołaniem "tc_pref_inc NUM"
#  gdzie NUM odpowiada liczbie całkowitej >=0 i <=9, standarowe wartości NUM:
#   1 - wewnetrzne
#   3 - priorytetowe
#   5 - serwery
#   7 - reszta sieci
tc_filter_tmp_down() {
  # filtracja w oparciu o protokół - ICMP (numery w /etc/protocols)
  tc_pref_inc 3
  tc filter add dev $tc_down_dev protocol ip $TC_PREF parent 1:0 u32 match ip protocol 1 0xff flowid 1:4
  # filtracja w oparciu o IP przeznaczenia
  tc_pref_inc 3
  tc filter add dev $tc_down_dev protocol ip $TC_PREF parent 1:0 u32 match ip dst $voip_host_ipv4 flowid 1:4
  # w odróżnieniu od regóły zaprezentowanej w tc_filter_tmp_up() tutaj uprzywilejowany jest cały ruch ICMP i cały ruch do hosta $voip_host
  
  # filtracja w oparciu o ToS
  tc_pref_inc 3
  tc filter add dev $tc_down_dev protocol ip $TC_PREF parent 1:0 u32 match ip tos 0x10 0xff flowid 1:4
  
  # filtracja w oparciu o port - SSH (uwaga po ssh można przesyłać w zasadzie wszystko, także duże pliki więc jego uprzywilejowywanie jest kontrowersyjne)
  tc_pref_inc 3
  tc filter add dev $tc_down_dev protocol ip $TC_PREF parent 1:0 u32 match ip dport 22 0xffff flowid 1:4
}

XHTML generated by highlight (http://www.andre-simon.de/) from routing.conf



Copyright (c) 1999-2015, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/usage_and_config/network_services/router/routing/routing.conf) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2014-01-07 19:27:43 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).