POSTS

Telia Internet

Mõni aeg tagasi installiti ka mulle majja kauaoodatud optiline kaabel. Interneti provaideriks on Telia. Ühtlasi võtsin vastu otsuse kasutada enda ruuterit sest:

  • Kuna mul on plaanitud ruuteri asukohaks elektrikilp, siis on raskendatud Telia poolt pakutava ruuteri wifi kasutamine kuna kilbist see eriti ei levi.
  • Mul oleks vaja, et ruuter oleks mõnevõrra võimsam ja seal saaks jooksutada ka muid teenuseid.
  • Mulle tundub, et tavalise veebiliidesega Telia ruuteril on keeruline kõiki asju seadistada.
  • Telia firmware uuendamisel kaovad ära minu arust pordi suunamised. Vähemalt mul on mitmel korral kadunud.
  • Pannes ruuterisse tavalise Linuxi, saan ma sinna ssh kaudu sisse logida ja teha sisuliselt mida iganes.

Lisateenustena on mul Telialt tellitud staatiline avalik IP ning kasutan kahte TV’d. Üks telekatest on samsungi smart TV, ning teine telekas on Arrise digiboxi küljes (VIP1113).

Telia enda lehel on informatsioon selline.

Valisin välja omale tavalise i386/x86_64 tüüpi fanless miniarvuti hiinast, millel on 4 võrgukaarti ja mSATA SSD kaart (mina võtsin kõige lahjema, ehk siis 30GB SSD ja 2GB RAM):

Mini PC Intel Celeron J1800 Industrial Computer 4 Gigabit LAN Router Firewall Fanless Windows 10 Linux A Computador Desktop

alt text

alt text

alt text

Antud arvuti on pelgalt ruuteri jaoks overkill, aga nagu ma mainisin, siis tahan seal sees ka muid asju jooksutada.

Ühendus tuleb siis ruuterisse järgmiselt: Telia optika -> Telia poolt antud ONU/ONT seade -> minu ruuter.

Kõigepealt installisin sinna sissejuhatuseks värske Debian’i. Kui uude süsteemi booditud, siis konfisin /etc/fstab’is nii, et root failisüsteem mounditakse readonly’na. Installimise käigus tegin SSD kaardile ka swap ala, aga hiljem kommenteerisin selle rea /etc/fstab’ist välja. Oluline on, et ruuteri töö käigus ei ruunataks ketast kirjutamisega. Nipet-näpet on vaja seadistada ja sümlinkida, et asi boodiks korralikult readonly failisüsteemiga, aga see sõltub suuresti Linuxi versioonist ja netist leiab piisavalt infot. Hiljem saab root failisüsteemi seadistamise ajaks mountida ajutiselt readwrite’na:

mount -o remount,rw /

Seadistamine

Kuna ma tahan suhteliselt lihtsalt teha kogu ruuteri konfimist ja vajadusel sellest backup’i, siis ma hülgasin tavalise Debiani startup’i sel moel, et disablesin enamvähem kõik teenused ja võrgu seadistamise. Enda loodud skripti kirjutasin /etc/rc.local faili, mis käivitatakse Debiani boodi lõpus. Edasi püüan kirjeldada järkjärgult, kuidas ma konfi kirjutasin.

Võrgukaartide nimed

Üks väga oluline asi võrgu konfimisel on kõigepealt anda võrgukaartidele jäädavad nimed. Hea võimalus selleks on kasutada võrgukaardi MAC aadressi udev abiga. Tegin katse-eksituse meetodil kindlaks, milline võrgupesa vastab millisele interfeisile, ning koostasin faili nimega /etc/udev/rules.d/10-network.rules

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="0c:12:34:56:78:96", ATTR{type}=="1", NAME="lan1wan"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="0c:12:34:56:78:97", ATTR{type}=="1", NAME="lan2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="0c:12:34:56:78:98", ATTR{type}=="1", NAME="lan3"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="0c:12:34:56:78:99", ATTR{type}=="1", NAME="lan4"

Nimed sai valitud selle järgi, mis arvuti korpuse peal kirjas oli. Interfeiss lan1wan sai nimetatud seetõttu selliseks, et “lan1” osa nimes viitab korpuse peal märgitule, aga sisuline tähendus on tal see, et seda ma hakkan kasutama “wan” interfeisi (välisühenduse) jaoks.

Virtuaalsed interfeisid

Pärast füüsilistele kaartidele nime andmist tuleb luua virtuaalsed võrgu interfeisid. Kõigepealt lisame “wan” poolele ühe vlan (tag 4) interfeisi juurde, nagu Telia lehel:

/sbin/ip link add link lan1wan name lan1wan.4 type vlan id 4

Ülejäänud kolm “lan” interfeissi teeme bridge’ks (töötavad laias laastus nagu switch) ning anname igihalja sisevõrgu aadressi 192.168.1.1:

/sbin/ifconfig lan2 up
/sbin/ifconfig lan3 up
/sbin/ifconfig lan4 up

/sbin/brctl addbr br-lan
/sbin/brctl addif br-lan lan2
/sbin/brctl addif br-lan lan3
/sbin/brctl addif br-lan lan4

/sbin/ifconfig br-lan 192.168.1.1 netmask 255.255.255.0 up

Kogu selle tulemusena on meil nüüd võrguinterfeisse süsteemis nagu putru, kuid olulised neist on:

  • lo - loopback
  • lan1wan - välisühendus, internet
  • lan1wan.4 - välisühendus, Telia TV
  • br-lan - sisevõrk

Välisühendused

