TCP/IP & routing
Fundament: lagen, poorten, TCP vs UDP, IP-adressering, subnetting, NAT, routing en LAN-WAN-verbindingen.
1Lagen en encapsulatie
In de praktijk werk je met het 5-lagenmodel (TCP/IP): applicatie (bevat ook presentatie + sessie), transport, netwerk, datalink, fysisch. OSI = de theorie, TCP/IP = de praktijk.
- IP kijkt enkel naar het doeladres: de weg vinden voor het pakket. Het protocolnummer in de IP-header zegt of het naar TCP of UDP moet.
- TCP en IP hebben aparte controlesommen: IP controleert enkel de header, TCP de segmenten (TCP moet ook zonder IP kunnen werken).
- TTL (levenstijd) wordt bij elke router met 1 verlaagd. Op 0 wordt het pakket vernietigd: dat voorkomt eindeloze loops.
tracert/traceroutegebruikt dit. - Ontvanger pakt in omgekeerde volgorde uit: Ethernet-header + controlesom weg, type-code zegt IP, IP-header weg, protocolnummer zegt TCP, enz.
2Poorten, TCP en UDP
Poorten zijn virtuele nummers aan elke kant van een verbinding, zodat je meerdere verbindingen tegelijk kan onderscheiden. De server gebruikt een vast (well-known) poortnummer < 1024, de client kiest een willekeurig poortnummer > 1024 (bv. 2145).
- Verbindingsgeoriënteerd: eerst 3-way handshake
- Bevestigt ontvangst (ACK), herstuurt verloren segmenten
- Zet segmenten in de juiste volgorde
- Flow control met window size
- Gebruikt door HTTP, FTP, Telnet, SMTP
- Geen verbinding opzetten, geen ACK, geen volgorde
- Minder overhead: sneller en eenvoudiger
- Fouten/herstel gebeuren (indien nodig) in de applicatie
- Gebruikt door DNS, TFTP, SNMP, RIP, (VoIP/RTP)
- Moeilijker te filteren in een firewall (geen vlaggen/handshake)
Client stuurt SYN met zijn beginvolgnummer x. Status client: SYN_SENT.
Eén kant stuurt FIN.
3Wat heb je nodig voor één pakket? + tools
Voorbeeld: client 172.17.167.150 vraagt http://www.kdg.be/info.htm. Om één pakket (frame) te kunnen versturen moet je 6 gegevens kennen:
4IP-adressering en subnetting
Een IPv4-adres is 32 bit = netwerkgedeelte + hostgedeelte, in 4 groepen van 8 bit. Het subnetmask (of /prefix) zegt waar de grens ligt. Netwerkadres = IP AND mask. Hostbits allemaal 0 = netwerkadres, allemaal 1 = broadcast; beide zijn niet bruikbaar voor hosts.
Tel hosts + 2 (netwerk + broadcast). Kleinste macht van 2 die past: hostbits h. Hosts = 2^h − 2.
Mask /26 = 255.255.255.192 -> blok 64, 62 hosts
Subnet 1: 192.168.1.0 - broadcast 192.168.1.63 hosts .1 - .62
Subnet 2: 192.168.1.64 - broadcast 192.168.1.127 hosts .65 - .126
Subnet 3: 192.168.1.128 - broadcast 192.168.1.191 hosts .129 - .190
Subnet 4: 192.168.1.192 - broadcast 192.168.1.255 hosts .193 - .254Hostbits: 16 - 12 = 4 -> hosts per subnet = 2^4 - 2 = 14
Subnetten: 2^12 - 2 = 4094 (cursus slaat "subnet 0" en "all-ones" over)
Blokgrootte 16: subnet 1 = 176.16.0.16, 2 = .32, 3 = .48, 4 = .64, 5 = .80, 6 = .96, 7 = .112
6e subnet : 176.16.0.96
Broadcast : 176.16.0.112 - 1 = 176.16.0.111
Hostbereik : 176.16.0.97 - 176.16.0.1105NAT, NAPT en port forwarding
Client 192.168.1.2:4444 stuurt naar webserver. Router herschrijft bron naar publiek IP:nieuwe poort en bewaart de koppeling in zijn tabel.
interface FastEthernet0/1
ip address 202.17.164.50 255.255.252.0
ip nat outside
interface FastEthernet0/0
ip address 192.168.1.254 255.255.255.0
ip nat inside
!
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat inside source list 1 interface FastEthernet0/1 overload
ip route 0.0.0.0 0.0.0.0 FastEthernet0/1# NAPT: alles dat via eth0 naar buiten gaat krijgt het IP van eth0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Port forwarding: publiek IP:80 -> interne webserver 192.168.1.10:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.10:806Routing en route-commando's
Doel-IP AND eigen mask = eigen netwerk? Dan rechtstreeks: ARP voor het MAC van het doel, geen router.
Een route = doelnetwerk + mask + next hop (gateway) + metric. De gateway moet rechtstreeks bereikbaar zijn (zelfde subnet als je interface). Statische routes zijn handmatig; dynamische (RIP, OSPF, BGP) leren routes van elkaar.
:: route tonen
ROUTE PRINT
:: default gateway toevoegen (tijdelijk)
ROUTE ADD 0.0.0.0 MASK 0.0.0.0 192.168.1.1 METRIC 10
:: permanent (ook na reboot)
ROUTE -P ADD 0.0.0.0 MASK 0.0.0.0 192.168.1.1 METRIC 10
ROUTE DELETE 0.0.0.0 MASK 0.0.0.0 192.168.1.1
:: route naar intern netwerk 192.168.200.0 via gateway 192.168.1.1
ROUTE ADD 192.168.200.0 MASK 255.255.255.0 192.168.1.1
ROUTE DELETE 192.168.200.0 MASK 255.255.255.0 192.168.1.1# tonen
route -n
ip route show
# default gateway
route add default gw 192.168.1.1
ip route add default via 192.168.1.1
ip route del default via 192.168.1.1
# permanent: lijn toevoegen in /etc/rc.local
ip route add default via 192.168.1.1
# route naar 192.168.200.0/24 via 192.168.1.1
route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.168.1.1
ip route add 192.168.200.0/24 via 192.168.1.1
ip route del 192.168.200.0/24 via 192.168.1.1show ip route
! default gateway (host-modus / switch)
ip default-gateway 192.168.1.1
! default route (router)
ip route 0.0.0.0 0.0.0.0 192.168.1.1
no ip route 0.0.0.0 0.0.0.0 192.168.1.1
! route naar 192.168.200.0/24 via 192.168.1.1
ip route 192.168.200.0 255.255.255.0 192.168.1.1
no ip route 192.168.200.0 255.255.255.0 192.168.1.1
! permanent bewaren
copy running-config startup-configset protocols static route 0.0.0.0/0 next-hop 192.168.56.1 distance '1'
set protocols static route 192.168.200.0/24 next-hop 192.168.1.1
commit
save7LAN-WAN-verbindingen: router, firewall, proxy
- Router verbindt LAN-LAN en LAN-WAN. Keuze Cisco / ADSL-modem / PC-router hangt af van: aantal gebruikers, hardware-instructies (snelheid), fail-proof, verbruik.
- Firewall blokkeert of laat poorten/IP-adressen toe. Kan een aparte box zijn of software op een PC (bv. iptables).
- Een proxy voert diensten uit voor interne gebruikers en beperkt ook diensten naar buiten. Door LAN en WAN te scheiden werkt ze als firewall.
- Browser moet ingesteld worden op proxy-IP:poort 8080
- 2 aparte verbindingen (client-proxy, proxy-server); niets wordt gerouteerd
- Default gateway moet niet ingesteld zijn
- DNS moet intern niet draaien (de proxy lost namen op)
- Clients merken niets: ze denken via een router te werken
- De machine is router én proxy: aanvragen op poort 80 worden intern doorgestuurd naar poort 8080
- Browser direct (niet via proxy) instellen
- Default gateway wel instellen; DNS-server voor clients op de proxy
- Extern IP:poort wordt 1-op-1 doorgestuurd naar interne server:poort
- Pakket wordt herschreven, geen cache, geen inhoudscontrole
- Eén poort naar één server
- Proxy staat als front-end voor de interne webserver(s)
- Statische pagina's uit de cache, dynamische worden opgehaald
- Kan meer dan 1 interne server bedienen en verkeer filteren
- Internet verbindt nooit rechtstreeks met de interne server
Nog niet klaar? Je kan altijd terugkomen.