summaryrefslogtreecommitdiffstats
path: root/_posts/2021-02-18-kako-se-znebiti-T-2-usmerjevalnika.md
blob: 3191c4889c444f27c26eda63483cd2afd18ad4d0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
---
author: anton
title: kako se znebiti T-2 usmerjevalnika
categories: internet
tags: internet homelab sysadmin
lastmodified: 2021-03-06 21:48:00
published: false
---
Ob priklopu optičnega Interneta sem kmalu hotel povečati svoje omrežje strežnikov in doma namestiti strežnik, na katerem bi lahko gostoval spletno stran, imenski strežnik, poštni strežnik in še kaj. Kajkmalu sem naletel na težavo.

Ker T-2 na območju priključka nima svojega FTTH omrežja, nam je priklop GPON vlaken izvedel Telekom, T-2 pa je njihovo omrežje uporabil za zagotavljanje Interneta. To pomeni, da ni vse tako, kot mora biti, ker se mora T-2 za ceno uporabniške izkušnje podrediti zahtevam omrežja Telekoma. Poleg raznih tehničnih zahtev, kot so kratenje Internetne nevtralnosti v obliki filtriranja TCP povezav glede na številko vrat, so tu še omejitve glede uporabe opreme na strani naročnika.

Medtem ko imajo naročniki T-2 Interneta na T-2 omrežju opremo, ki uporabnika na njegovo željo priključi direktno v javno Internetno omrežje, so naročniki na T-2 gostovanju izpostavljeni veliko slabšim pogojem, recimo izbiri NAT usmerjevalnika. Ne le to, da je izbira majhna, T-2 ima kar v obvezni modem vgrajen NAT usmerjevalnik, tako da uporabnik do obljubljenih treh javnih IPv4 naslovov sploh nima dostopa.

T-2 sicer ponuja neko opcijo IP mostu, ki bi mi zagotovila en statičen IPv4 naslov, vendar sem po treh telefonskih klicih na pomoč uporabnikom obupal, ker T-2 modem ni in ni hotel posredovati mojih IP paketov.