Välisühenduse parameetrid tuleb nüüd Telia käest küsida DHCP’ga. Mina kasutan selleks Debiani süsteemis “isc-dhcp-client” nimelist varianti. Kõigepealt, Telia lehelt näpuga järge ajades, tuleb hoolitseda, et /etc/dhcp/dhclient.conf failis oleks konfitud “classless static routes” küsimine:

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, domain-search, host-name,
        dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
        netbios-name-servers, netbios-scope, interface-mtu,
        rfc3442-classless-static-routes, ntp-servers;

Seda viimast on vaja selleks, et Telia TV’d teenindavad serverid oleks kättesaadavad lan1wan.4 kaudu (määratakse vastavad ruutimised just mööda seda interfeissi). Vastasel juhul pöördutaks nende poole läbi default gw, ehk siis tõenäoliselt lan1wan kaudu.

DHCP kliendid käivitan sedasi:

/sbin/dhclient lan1wan >/dev/null 2>&1 &
/sbin/dhclient lan1wan.4 >/dev/null 2>&1 &

Minu tähelepanek oli veel selline, et kui ma ilma DHCP’ta, lihtsalt staatiliselt, need liidesed ära konfisin, siis lakkas teatud aja pärast interneti liiklus. Ilmselt tahab Telia, et DHCP klient regulaarselt teada annaks, et ta ikka on olemas vms.

Teine tähelepanek oli, et kuna ma panin uue ruuteri, siis Telia poolele nähtav MAC aadress muutus, kuid õnneks andis Telia sellegipoolest mulle minu õige välise IP. Ilmselt antakse seda mitte MAC aadressi alusel, vaid ONU/ONT seadme parooli vms alusel, mis ongi loogilisem ja õigem.

Sisevõrk

Sisevõrgu seadmetele on vaja DHCP serverit, mis neile IP aadressi annaks. Selleks kasutan “dnsmasq” programmi. Hea kompaktne utiliit. Kusjuures kogu info annan talle käsurealt kaasa ning panen ta taustale sedasi käima:

/usr/sbin/dnsmasq -i br-lan -a 192.168.1.1 -F 192.168.1.10,192.168.1.199 -G 12:34:56:78:9A:BC,192.168.1.4 -O 1,255.255.255.0 -O 3,192.168.1.1 -O 6,192.98.49.8,192.98.49.9 -l /tmp/dnsmasq.leases -p 0 -k >/dev/null 2>&1 &

Inimkeeles siis:

  • -i br-lan - kasutab interfeissi br-lan

  • -a 192.168.1.1 - serveri bind aadress

  • -F 192.168.1.10,192.168.1.199 - väljajagatavad IP’d jäävad vahemikku 10-199 (reserveerisin algusesse ja lõppu oma staatiliselt konfitud seadmete jaoks tühja ruumi)

  • -G 12:34:56:78:9A:BC,192.168.1.4 - seadmele MAC aadressiga 12:34:56:78:9A:BC tuleb anda IP 192.168.1.4

  • -O 1,255.255.255.0 -O 3,192.168.1.1 -O 6,192.98.49.8,192.98.49.9 - DHCP kaudu pakutav netmask, gateway ja nimeserverid

  • -l /tmp/dnsmasq.leases - olekufaili asukoht (/tmp failisüsteemina on mounditud tmpfs, mis kasutab RAM’i)

  • -k - tööta foregroundis (kuid käsurealt me saadame ta sellegipoolest backgroundi tööle)

Tulemüür

Nüüd on vaja veel teha sisevõrgust internetti minevatele seadmetele NAT’i. Selleks on iptables:

/sbin/iptables -I POSTROUTING -t nat -s 192.168.1.0/24 -j MASQUERADE
echo 1 >/proc/sys/net/ipv4/ip_forward

Telia TV

Praeguse seisuga peaks tavaline internet seadmetes töötama. Nüüd on vaja veel TV jaoks IGMP proxy käima ajada. Selleks on Debianis olemas “igmpproxy” nimeline utiliit. Konfifailiks tegin /etc/igmpproxy.conf, ning vajalikud parameetrid millega mina tööle sain, on sellised:

quickleave

phyint lan1wan.4 upstream  ratelimit 0  threshold 1
        altnet 10.242.192.0/18
        altnet 10.0.0.0/8 
        altnet 84.50.87.0/24
        altnet 84.50.149.0/24

phyint br-lan downstream  ratelimit 0  threshold 1
        altnet 192.168.1.0/24

phyint lan2 disabled
phyint lan3 disabled
phyint lan4 disabled
phyint lan1wan disabled
phyint lo disabled

Käima panen ta sedasi:

/usr/sbin/igmpproxy /etc/igmpproxy.conf >/dev/null 2>&1 &

Lisaks mainin veel, et kumbagi teleka panin ma otse ruuteri lan pesade külge, kuna mul lan’i switch ei oska igmp snoopingut, aga linux oma bridgega oskab. Kolmas, viimane, lan port jagab sisevõrku laiali läbi switchi(de).

Wifi

Kuna mul on ruuter elektrikilbis, siis ma ei hankinudki ruuteriks arvutit, kus oleks wifi küljes. Wifi tekitan majas vajalikus kohas tavalise access point’iga, kusjuures AP töötab lan’i bridge mode’s. Ehk et AP ei tee tulemüüri ega DHCP serverit, lihtsalt laiendab minu lan’i wirelessiks. Wifi seadmed saavad oma IP aadressi ikkagi päris ruuterist ja nad jäävad ühtlasi minu sisevõrku. Paljude nutiseadmete juhtimiseks on oluline, et su telefon oleks nutiseadmega samas lan’is.

Telia Filmiriiul

See töötab automaatselt samsungi smart TV’ga, kuid Arrise digiboxil on väike loogika viga, sellest järgmises postituses.

Comments

Leave a comment