Ethernet, bridging, switching, routing és a Linux router táblája

Először beszélnünk kell arról, hogy mi az az Ethernet. Az Ethernet a LAN (Local Area Network – helyi hálózat) hálózatokra kidolgozott szabvány. Működésének lényege, hogy hallgatózik az összes résztvevő, és ha “csend” van, akkor küldik az adatokat. Beszélünk ma 100 MBit-es (megabit per másodperc) Ethernetről és GBit-es (gigabit per másodperc) Ethernetről is. Ez az elméleti átviteli maximum, tipikusan a 66%-át lehet elérni rajta. 🙂

https://hu.wikipedia.org/wiki/Ethernet

Ez az a hálózat, ami otthonunkban, munkahelyünkön vagy akár egy kórházban használatos. Van az ún. CAT5-ös kábel, ez a 100 MBit/s -os átvitelhez szükséges UTP (Unshielded Twisted Pair – árnyékolatlan csavart érpár) kábel. Azért csavart – és ez már fizika a javából -, mert így kiegyenlítődnek rajta a zajok. Azért 230-as kábeltől a falban legalább 30-40 centiméterre illik vezetni, tipikusan kábelcsatornában. Plusz feladat, hogy mi az a patch- és a keresztkábel. 🙂

https://hu.wikipedia.org/wiki/UTP

Aztán a hálózati rétegek az ISO-OSI modellből. A 2-es, adatkapcsolati rétegen dolgozik a bridge és a switch is (ha nem layer 3 switch). A router pedig a hármas, hálózati rétegben. A bridge-ek hálózati szegmenseket kötnek össze, MAC-táblát tartanak nyilván. Hasonlóak a repeater-ekhez, bár ez utóbbiak csak jelismétlők (erősítők), és nagyobb távolágok áthidalására használják őket. Az UTP ugyanis 100-120 métert tud csak! A switch-ek több portos bridge-eknek tekinthetőek. 🙂

https://hu.wikipedia.org/wiki/Switch_(informatika)

Linux-unkkal akár bridge-elhetünk, akár switch-elhetünk, sőt még route-olhatunk is! Csak megfelelő interfészeket kell a “dobozba” tenni. A gyakorlatban egyébként ez is történik, csak kész eszközöket használunk, amik azért kisebbek egy PC-nél, és kevesebbet is fogyasztanak. Belsejükben Linux dolgozik. 🙂

Az én itthoni hálózatomban egy kábelmodemből egy router-be érkezik a jel. A router GigaBit-es Ethernet interfészekkel, két sávú WLAN-nal (vezeték nélküli hálózat) rendelkezik. Az egyik helységben van egy switch is, ami elosztóként működik, akár egy 230 V-os elosztó. 🙂 Van még egy konnektorba dugható picike Wi-Fi lefedettség növelőm, az emeletre – és nagyjából ennyi. Asztali gépek, hordozható számítógépek, tabletek, okostelefonok és az aktív és passzív hálózati eszközök (kábelek). 🙂

Összességben elmondható, hogy a Layer 2-es eszközök fizikai, Ethernet MAC-cím (Media Access Control) alapján végzik az összekapcsolást, a router-ek pedig IP-címeket adnak, tipikusan DHCP-vel (Dynamic Host Configuration Protocol), azaz automatikusan kiosztanak minden hálózati résztvevőnek egy (helyi) IP-címet, továbbá a Layer 3-ban “operálnak”. Ha megnézzük a tegnapi írást a hálózatról és az IP-címről, akkor volt ott egy ifconfig parancs, ami kíírta, hogy a Wi-Fi interfésznek “ether 5c:e0:c5:5d:e2:01” a fizikai, gyárilag beállított címe. Ez a MAC-cím. 🙂

https://hu.wikipedia.org/wiki/MAC-c%C3%ADm

Nézzük meg ezek után a Debian 10-es Linux-om router tábláját. Ezt root-ként (rendszergazdaként) érhetjük el, a route paranccsal. Mára jobbára automatikusan beállítódik minden Linux-on.

