Ubuntu ruuter
Sissejuhatus
Vahel võib tekkida vajadus jagada võrguühendust mitme masina vahel. Teenusepakkujad võimaldavad vahel võrguühenduse saamise ühele arvutile ühe ostetud ühenduse kohta. Selleks, et jagada antud ühendust mitme arvuti vahel on meil vaja ruuterit. Ruuterit võib osta poest valmis karbina või siis ise teha mõnest arvutist, millele saab lisada ka mõningaid muid teenuseid.
Eeldused
Antud lahendus on testitud Ubuntu 10.04 LTS koodnimega "Lucid Lynx" serveril.
Eeldab kasutaja varasemat kokkupuudet Unix/Linux/BSD käsustikuga ja arusaamist Unix-i laadsete operatsioonisüsteemide toimimisest. Samuti elementaarset arusaama arvutivõrkudest ja nende toimimise põhimõtetest.
Arvutil, millest hakatakse tegema ruuterit peaks olema 2 võrgukaarti (üks välise ühenduse jaoks ja teine sisese ühenduse jaoks) ja eelinstalleeritud operatsioonisüsteem.
Välise internetiühenduse puhul saadakse IP aadress teenusepakkujalt DHCP abil. Arvutil peaks olema olemas internetiühendus.
Installeerimine
Esmalt uuendame tarkvara nimekirjad
apt-get update
Installeerime nimeserveri, DHCP serveri, võrgusilla tööriistad, nimeserveri tööriistad
apt-get install bind9 dhcp3-server bridge-utils dnsutils
Seadistamine
Üldine seadistamine
Seadistame serverile nime. Selleks muudame esiteks /etc/hostname faili
nano /etc/hostname
Serveri nimeks paneme "ruuter". Muudetud faili sisu peaks nüüd olema
ruuter
Seadistame serverile ka domeeni ja täieliku domeeninime (FQDN - Fully Qualified Domain Name). Selleks muudame /etc/hosts faili
nano /etc/hosts
Domeeniks paneme "domeen.local" ja täielikuks domeeninimeks "ruuter.domeen.local". Failis peab muutma 127.0.1.1 aadressiga algavat rida järgmiseks
127.0.1.1 ruuter.domeen.local ruuter
Ja lisame uue rea
192.168.0.1 ruuter.domeen.local ruuter
Võrgukaartide seadistamine
Kuna ruuteril on 2 võrgukaarti, üks välisühenduse ja teine sisese ühenduse jaoks, siis on vaja seadistada ka võrguühendused. Selleks avame /etc/network/interfaces faili
nano /etc/network/interfaces
DHCP ja DNS serveri teenuste jaoks on vaja sisevõrku kuuluvale võrgukaardile staatilisi aadresse. Samuti seadistame silla. Muudetava faili sisu peaks nägema vastavalt ülesande püstitusele välja järgmine
# The loopback network interface auto lo interface lo inet loopback # WAN network interface auto eth0 iface eth0 inet dhcp # LAN network interface auto eth1 iface eth1 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 bridge-ports eth1
Taaskäivitame võrguteenuse
/etc/init.d/networking restart
IP edastus ja maskeraad
Loome IP edastuse ja maskeraadi jaoks skriptifaili
nano nat.sh
Skripti sisu peaks välja nägema selline
echo -e "\n\nLoading simple rc.firewall-iptables version $FWVER..\n" IPTABLES=/sbin/iptables DEPMOD=/sbin/depmod MODPROBE=/sbin/modprobe EXTIF="eth0" INTIF="eth1" #INTIF2="eth0" echo " External Interface: $EXTIF" echo " Internal Interface: $INTIF" #====================================================================== #== No editing beyond this line is required for initial MASQ testing == echo -en " loading modules: " echo " - Verifying that all kernel modules are ok" $DEPMOD -a echo "----------------------------------------------------------------------" echo -en "ip_tables, " $MODPROBE ip_tables echo -en "ip_conntrack, " $MODPROBE ip_conntrack echo -en "ip_conntrack_ftp, " $MODPROBE ip_conntrack_ftp echo -en "ip_conntrack_irc, " $MODPROBE ip_conntrack_irc echo -en "iptable_nat, " $MODPROBE iptable_nat echo -en "ip_nat_ftp, " $MODPROBE ip_nat_ftp echo "----------------------------------------------------------------------" echo -e " Done loading modules.\n" echo " Enabling forwarding.." echo "1" > /proc/sys/net/ipv4/ip_forward echo " Enabling DynamicAddr.." echo "1" > /proc/sys/net/ipv4/ip_dynaddr echo " Clearing any existing rules and setting default policy.." $IPTABLES -P INPUT ACCEPT $IPTABLES -F INPUT $IPTABLES -P OUTPUT ACCEPT $IPTABLES -F OUTPUT $IPTABLES -P FORWARD DROP $IPTABLES -F FORWARD $IPTABLES -t nat -F echo " FWD: Allow all connections OUT and only existing and related ones IN" $IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT $IPTABLES -A FORWARD -j LOG echo " Enabling SNAT (MASQUERADE) functionality on $EXTIF" $IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE echo -e "\nrc.firewall-iptables v$FWVER done.\n"
Muudame skriptifaili käivitatavaks
chmod a+x nat.sh
Seadistame skripti masina alglaadimisel käivituma
cp nat.sh /etc/init.d/ ln -s /etc/init.d/nat.sh /etc/rc2.d/S95masquradescript
Turvavõtme genereerimine
Kindlustamaks, et keegi peale DHCP serveri ei saaks DNS kirjeid uuendada peame looma salajase võtme, mida teavad nii DHCP server kui DNS server, mille abil tuvastatakse soovitud muudatuse lubatavus.
Genereerime võtme
dnssec-keygen -r /dev/urandom -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER
Salvestame võtme ajutisse faili, kust saame seda pärast kopeerida konfiguratsioonifailidesse
cat Kdhcp_updater.*.private | grep Key > voti.txt
Eemaldame süsteemist genereeritud võtme
rm Kdhcp_updater.*
Bind9 seadistamine
Seadistame DNS serveri vahendama päringuid. Selleks avame /etc/bind/named.conf.options faili
nano /etc/bind/named.conf.options
Kommenteerime sisse forwarders sektsiooni ja kirjutame sinna ISP DNS serverite IP aadresid. Muudetud fail peaks välja nägema järgmine
options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. forwarders { 194.126.97.30; 194.204.0.1; }; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };
Muudame faili /etc/bind/named.conf.local
nano /etc/bind/named.conf.local
Lisame konfiguratsioonifaili salajase võtme ja selle seaded ning tsoonid. Muudetud konfiguratsioonifail peaks välja nägema järgmine
key DHCP_UPDATER { algorithm HMAC-MD5.SIG-ALG.REG.INT; secret "aaaaaaaaa"; }; zone "domeen.local" IN { type master; file "/var/lib/bind/db.domeen.local"; allow-update { key DHCP_UPDATER; }; }; zone "0.168.192.in-addr.arpa" IN { type master; file "/var/lib/bind/db.0.168.192.in-addr.arpa"; allow-update { key DHCP_UPDATER; }; };
Serveris peaks pöördteisenduse tsooni(0.168.192.in-addr.arpa) puhul nimi vastama valitud sisevõrgu aadressiruumi.
Loome tsoonifailidele kataloogi
mkdir /var/lib/bind/
Eelnevalt loodud tsoonid viitavad failidele, mis neid tsoone kirjeldavad. Loome tsoonifaili domeenile "domeen.local"
nano /var/lib/bind/db.domeen.local
Tsoonifaili sisu peaks välja nägema järgmiselt
$ORIGIN . $TTL 86400 ; 1 day domeen.local. IN SOA ruuter.domeen.local. hostmaster.domeen.local. ( 2010110901 ; serial 28800 ; refresh (8 hours) 14400 ; retry (4 hours) 2419200 ; expire (4 weeks) 86400 ; minimum (1 day) ) NS ruuter.domeen.local. MX 10 ruuter.domeen.local. $ORIGIN domeen.local. bzr CNAME ruuter localhost A 127.0.0.1 ruuter A 192.168.0.1
Loome tsoonifaili pöördteisenduse tsoonile
nano /var/lib/bind/db.0.168.192.in-addr.arpa
Tsoonifaili sisu peaks välja nägema järgmiselt
$ORIGIN . $TTL 86400 ; 1 day 0.168.192.in-addr.arpa IN SOA ruuter.domeen.local. hostmaster.domeen.local. ( 2010110901 ; serial 28800 ; refresh (8 hours) 14400 ; retry (4 hours) 2419200 ; expire (4 weeks) 86400 ; minimum (1 day) ) NS ruuter.domeen.local. $ORIGIN 0.168.192.in-addr.arpa. 1 PTR ruuter.domeen.local.
Muudame omanikku ja gruppi, et bind-il oleks õigused tsoonide konfiguratsioonifailidele
chown bind:bind /var/lib/bind/*
Muudame omanikku ja gruppi, et bind-il oleks õigused konfiguratsioonifailile
chown bind:bind /etc/bind/named.conf.local
Taaskäivitame DNS serveri, et muudatused rakenduksid
/etc/init.d/bind9 restart
DHCP3-Server seadistamine
Seadistame DHCP serveri. Selleks avame konfiguratsioonifaili
nano /etc/dhcp3/dhcpd.conf
DHCP konfiguratsioonifaili sisu peaks välja nägema järgmiselt
ddns-update-style interim; ignore client-updates; ddns-domainname "domeen.local."; ddns-rev-domainname "in-addr.arpa."; option domain-name "domeen.local"; option domain-name-servers ruuter.domeen.local; default-lease-time 600; max-lease-time 7200; authoritative; log-facility local7; key DHCP_UPDATER { algorithm HMAC-MD5.SIG-ALG.REG.INT; secret "aaaaaaaaa"; }; zone domeen.local. { primary 192.168.0.1; key DHCP_UPDATER; } zone 0.168.192.in-addr.arpa. { primary 192.168.0.1; key DHCP_UPDATER; } subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.10 192.168.0.200; option routers ruuter.domeen.local; }
Muudame omanikku ja gruppi, et DHCP3-serveril oleks õigused konfiguratsioonifailile
chown dhcpd:dhcpd /etc/dhcp3/dhcpd.conf
Taaskäivitame DHCP serveri, et muudatused rakenduksid
/etc/init.d/dhcp3-server start
Testimine
Kui on olemas mõni Ubuntu kliendimasin, mis kasutab DHCP-d aadressi saamiseks tehtud ruuterilt sisevõrgus, siis võib uuesti küsida DHCP serverilt võrguseaded
/etc/init.d/networking restart
Nüüd peaks olema võimalik näha kliendiarvuti andmeid DNS serveris
host ubuntu-klient
Samuti peaks nägema ka aadressi teisendust nimeks
host 192.168.0.10
Varundamine
Tekitame kataloogi varundatavate failide hoidmiseks
mkdir backup
Varundame võrgukaartide seadistuse faili
cp /etc/network/interfaces backup/interfaces
Varundame IP edastuse ja maskeraadi skriptifaili
cp /etc/init.d/nat.sh backup/nat.sh
Varundame Bind9 konfiguratsioonifailid
cp /etc/bind/named.conf.options backup/named.conf.options cp /etc/bind/named.conf.local backup/named.conf.local cp /var/lib/bind/* backup/ cp /etc/dhcp3/dhcpd.conf backup/dhcpd.conf
Taastamine
Kasutatud kirjandus
http://lani78.wordpress.com/2008/08/09/setting-up-a-dns-for-the-local-network/
http://lani78.wordpress.com/2008/08/10/setting-up-a-dhcp-server-on-ubuntu-hardy-heron/
http://lani78.wordpress.com/2008/08/12/dhcp-server-update-dns-records/
https://help.ubuntu.com/community/Router
https://wiki.itcollege.ee/index.php/Nimeserveri_seadistamine_BIND9_n%C3%A4itel
https://wiki.itcollege.ee/index.php/DHCP_teenus_Ubuntu_Server_s%C3%BCsteemis
Autor
Kalev Jõgi