<span class=dimmedtext>
	Posodobitev: Med izvajanjem rednega pregleda paketov, ki mi jih pošilja operater, sem opazil TCP SYN pakete brez odgovora na nek meni nepoznan javen IPv4 naslov. Izkazalo se je, da je T-2 nastavil ta naslov kot moj sekundarni statični IPv4 naslov, čeprav je v servisne strani Horizonta napisal nek drug naslov in po telefonu večkrat zatrdil, da je naslov v Horizontu pravilen. Po vpisu tega naslova v računalnik vse deluje in T-2 posreduje moje pakete v svet (:
</span>

Ker neka bela škatlica, ki lahko beleži moj promet tudi v zasebnem omrežju, zame ni sprejemljiva, sem se odločil poiskati najpreprostejšo alternativo, ki bi mi poleg svobode izbiranja naročniške opreme prinesla tudi možnost gostovanja Internetnih storitev.

Odločil sem se za [Rock64](//wiki.pine64.org/wiki/ROCK64), majhen računalnik z gigabitnim Ethernetom, arm64 procesorjem, štirimi gigabajti RAMa, USB 3.0 in 64 gigabajti eMMC hitre shrambe. Ne sicer neposredno kot NAT usmerjevalnik, temveč kot zmogljiv medijski strežnik, saj ima HDMI izhod za zvok in 4K60s/sek sliko, ter pogon za mrežni disk. Če se name ne bi osredotočili na poštni carini, bi me brez dodatne opreme (infrardeči daljinec, napajalnik, ...) to stalo manj kot 50€.

A kajkmalu po odločitvi, da mora T-2 modem stran, sem ugotovil, da zna biti samo en Ethernet priključek na Rock64 omejitev. Izkazalo se je, da ni, saj Linux lahko pripravimo do vsega mogočega.

Vse skupaj sem priklopil takole: Iz Telekomovega ONT sem potegnil UTP kabel do Ethernet stikala, v katerega sem priključil tudi vse ostale naprave, ki morajo biti v NAT omrežju, ter Rock64 računalnik, ki ga bom uporabljal kot NAT usmerjevalnik. Sedaj naj povem, da taka konfiguracija še vedno ni brez možnosti za napade s strani operaterja, saj lahko le-ta uporabi tehniko [ARP ponarejanja](//en.wikipedia.org/wiki/ARP_spoofing), ker je moje zasebno omrežje v istem lokalnem omrežju [plasti podatkovne povezave](//sl.wikipedia.org/wiki/Plast_podatkovne_povezave).

Kar se tiče distribucije operacijskega sistema, sem pa [najbolj navajen na Debian](/o.html), zato sem namestil [ayufanovo gradnjo Debiana za Rock64](//wiki.pine64.org/index.php/ROCK64_Software_Release#Debian_Stretch), ki sem jo z APT spravil na Debian 10.

Najbolj osnovna zadeva je bila priklop v javno omrežje. Z `nmtui` sem naredil novo Ethernet povezavo in kloniral MAC naslov T-2jevega Iskratel modema, s katerim se oglaša po WAN priključku. To ni bilo zahtevno, ker je MAC naslov napisan na nalepki. Nastavitve IPv4 sem prepustil DHCP strežniku, ki mi bo ob ustreznem MAC naslovu povedal IPv4 naslov. O IPv6 lahko verjetno samo sanjam.

Ker ne uporabljam `network-manager`ja, sem moral MAC naslov modema klonirati v `systemd-networkd` nastavitvah. To sem storil tako, da sem dodal novo pravilo v `/etc/systemd/network/00-default.link`:

    [Match]
    MACAddress=16:04:15:00:00:00 # originalen MAC naslov Rock64 (poglej z ifconfig)
    
    [Link]
    MACAddress=10:a3:b8:00:00:00 # MAC naslov modema
    NamePolicy=kernel database onboard slot path

DHCP strežnika zaradi morebitnih konfliktov z operaterjevim DHCP strežnikom rajši nisem postavljal, NAT zasebne IP naslove sem v naprave vpisoval statično.

Uredil sem datoteko `/etc/sysctl.conf`, kjer sem nastavil nastavitev `net.ipv4.ip_forward=1`, da bo Linux postal usmerjevalnik po zagonu, ter datoteko `/etc/network/interfaces.d/20-nat`, kamor sem vpisal slednje besedilo, da sem dodal virtualni mrežni vmesnik, ki služi kot NAT vmesnik.

    auto eth0:1
    iface eth0:1 inet static
    address 10.69.69.1
    netmask 255.255.255.0

Seveda sedaj NAT še ne deluje, je pa čas za preverjanje delovanja posredovanja paketov. Za vsak slučaj sem ponovno zagnal vsa Ethernet stikala in izvedel `reboot` na Rock64 ter priklopil osebni računalnik v stikalo, mu nastavil statični IPv4 naslov (`10.69.69.***/24`, maska `255.255.255.0`, prehod `10.69.69.1`) in naslovu bodočega prehoda poslal ICMP ping: `ping 10.69.69.1`. Delovalo je.

Ker se na `iptables` ukaze ne spoznam najbolje, sem malo [pogledal po spletu](//www.miljan.org/main/2006/12/26/linux-nat-with-one-network-interface/) in sestavil tale sklop ukazov, ki poveže `eth0` in virtualno NAT `eth0:1`:

    iptables -A FORWARD -i eth0 -o eth0:1 -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -i eth0:1 -o eth0 -j ACCEPT
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Za ohranitev `iptables` pravil obstaja v Debianu skript `iptables-persistent`:

    apt install iptables-persistent # potrdimo shranjevanje pravil, ko nas vpraša

To je vse. Po ponovnem zagonu vse opreme se NAT omrežje postavi nazaj in uspešno deluje. uPNP in *posredovanja vrat* nisem nastavljal, vendar lahko zelo verjetno to naredite z nekaj `iptables` pravili. Vsekakor pa lahko vse storitve, ki morajo biti obrnjene v širni splet, gostujete kar na vašem novem modemu.

## možne napake

Debian prehaja iz `iptables` na `nftables`, možne so [napake](//bugs.debian.org/cgi-bin/bugreport.cgi?bug=915187). Meni osebno samo ta konfiguracija ni delovala, `iptables-persistent` se je pritoževal v sistemske dnevnike, zato sem namesto `nftables` preklopil nazaj na `iptables` in ponovno konfiguriral `iptables-persistent`:

    update-alternatives --set iptables /usr/sbin/iptables-legacy
    update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
    update-alternatives --set arptables /usr/sbin/arptables-legacy
    update-alternatives --set ebtables /usr/sbin/ebtables-legacy
    iptables -A FORWARD -i eth0 -o eth0:1 -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -i eth0:1 -o eth0 -j ACCEPT
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables-save > /etc/iptables/rules.v4

<!-- as it turns out: ni mi uspelo: jeben t2 ma neke vlane zgleda --><!-- 

## dodaten statičen IP naslov

Verjetno vas zanima, če mi je naposled le uspelo dobiti tisti drugi statični IPv4 naslov, ki sem ga potreboval. Da, uspelo mi
ga je nastaviti s pomočjo Linux čarovnije (`iproute2`). Z `iproute2` lahko delate več tabel za posredovanje IP paketov po sistemu
in iz njega, ne le ene, kot to omogoča tradicionalni `route`.

Najprej naj povem, da je treba za pridobitev IP naslova najprej [poklicati T-2](tel:+38664064064) in zaprositi za brezplačen
statičen IPv4 naslov.

Dodal sem torej novo tabelo `rt2` na konec datoteke `/etc/iproute2/rt_tables` (številka 1 pomeni prednost tabele - če jih je več):

    1 rt2

in nov Ethernet mrežni vmesnik `eth0:2` ter mu statično določil naslove in tabelo posredovanja paketov, tokrat v datoteko
`/etc/network/interfaces.d/30-ip2`:

    auto eth0:2
    iface eth0:2 inet static
    address 84.255.241.83 # vaš naslov najdete na https://horizont.t-2.net/profil/pregled-storitev
    netmask 255.255.192.0 # prav tako masko podomrežja
    hwaddress ether 16:04:15:00:00:00 # to je MAC naslov, ki ste ga povedali po telefonu (lahko si ga izmislite)
    post-up ip route add 84.255.241.83/18 dev eth0:2 src 84.255.241.83 table rt2
    post-up ip route add default via 84.255.192.1 dev eth0:2 table rt2 # prehod tudi dobite na horizontu
    post-up ip rule add from 84.255.241.83/32 table rt2
    post-up ip rule add to 84.255.241.83/32 table rt2

([Dodatno branje o tej konfiguraciji.](//www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System))

### možne napake

Iz neznanega razloga po nastavitvi dodatnega statičnega IPv4 ne morem dostopati do računalnikov v omrežju 84.255.192.0/18.
To me sicer ne moti, vendar vedite, da ne morete uporabljati storitev T-2, kot so SMTP, NTP in DNS, ki so vse v tem omrežju. Ključnega pomena je DNS, zato morate zamenjati strežnik v `/etc/resolv.conf`:

    nameserver 193.2.1.66 # arnes 1
    nameserver 193.2.1.72 # arnes 2

Ker pa bo DHCP vsakokrat povozil te nastavitve, jih morate vpisati tudi v nastavitve DHCP odjemalca. V datoteko
`/etc/dhcp/dhclient.conf` dodajte slednji direktivi:

    prepend domain-name-servers 193.2.1.72
    prepend domain-name-servers 193.2.1.66

Sedaj bo DHCP po posodobitvi dodal [Arnesova strežnika](//www.arnes.si/pomoc-uporabnikom/arnesovi-strezniki/) v `/etc/resolv.conf`.
Alternativa nastavitvi DHCP DNS nastavitev je uporaba zgolj statičnih IPv4 naslovov. To je prepuščeno bralcu v raziskovanje (:

-->

LP in se beremo naslednjič!