root@gergo1:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 600 0 0 wlp2s0
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 wlp2s0
192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp2s0

Látható a cél, a gateway, a netmaszk, pár adat és az interfész. Ami itt van az egy “sima” hálózatba kötés, Wi-Fi-n keresztül. A netmaszkról lehetne beszélnünk. Binárisan ÉS kapcsolattal az egy IP-alhálózathoz való tartozást fejezi ki, egyszerűen hozzá kell ÉS-elni az IP-címhez. A gateway-ról is szóljunk. Ez nem más, mint az átjárónk, azaz a router-ünk. IP-címe jelen esetben 192.168.0.1. Ezt ki is deríthetjük egyrészt a route -n, másrészt a traceroute parancs kimenetéből – miután apt-get install paranccsal felinstalláltuk. Keressük meg tehát a nic.bme.hu-t, a BME elsődleges DNS szerverét (Domain Name System). 🙂

root@gergo1:~# traceroute 152.66.115.1
traceroute to 152.66.115.1 (152.66.115.1), 30 hops max, 60 byte packets
1 _gateway (192.168.0.1) 7.562 ms 7.526 ms 7.575 ms
..
7 tg0-2-0-3-1110.rtr.bme.hbone.hu (195.111.103.205) 22.009 ms 25.032 ms 25.496 ms
8 xge0-0-0-0.rax.net.bme.hu (152.66.0.124) 32.333 ms 32.308 ms 32.283 ms
9 hge1-0-49.rio.net.bme.hu (152.66.0.67) 26.305 ms 27.216 ms 26.405 ms
10 nic.bme.hu (152.66.115.1) 29.336 ms 29.489 ms 30.286 ms

A DNS egyébként a névfeloldást végzi az Interneten. Egy szervernévhez szolgáltatja a hozzá tartozó IP-címet elosztott adatbázisból.

Általában igaz, hogy egy számítógép hálózatba kacsolásához IP-cím, netmaszk (ebből jön a hálózat-cím, ÉS kapcsolattal), a gateway és egy-két DNS-szerver szükséges. 🙂

Hálózat, IP-címek

A tegnapihoz tartozok még egy magyarázattal. A hálózati szereplőknek egyedi címük van, úgynevezett IP címük. Ez a korábban említett IP protokoll a TCP/IP-ből, az ISO-OSI modell harmadik, hálózati rétegéből.

A világot korábban az IPV4 szerint osztották fel. Az egyetemek többek között úgynevezett autonóm zónákat kaptak. A BME például a 152.66.XXX.XXX úgynevezett B osztályú hálózatot. Azért B osztályú, mert az az első két szám kitöltött, és 256×256 számítógépnek van rata hely. 4 oktet. 4 byte-os cím. Vannak A osztályú, illetve C osztályú hálózatok is ezen terminológia szerint. 🙂

https://hu.wikipedia.org/wiki/IP-cím

http://www.vlsm-calc.net/ipclasses.php

Egy idő után azonban kifogytak ezek az IPV4-es címek, ezért van mára IPV6. Ez jóval több számítógép világhálóra (Internetre) kötését teszi lehetővé. Az IPV6 címek 128 bit hosszúak. Ez sose fog kifogyni, pláne, hogy jelenleg is ún alhálózatokba vannak szervezve a gépek, ahol az egyes végpontoknak pl. egy kábel-hálózatnál csak belső IP-címük van – ezért nem lehet az otthoni gépből többek között webszervert csinálni. Elvileg az adatátviteli technológia szimmetrikus is lehetne, de erősen a letöltési sávszélesség nagyobb az otthoni gépünkön. A sok-sok web, játék és egyéb szervert az úgynevezett “gerinchálózatra” kötik, “szerverfarmokon”. Jelenleg egyébként a két címzési mód keverve van jelen a világban. 🙂

https://hu.wikipedia.org/wiki/IPv6

Ezek után nézzük meg a Debian 10-es Linux-unk hálózati interface konfigurációját. Az ifconfig paranccsal írhatjuk ki a hálózati interfészeinket root-ként (rendszergazdaként). Régebben a hálózatot manuálisan kellett beállítani, ma már pl. az otthoni wifi hálózatot teljesen automatikusan konfigurálja a rendszer. 🙂

