Linux ICS (Internet Connection Sharing) ja DHCP

Opsysteem:  Linux Ubuntu.
Keskkond:   Virtual Box, 2 virtual masinat: Server linux(Debian/Ubuntu) ja Klient linux
Abimaterial: ConnectionSharing ,  ics-DHCP-server, vana versioon (DHCP Server), DNS Server

Linux ICS ehk linux NAT Ruuter annab võimaluse lokaalvõrkude arvutitele ja seadmetele pääseda naaber võrkudesse ja interneti.
Lokaalvõrgus host pärib DHCP serverit ja saab temalt vajaliku info võrgus toimimiseks, mille abil saab lahendada nimesid ning suhelda välis serveritega.
ICS koosneb mitmest elemendist, mis asuvad vastavas arvutis (sama kehtib ka SOHO seadmete kohta)


Ruuteri välisvõrgu IP saad klassi DHCP serverist 307 klassis => 172.18.13.XXX, 315 klassis => 172.18.14.XXX
Ruuteri sisevõrgu IP = 10.1.0.1/24
Klient peab saama ruuterilt DHCP kaudu IP info.
Serveris enne käivitamist VirtualBox-is tuleb sisselülitada 2 võrguadapterit

Klient masinas kasutame ainult esimest adapterit

!NB kui teil on teised interfeiside numbrid näiteks eth1 ja eth2,
siis antud näites asetage vastava interfeisi nimi teisega
näiteks: eth0 - > eth1, eth1 - > eth2

Server masin

iptables on vaikimisi süsteemis olemas,
installime vajalikud paketid: isc-dhcp-server, bind9

$ apt-get install isc-dhcp-server bind9

DHCP serveri häälestus: Tuleks redigeerida fail /etc/dhcp/dhcpd.conf ja muuta parameetrid selles failis vastavalt teie sisevõrgu või sisevõrkude määrangutele. Klient peab minimaalselt saama serverist järgmised parameetrid IP aadressi, NetMASKi, GateWay, DNS serveri või serverite listi.

Kitjutame faili /etc/default/isc-dhcp-server lõppu tühjadesse jutumärkidesse "eth1" , see ütleb DHCP serverile mis interfeisidel teostada dhcp teenust.
Olge ettevaatlikud, kui te eksite DHCP server võib hakkata vastama DHCP päringutele klassi võrgus mis tekitab probleeme teiste õpilaste arvutitele.

Määrame sisevõrgu interfeisile eth1 ipaadressi 10.1.0.1 ja maski 255.255.255.0
Ajutiselt saate teha seda käsureast (NB! kaob ära peale restarti!)

$ ifconfig eth1 10.1.0.1 netmask 255.255.255.0

kontrollime käsuga

$ ifconfig

Katalogis /etc/dhcp nimetame dhcpd.conf faili ümber dhcpd.conf.orig

$ cd /etc/dhcp; cp dhcpd.conf dhcpd.conf.orig

Loome uue dhcpd.conf faili ja kirjutame sinna

authoritative; 
ddns-update-style none; 
option domain-name "307.tpt";
option broadcast-address 10.1.0.255; 
default-lease-time 86400;
max-lease-time 86400; 
log-facility local7; 
subnet 10.1.0.0 netmask 255.255.255.0 {
    option domain-name-servers 10.1.0.1;
    range 10.1.0.16 10.1.0.254;
    option routers 10.1.0.1;
}

restardime dhcp serveri

$ /etc/init.d/isc-dhcp-server restart

Lähme nimeserveri katalogi ja avame redigeerimiseks faili

DNS forwarder-i häälestamine.

Klient arvuti DNS resolveriks peab olema server arvuti. Tema võtab päringud vastu ja suunab nad välisesse DNS serverisse.

$ nano /etc/bind/named.conf.options

ja kommenteerime lahti forwarders read ja lisame sinna DNS servrite IP-d

forwarders {
       192.168.253.249;
       192.168.253.250;
};

restartdime nimeserveri

$ service bind9 restart

SNAT, DNAT (Port forwarding)

Aktiveerida maskeraading ja lubada paketide edastamine interfeiside vahel:

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

Tühistada firewall-i reeglid käsuga

$ iptables –F

Lisada SNAT reegel mis transleerib sisevõrgu lähteaadressi paketides mis on suunatud internetti välis IP aadressiks, kuna välis IP meil võib olla dünaamiline (saadud DHCP abil) kasutame nii nimetatud maskeraadingut (MASQUERADE)

$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

NB! Kui läheb miski segamini, tühistage iptabel-i reeglid ja korrake käsud.
Kontrollida nat tabeli määratud reegled saab:
$ iptables -L –t nat

Lisame DNAT ehk port forwardingu reeglid miile abil laseme välisvõrgust pääseda ligi sisevõrgus asuvale teenusele.
Lisame port forwardingu Windows masina remote desktopile, transleerides välis aadressi ja pordi 2000 pealt sisevärgu aadressiClient_IP port 3389 peale:

# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2000 -j DNAT --to-destination clientIP:3389

Sisevõrgu linux masina SSH porti, transleerides välis aadressi ja pordi 2022 pealt sisevärgu aadressi Client_IP port 22 peale:

# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2022 -j DNAT --to-destination clientIP:22

Sisevõrgu linux masina http porti, transleerides välis aadressi ja pordi 80 pealt sisevärgu aadressi Client_IP port 80 peale:

# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination clientIP:80

Klient masin

linuxes tu leks pärida uuesti dhcp parameetrid

$ dhclient

kontrollida saadud parameetrid käsuga

$ ifconfig

Vaadata saadud DHCP kaudu nimeservereid

$ cat /etc/resolv.conf

Toimingu kontroll: Kontrollida võrgu ja interneti tööd klient arvutis - pingides ja browsides internetti.
Kontrollida välis kliendist võimalus pöörduda sisevõrgu kliendi arvutisse remote desktop protokolli abil (koostöö naaber paariga).