root@gergo1:~# ifconfig
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 27044 bytes 2149063 (2.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 27044 bytes 2149063 (2.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlp2s0: flags=4163 mtu 1500
inet 192.168.0.173 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::60da:3b20:dfeb:9fe0 prefixlen 64 scopeid 0x20
ether 5c:e0:c5:5d:e2:01 txqueuelen 1000 (Ethernet)
RX packets 1241841 bytes 1315097554 (1.2 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 593763 bytes 132026415 (125.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Jól látható a wlp2s0 interface konfigurációja, a “lo” – localhost, konfigurációja után. A belső hálózati IP-címünk a 192.168.0.173. 🙂

Secure Shell – biztonságos távkapcsolat két számítógép között – ssh, scp egy Mac mini OS X és egy Linux között

Két Linux/UNIX alapú számítógép között a biztonságos kapcsolatot, titkosított adatátvitelt az úgynevezett secure shell, azaz ssh kapcsolat jelenti. Alapvetően kliens-szerver kapcsolat, és rémesen egyszerű, ha az ember egyszer ráérez.

Először is felfedeztem, hogy az sshd, ssh daemon – vagyis a szerver – nincs installálva a Debian 10-em alatt. No ezen könnyű volt segíteni. Debian alatt alapvetően az apt-get install paranccsal lehet valamit telepíteni (rendszergazdaként). Kapásból legenerálja a szükséges kulcsokat, úgyhogy nem sok dolog van vele. 🙂

root@gergo1:~# apt-get install ssh
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following additional packages will be installed:
openssh-server openssh-sftp-server
Suggested packages:
molly-guard monkeysphere rssh ssh-askpass ufw
The following NEW packages will be installed:
openssh-server openssh-sftp-server ssh
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 599 kB of archives.
After this operation, 1,829 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://cdn-fastly.deb.debian.org/debian buster/main amd64 openssh-sftp-server amd64 1:7.9p1-10 [44.6 kB]
Get:2 http://cdn-fastly.deb.debian.org/debian buster/main amd64 openssh-server amd64 1:7.9p1-10 [352 kB]
Get:3 http://cdn-fastly.deb.debian.org/debian buster/main amd64 ssh all 1:7.9p1-10 [202 kB]
Fetched 599 kB in 2s (388 kB/s)
Preconfiguring packages …
Selecting previously unselected package openssh-sftp-server.
(Reading database … 488002 files and directories currently installed.)
Preparing to unpack …/openssh-sftp-server_1%3a7.9p1-10_amd64.deb …
Unpacking openssh-sftp-server (1:7.9p1-10) …
Selecting previously unselected package openssh-server.
Preparing to unpack …/openssh-server_1%3a7.9p1-10_amd64.deb …
Unpacking openssh-server (1:7.9p1-10) …
Selecting previously unselected package ssh.
Preparing to unpack …/ssh_1%3a7.9p1-10_all.deb …
Unpacking ssh (1:7.9p1-10) …
Setting up openssh-sftp-server (1:7.9p1-10) …
Setting up openssh-server (1:7.9p1-10) …
Creating config file /etc/ssh/sshd_config with new version
Creating SSH2 RSA key; this may take some time …
2048 SHA256:dOGw/PajE/BBgatmagHg384uQbysjJY2wr6m8WCkfus root@gergo1 (RSA)
Creating SSH2 ECDSA key; this may take some time …
256 SHA256:j8q+pBRwTqbiAvP1X4pL+pHUj7G4aoojCBGv7FYqWIE root@gergo1 (ECDSA)
Creating SSH2 ED25519 key; this may take some time …
256 SHA256:yn8li9pazT1UXV3T+gmo44boWeJU1S6HA7bKDgVpKc0 root@gergo1 (ED25519)
Created symlink /etc/systemd/system/sshd.service → /lib/systemd/system/ssh.service.
Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /lib/systemd/system/ssh.service.
rescue-ssh.target is a disabled or a static unit, not starting it.
Setting up ssh (1:7.9p1-10) …
Processing triggers for man-db (2.8.5-2) …
Processing triggers for systemd (241-5) …

Aztán az első “belépés” OS X-ről az ssh paranccsal. A Linux gép ip címe 192.168.0.109, lekérdezni command prompt-ból OS X alatt az “ifconfig“, Debian alatt az “ip addr“, illetve az “ip a” paranccsal lehet. Természetesen a hálózatban “belső ip címeket” használunk, az összes gép “tűzfal mögött” van. 🙂

Mac-mini:~ gvamosi$ ssh 192.168.0.109
The authenticity of host '192.168.0.109 (192.168.0.109)' can't be established.
ECDSA key fingerprint is SHA256:j8q+pBRwTqbiAvP1X4pL+pHUj7G4aoojCBGv7FYqWIE.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.109' (ECDSA) to the list of known hosts.
gvamosi@192.168.0.109's password:
Linux gergo1 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Sep 4 07:08:30 2019
gvamosi@gergo1:~$

Ezek után a w (who is) paranccsal megnézhetjük a bejelentkezetteket.

gvamosi@gergo1:~$ w
18:21:32 up 2 days, 7:36, 2 users, load average: 0.33, 0.60, 0.61
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
gvamosi tty2 tty2 Sat10 2days 1:24m 0.64s /opt/google/chrome/chrome --type=renderer --field-trial-handle=15503761646981189628,17074726826077816693,131072 --lang=en-US --enable-auto-reload
gvamosi pts/1 192.168.0.113 18:21 10.00s 0.00s 0.00s -bash

Látható, hogy a pts/1-en a 192.168.0.113-as IP címről van egy belépett “távoli” felhasználónk. 🙂

És akkor nézzük meg azt a trükköt, hogy ne kérjen többet jelszót, és másoljunk át scp-vel egy file-t. Ezt ezután akár egy automatikus processz (tipikusan egy script) is elvégezheti, pl. mentésbackup – céljából. Ezekről a későbbiekben írok majd bővebben. 🙂

Mac-mini:~ gvamosi$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/gvamosi/.ssh/id_rsa):
/Users/gvamosi/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/gvamosi/.ssh/id_rsa.
Your public key has been saved in /Users/gvamosi/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:8DpEyLqQO78UnwTlsbdhjxklU7o459DqmUC84Pc6jVs gvamosi@Mac-mini.local
The key's randomart image is:
+---[RSA 2048]----+
| o o.o |
| + + = |
| . = O |
| o o * @ |
|+ = = O S |
|.= * O . |
|o.=.*E+ |
| +.=o+ . |
| o+B. |
+----[SHA256]-----+
Mac-mini:~ gvamosi$ less .ssh/id_rsa.pub
Mac-mini:~ gvamosi$ ssh 192.168.0.109
gvamosi@192.168.0.109's password:
Linux gergo1 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Sep 16 17:40:12 2019 from 192.168.0.113
gvamosi@gergo1:~$ vi .ssh/authorized_keys
gvamosi@gergo1:~$ logout
Connection to 192.168.0.109 closed.
Mac-mini:~ gvamosi$ ssh 192.168.0.109
Linux gergo1 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Sep 16 17:42:13 2019 from 192.168.0.113
gvamosi@gergo1:~$ logout
Connection to 192.168.0.109 closed.
Mac-mini:~ gvamosi$ scp ownCloud/Photos/San\ Francisco.jpg 192.168.0.109:
San Francisco.jpg 100% 211KB 211.0KB/s 00:00
Mac-mini:~ gvamosi$

Mi is történik? Először kulcsot kenerálunk OS X alatt az ssh-keygen paranccsal. Aztán a publikus rsa kulcsot (RSA: Rivest-Shamir-Adleman – titkosítási rendszer nyilvános kulcsú titkosításhoz, bemutatása később) átmásoljuk a Linuxszerverre” az authorized_keys file-ba.

Utána csodák csodája már nem kér jelszót. 🙂

Ezután scp-vel átmásoljuk a “San Francisco.jpg” file-t.