Linux hálózat beállítása parancssorból

Egy pingvin áll egy futurisztikus adatközpontban, kék fények között. A Linux szimbóluma, a pingvin, a hálózati beállítások világában.

Amikor először találkoztam a Linux parancssorával, teljesen elveszettnek éreztem magam. A grafikus felület kényelme után hirtelen egy fekete képernyővel szembesültem, ahol minden utasítást kézzel kellett beírnom. A hálózati beállítások módosítása különösen ijesztőnek tűnt – hogyan lehet láthatatlan kapcsolatokat konfigurálni pusztán szöveges parancsokkal? Aztán rájöttem, hogy éppen ez a Linux szépsége és ereje: a teljes irányítás lehetősége.

A Linux hálózati beállítások parancssoros kezelése tulajdonképpen a rendszer mélyebb szintű vezérlését jelenti szöveges utasítások segítségével. Míg a grafikus felületek egyszerűbbnek tűnhetnek, a parancssor hihetetlen rugalmasságot és hatékonyságot kínál. Egyesek számára ez technikai akadályt jelent, mások számára a szabadság és a teljes irányítás szimbóluma. A parancssor használata lehetővé teszi a hálózati infrastruktúra finomhangolását olyan módon, ami grafikus eszközökkel gyakran nem lehetséges.

Ebben az anyagban megismerkedhetsz a Linux hálózati beállításainak parancssoros kezelésével, az alapoktól a haladó technikákig. Bemutatom a legfontosabb parancsokat és azok használatát, gyakorlati példákkal illusztrálva. Megtanulod, hogyan ellenőrizd, diagnosztizáld és konfigurálhatod a hálózati kapcsolataidat, függetlenül attól, hogy otthoni gépen, szervereken vagy virtuális környezetben dolgozol. A végére magabiztosan fogod kezelni a Linux hálózati beállításait a terminálból.

Alapvető hálózati információk lekérdezése

Mielőtt bármilyen módosítást végeznénk a hálózati beállításokon, elengedhetetlen, hogy pontos képet kapjunk a jelenlegi konfigurációról. A Linux rendszerek számos eszközt kínálnak erre a célra, amelyekkel részletes információkat nyerhetünk a hálózati interfészekről, kapcsolatokról és beállításokról.

Az IP cím és hálózati interfészek megjelenítése

A hálózati diagnosztika első lépése általában az aktív interfészek és a hozzájuk rendelt IP címek ellenőrzése. Régebben az ifconfig parancs volt erre a sztenderd eszköz, azonban ez mára sok disztribúción elavultnak számít, helyette az ip parancsot részesítik előnyben.

ip addr show

Ez a parancs részletes információt ad minden hálózati interfészről, beleértve a fizikai és virtuális interfészeket is. A kimenet tartalmazza az interfész nevét (pl. eth0, wlan0), MAC címét, IP címét és egyéb konfigurációs adatokat.

Ha csak egy konkrét interfészre vagyunk kíváncsiak, megadhatjuk annak nevét:

ip addr show dev eth0

A rövidebb formátum használatához:

ip a

„A hálózati interfészek nevei nem véletlenszerűek – a modern Linux rendszerek előre meghatározott elnevezési konvenciókat követnek, amelyek információt hordoznak az interfész típusáról és fizikai elhelyezkedéséről.”

Az ip parancs mellett még mindig használhatjuk az ifconfig parancsot is, ha telepítve van:

ifconfig

Vagy egy konkrét interfészre:

ifconfig eth0

Routing táblázat ellenőrzése

A routing táblázat határozza meg, hogy a hálózati forgalom hogyan kerül továbbításra a különböző célok felé. Ennek ellenőrzése kulcsfontosságú a hálózati problémák diagnosztizálásakor.

ip route

Vagy a rövidebb formában:

ip r

A régebbi rendszereken használható a route parancs is:

route -n

A -n kapcsoló azt jelzi, hogy a rendszer ne próbálja meg feloldani az IP címeket nevekre, ami gyorsabb kimenetet eredményez.

DNS beállítások ellenőrzése

A DNS (Domain Name System) beállítások határozzák meg, hogyan oldja fel a rendszer a domain neveket IP címekre. Ezek az információk általában a /etc/resolv.conf fájlban találhatók:

cat /etc/resolv.conf

A névszerverek lekérdezéséhez használhatjuk a nslookup vagy a dig parancsot is:

nslookup google.com
dig google.com

Hálózati kapcsolat tesztelése

A hálózati kapcsolat tesztelésének legegyszerűbb módja a ping parancs használata:

ping -c 4 google.com

A -c 4 azt jelenti, hogy csak 4 csomagot küldünk, majd leállunk. Alapértelmezés szerint a ping folyamatosan fut, amíg meg nem szakítjuk a Ctrl+C billentyűkombinációval.

A hálózati útvonal ellenőrzéséhez használhatjuk a traceroute vagy tracepath parancsot:

traceroute google.com
tracepath google.com

Ezek a parancsok megmutatják az összes útválasztót (router), amelyen keresztül a forgalom halad a célállomás felé.

Nyitott portok és aktív kapcsolatok ellenőrzése

A rendszeren futó hálózati szolgáltatások és aktív kapcsolatok ellenőrzéséhez használhatjuk az ss vagy a régebbi netstat parancsot:

ss -tuln

Ez a parancs megjeleníti az összes TCP (-t) és UDP (-u) kapcsolatot, csak a figyelő (-l) socketeket, és numerikus formában (-n) mutatja az IP címeket és portokat.

A netstat parancs hasonló eredményt ad:

netstat -tuln

Az aktív kapcsolatok ellenőrzéséhez elhagyhatjuk a -l kapcsolót:

ss -tun

Hálózati interfészek konfigurálása

A hálózati interfészek konfigurálása a Linux rendszeradminisztráció egyik alapvető feladata. Az alábbiakban bemutatjuk, hogyan lehet ezt elvégezni parancssorból, különböző módszerekkel.

Ideiglenes IP cím beállítása

Az ip parancs segítségével gyorsan beállíthatunk egy ideiglenes IP címet egy interfészre:

sudo ip addr add 192.168.1.100/24 dev eth0

Ez a parancs hozzáad egy 192.168.1.100 IP címet az eth0 interfészhez, 24 bites hálózati maszkkal (255.255.255.0). Ez a beállítás azonban csak a rendszer újraindításáig marad érvényben.

Az interfész aktiválásához vagy deaktiválásához:

sudo ip link set eth0 up
sudo ip link set eth0 down

A régebbi ifconfig paranccsal:

sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
sudo ifconfig eth0 down

Alapértelmezett átjáró (gateway) beállítása

Az alapértelmezett átjáró az az útválasztó, amelyen keresztül a rendszer a külső hálózatokat éri el. Beállítása:

sudo ip route add default via 192.168.1.1 dev eth0

A régebbi route paranccsal:

sudo route add default gw 192.168.1.1 eth0

DNS szerverek beállítása

A DNS szerverek beállítása disztribúciónként eltérő lehet. A legtöbb modern rendszeren a /etc/resolv.conf fájlt a rendszer automatikusan generálja. Közvetlenül szerkeszthetjük:

sudo nano /etc/resolv.conf

És hozzáadhatjuk a DNS szervereket:

nameserver 8.8.8.8
nameserver 8.8.4.4

Azonban ez a módosítás általában csak ideiglenes, mivel a fájlt a hálózatkezelő szolgáltatások gyakran felülírják. Tartós módosításhoz a disztribúció-specifikus konfigurációs fájlokat kell használni.

Állandó hálózati beállítások

Az állandó hálózati beállítások módja nagyban függ a használt Linux disztribúciótól és a hálózatkezelő rendszertől. Az alábbiakban néhány elterjedt módszert mutatunk be.

Debian/Ubuntu: /etc/network/interfaces

A Debian-alapú rendszereken a hálózati beállításokat hagyományosan az /etc/network/interfaces fájlban tárolják:

sudo nano /etc/network/interfaces

Statikus IP konfigurációhoz:

auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4

DHCP-hez:

auto eth0
iface eth0 inet dhcp

A módosítások alkalmazásához:

sudo systemctl restart networking

Red Hat/CentOS/Fedora: Network Scripts

A Red Hat-alapú rendszereken a hálózati beállításokat hagyományosan az /etc/sysconfig/network-scripts/ könyvtárban található fájlokban tárolják:

sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0

Statikus IP konfigurációhoz:

DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes

DHCP-hez:

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

A módosítások alkalmazásához:

sudo systemctl restart network

NetworkManager: nmcli

A modern Linux disztribúciók többsége a NetworkManager szolgáltatást használja a hálózati kapcsolatok kezelésére. A NetworkManager parancssorból a nmcli eszközzel kezelhető:

nmcli device status

Kapcsolat létrehozása statikus IP-vel:

sudo nmcli con add con-name "static-eth0" ifname eth0 type ethernet ip4 192.168.1.100/24 gw4 192.168.1.1
sudo nmcli con mod "static-eth0" ipv4.dns "8.8.8.8 8.8.4.4"

DHCP kapcsolat létrehozása:

sudo nmcli con add con-name "dhcp-eth0" ifname eth0 type ethernet

Kapcsolat aktiválása:

sudo nmcli con up "static-eth0"

„A hálózati konfigurációs fájlok közvetlen szerkesztése előtt mindig készíts biztonsági másolatot – egy elírás is elegendő lehet ahhoz, hogy a rendszer hálózati kapcsolata megszakadjon, ami különösen távoli szerverek esetén problémás lehet.”

Vezeték nélküli (WiFi) kapcsolatok kezelése

A vezeték nélküli hálózatok kezelése parancssorból különösen hasznos lehet szerverek, fejgépek vagy grafikus felülettel nem rendelkező rendszerek esetén. Több eszköz is rendelkezésünkre áll erre a célra.

WiFi interfészek ellenőrzése

Először ellenőrizzük a vezeték nélküli interfészeket:

ip link show

vagy

iwconfig

A vezeték nélküli interfészek általában wlan0 vagy hasonló névvel rendelkeznek.

Elérhető hálózatok keresése

Az elérhető WiFi hálózatok kereséséhez használhatjuk az iwlist parancsot:

sudo iwlist wlan0 scan | grep ESSID

Ez megjeleníti az összes elérhető hálózat nevét (ESSID).

Részletesebb információkért:

sudo iwlist wlan0 scan

Kapcsolódás WiFi hálózathoz (wpa_supplicant)

A wpa_supplicant a legelterjedtebb eszköz a vezeték nélküli kapcsolatok kezelésére. Először hozzunk létre egy konfigurációs fájlt:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Adjuk hozzá a hálózati adatokat:

network={
    ssid="HálózatNeve"
    psk="jelszó"
}

Ezután indítsuk el a wpa_supplicant-ot:

sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf

Végül kérjünk IP címet DHCP-vel:

sudo dhclient wlan0

Kapcsolódás WiFi hálózathoz (nmcli)

Ha a rendszer NetworkManager-t használ, a vezeték nélküli kapcsolatokat az nmcli paranccsal is kezelhetjük:

# Elérhető WiFi hálózatok listázása
nmcli device wifi list

# Kapcsolódás hálózathoz
nmcli device wifi connect "HálózatNeve" password "jelszó"

WiFi kapcsolat információinak megjelenítése

A kapcsolat állapotának ellenőrzéséhez:

iwconfig wlan0

vagy

nmcli device wifi

A jelerősség ellenőrzéséhez:

watch -n 1 cat /proc/net/wireless

Ez másodpercenként frissíti a vezeték nélküli kapcsolat adatait.

Hálózati diagnosztika és hibaelhárítás

A hálózati problémák diagnosztizálása és elhárítása a rendszeradminisztrátorok mindennapi feladatai közé tartozik. A Linux számos eszközt kínál erre a célra.

Ping és kapcsolat tesztelése

A ping parancs a legelső eszköz a hálózati kapcsolat ellenőrzésére:

ping -c 4 google.com

Ha a ping nem működik, ellenőrizhetjük a DNS feloldást:

nslookup google.com

vagy

dig google.com

Ha a DNS feloldás működik, de a ping nem, ellenőrizhetjük a hálózati útvonalat:

traceroute google.com

vagy

mtr google.com

Az mtr (My Traceroute) parancs a traceroute és a ping kombinációja, amely folyamatosan frissülő statisztikákat nyújt.

Hálózati forgalom monitorozása

A hálózati forgalom valós idejű monitorozásához használhatjuk a tcpdump parancsot:

sudo tcpdump -i eth0

Konkrét port figyeléséhez:

sudo tcpdump -i eth0 port 80

Konkrét protokoll figyeléséhez:

sudo tcpdump -i eth0 icmp

A netstat vagy ss parancsokkal ellenőrizhetjük az aktív kapcsolatokat:

ss -tuln

Felhasználóbarátabb forgalomfigyeléshez használhatjuk az iftop eszközt:

sudo iftop -i eth0

Vagy a nethogs parancsot, amely folyamatonként mutatja a hálózati forgalmat:

sudo nethogs eth0

Sávszélesség tesztelése

A hálózati sávszélesség teszteléséhez használhatjuk az iperf eszközt. Ehhez szükségünk van egy szerverre és egy kliensre.

A szerveren:

iperf -s

A kliensen:

iperf -c szerver_ip

Hálózati szolgáltatások ellenőrzése

A rendszeren futó hálózati szolgáltatások ellenőrzéséhez:

sudo lsof -i

vagy

ss -tuln

Egy konkrét port ellenőrzéséhez:

sudo lsof -i :80

vagy

ss -tuln | grep :80

Tűzfal beállítások ellenőrzése

A Linux tűzfal (iptables/nftables) beállításainak ellenőrzése:

sudo iptables -L

vagy

sudo nft list ruleset

Ha UFW (Uncomplicated Firewall) van telepítve:

sudo ufw status

Ha firewalld van használatban:

sudo firewall-cmd --list-all

„A hálózati problémák diagnosztizálásánál mindig alulról felfelé haladj: először ellenőrizd a fizikai kapcsolatot, majd az IP konfigurációt, a routing táblát, és csak ezután a magasabb szintű szolgáltatásokat.”

Haladó hálózati beállítások

A Linux rendszerek rendkívül rugalmas hálózati konfigurációt tesznek lehetővé. Az alábbiakban néhány haladóbb beállítási lehetőséget mutatunk be.

IP aliasok és másodlagos címek

Egy interfészhez több IP címet is rendelhetünk:

sudo ip addr add 192.168.1.101/24 dev eth0

A régebbi rendszereken:

sudo ifconfig eth0:0 192.168.1.101 netmask 255.255.255.0 up

VLAN konfigurálás

VLAN (Virtual LAN) interfészek létrehozása:

sudo ip link add link eth0 name eth0.100 type vlan id 100
sudo ip addr add 192.168.100.1/24 dev eth0.100
sudo ip link set eth0.100 up

Bonding (link aggregation)

A bonding vagy link aggregation több fizikai interfészt egyesít egy logikai interfészbe a nagyobb sávszélesség vagy redundancia érdekében.

Először betöltjük a bonding modult:

sudo modprobe bonding

Ezután létrehozzuk a bond interfészt:

sudo ip link add bond0 type bond
sudo ip link set bond0 up

Beállítjuk a bonding módot:

echo 802.3ad > /sys/class/net/bond0/bonding/mode

Hozzáadjuk a fizikai interfészeket:

sudo ip link set eth0 master bond0
sudo ip link set eth1 master bond0

Végül beállítjuk az IP címet:

sudo ip addr add 192.168.1.100/24 dev bond0

Bridge (híd) konfigurálás

A bridge vagy híd interfész több hálózati szegmenst köt össze egyetlen hálózati tartományba:

sudo ip link add name br0 type bridge
sudo ip link set br0 up

Hozzáadjuk a fizikai interfészeket:

sudo ip link set eth0 master br0
sudo ip link set eth1 master br0

Beállítjuk az IP címet:

sudo ip addr add 192.168.1.100/24 dev br0

IP forwarding engedélyezése

Ha a Linux rendszert routerként szeretnénk használni, engedélyeznünk kell az IP forwarding funkciót:

sudo sysctl -w net.ipv4.ip_forward=1

A beállítás állandósításához:

echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Statikus routing

Egyedi routing szabályok hozzáadása:

sudo ip route add 192.168.2.0/24 via 192.168.1.254 dev eth0

A régebbi rendszereken:

sudo route add -net 192.168.2.0/24 gw 192.168.1.254 eth0

Tűzfal beállítások

Az iptables használata alapvető tűzfal szabályok létrehozásához:

# Alapértelmezett szabály beállítása
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

# SSH kapcsolatok engedélyezése
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Már létező kapcsolatok és a kapcsolódó forgalom engedélyezése
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Loopback interfész engedélyezése
sudo iptables -A INPUT -i lo -j ACCEPT

A szabályok mentése:

sudo iptables-save > /etc/iptables.rules

És automatikus betöltése rendszerindításkor:

echo "iptables-restore < /etc/iptables.rules" | sudo tee -a /etc/rc.local

Hálózati szkriptelés és automatizálás

A hálózati beállítások automatizálása rendkívül hasznos lehet, különösen sok rendszer kezelése esetén. Az alábbiakban néhány példát mutatunk be a hálózati feladatok szkriptelésére.

Bash szkriptek a hálózati beállításokhoz

Egy egyszerű szkript a hálózati interfészek állapotának ellenőrzésére:

#!/bin/bash

echo "Hálózati interfészek állapota:"
ip -br link show

echo -e "\nIP címek:"
ip -br addr show

echo -e "\nRouting tábla:"
ip route

Szkript az internetkapcsolat ellenőrzésére:

#!/bin/bash

if ping -c 1 google.com &> /dev/null; then
    echo "Az internetkapcsolat működik."
else
    echo "Nincs internetkapcsolat!"
fi

Időzített hálózati feladatok (cron)

A cron használatával időzíthetünk hálózati feladatokat. Például, egy szkript futtatása 5 percenként az internetkapcsolat ellenőrzésére:

*/5 * * * * /path/to/network_check.sh >> /var/log/network_check.log 2>&1

Hálózati monitorozás és értesítések

Szkript a hálózati forgalom monitorozására és értesítések küldésére:

#!/bin/bash

THRESHOLD=1000000  # 1 MB/s
INTERFACE="eth0"

RX_BYTES_1=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
TX_BYTES_1=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)

sleep 1

RX_BYTES_2=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
TX_BYTES_2=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)

RX_RATE=$((RX_BYTES_2 - RX_BYTES_1))
TX_RATE=$((TX_BYTES_2 - TX_BYTES_1))

if [ $RX_RATE -gt $THRESHOLD ] || [ $TX_RATE -gt $THRESHOLD ]; then
    echo "Magas hálózati forgalom: RX: $RX_RATE bytes/s, TX: $TX_RATE bytes/s" | mail -s "Hálózati riasztás" admin@example.com
fi

Automatikus hálózati konfigurálás

Szkript egy új szerver automatikus hálózati konfigurálásához:

#!/bin/bash

# Paraméterek
IP="192.168.1.100/24"
GATEWAY="192.168.1.1"
DNS1="8.8.8.8"
DNS2="8.8.4.4"
INTERFACE="eth0"

# IP cím beállítása
ip addr add $IP dev $INTERFACE

# Gateway beállítása
ip route add default via $GATEWAY dev $INTERFACE

# DNS szerverek beállítása
cat > /etc/resolv.conf << EOF
nameserver $DNS1
nameserver $DNS2
EOF

echo "Hálózati konfiguráció kész."

„A hálózati szkriptek tesztelését mindig kontrollált környezetben végezd, különösen távoli szerverek esetén. Egy hibás szkript teljesen megszakíthatja a hálózati kapcsolatot, lehetetlenné téve a távoli hozzáférést.”

Hálózati konfigurációk különböző Linux disztribúciókon

A különböző Linux disztribúciók eltérő módszereket használnak a hálózati beállítások kezelésére. Az alábbiakban összehasonlítjuk a leggyakoribb disztribúciók konfigurációs módszereit.

Debian/Ubuntu

A Debian-alapú rendszerek hagyományosan az /etc/network/interfaces fájlt használják a hálózati beállítások tárolására:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4

Az újabb Ubuntu verziók a Netplan-t használják, amely YAML formátumú konfigurációs fájlokat használ az /etc/netplan/ könyvtárban:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

A beállítások alkalmazása:

sudo netplan apply

Red Hat/CentOS/Fedora

A Red Hat-alapú rendszerek hagyományosan az /etc/sysconfig/network-scripts/ könyvtárban található fájlokat használják:

# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes

Az újabb verziók a NetworkManager-t használják, amely nmcli-vel vagy közvetlenül a konfigurációs fájlokkal kezelhető.

Arch Linux

Az Arch Linux a NetworkManager-t vagy a systemd-networkd-t használja. A systemd-networkd konfigurációja:

# /etc/systemd/network/20-wired.network
[Match]
Name=eth0

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
DNS=8.8.4.4

A szolgáltatás indítása:

sudo systemctl enable --now systemd-networkd

SUSE/openSUSE

A SUSE/openSUSE a Wicked vagy NetworkManager hálózatkezelőt használja. A konfigurációs fájlok az /etc/sysconfig/network/ könyvtárban találhatók:

# /etc/sysconfig/network/ifcfg-eth0
BOOTPROTO='static'
IPADDR='192.168.1.100/24'
STARTMODE='auto'
# /etc/sysconfig/network/routes
default 192.168.1.1 - -

Disztribúciók összehasonlítása

Az alábbi táblázat összehasonlítja a különböző disztribúciók hálózati konfigurációs módszereit:

DisztribúcióKonfigurációs fájlokHálózatkezelőParancsok
Debian/etc/network/interfacesifupdownifup, ifdown
Ubuntu (újabb)/etc/netplan/*.yamlNetplannetplan apply
Red Hat/CentOS/etc/sysconfig/network-scripts/NetworkManagernmcli, ifup, ifdown
Arch Linux/etc/systemd/network/systemd-networkdnetworkctl
SUSE/openSUSE/etc/sysconfig/network/Wickedwicked, ifup, ifdown

Disztribúció-független megoldások

A NetworkManager majdnem minden disztribúción elérhető, és egységes parancssor-interfészt biztosít:

# Kapcsolatok listázása
nmcli con show

# Új kapcsolat létrehozása
nmcli con add con-name "static-eth0" ifname eth0 type ethernet ip4 192.168.1.100/24 gw4 192.168.1.1

# Kapcsolat módosítása
nmcli con mod "static-eth0" ipv4.dns "8.8.8.8 8.8.4.4"

# Kapcsolat aktiválása/deaktiválása
nmcli con up "static-eth0"
nmcli con down "static-eth0"

Hálózati biztonság parancssorból

A hálózati biztonság kritikus fontosságú minden rendszer számára. A Linux parancssor számos eszközt kínál a hálózati biztonság kezelésére és ellenőrzésére.

Tűzfal beállítások

A Linux rendszerek többsége az iptables, nftables vagy a firewalld tűzfalat használja. Íme néhány alapvető parancs:

iptables

# Bejövő forgalom alapértelmezett szabálya
sudo iptables -P INPUT DROP

# SSH engedélyezése
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Már létező kapcsolatok engedélyezése
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Szabályok listázása
sudo iptables -L -v

# Szabályok mentése
sudo iptables-save > /etc/iptables.rules

firewalld

# Szolgáltatás engedélyezése
sudo firewall-cmd --permanent --add-service=http

# Port engedélyezése
sudo firewall-cmd --permanent --add-port=8080/tcp

# Változtatások alkalmazása
sudo firewall-cmd --reload

# Beállítások listázása
sudo firewall-cmd --list-all

SSH biztonság

Az SSH a leggyakrabban használt protokoll a Linux rendszerek távoli eléréséhez. Néhány biztonsági beállítás:

sudo nano /etc/ssh/sshd_config

Ajánlott beállítások:

# Root bejelentkezés tiltása
PermitRootLogin no

# Jelszavas bejelentkezés tiltása
PasswordAuthentication no

# Csak kulcsalapú hitelesítés engedélyezése
PubkeyAuthentication yes

# Csak a 2-es SSH protokoll használata
Protocol 2

# Inaktív kapcsolatok időtúllépése
ClientAliveInterval 300
ClientAliveCountMax 2

A módosítások után újra kell indítani az SSH szolgáltatást:

sudo systemctl restart sshd

Port szkennelés és hálózati sebezhetőségek ellenőrzése

A nmap eszköz használata a nyitott portok és potenciális sebezhetőségek ellenőrzésére:

# Alapvető port szkennelés
sudo nmap 192.168.1.1

# Részletes szkennelés
sudo nmap -A -T4 192.168.1.1

# Teljes hálózat szkennelése
sudo nmap -sP 192.168.1.0/24

Hálózati forgalom titkosítása

A stunnel használata a nem titkosított szolgáltatások forgalmának titkosítására:

sudo apt-get install stunnel4

# Konfiguráció létrehozása
cat > /etc/stunnel/stunnel.conf << EOF

[mysql]

accept = 3307 connect = 192.168.1.100:3306 cert = /etc/stunnel/stunnel.pem EOF # Tanúsítvány létrehozása sudo openssl req -new -x509 -days 365 -nodes -out /etc/stunnel/stunnel.pem -keyout /etc/stunnel/stunnel.pem # Szolgáltatás indítása sudo systemctl restart stunnel4

Hálózati hozzáférés korlátozása

A tcpwrappers használata a hálózati hozzáférés korlátozására:

# Hozzáférés engedélyezése
echo "sshd: 192.168.1." >> /etc/hosts.allow

# Hozzáférés tiltása
echo "sshd: ALL" >> /etc/hosts.deny

„A biztonság nem egyszeri beállítás, hanem folyamatos folyamat. Rendszeresen ellenőrizd a hálózati biztonsági beállításokat, frissítsd a szoftvereket, és kövesd nyomon a biztonsági naplókat.”

Hálózati szolgáltatások konfigurálása

A Linux rendszerek számos hálózati szolgáltatást kínálnak, amelyeket parancssorból konfigurálhatunk. Az alábbiakban néhány gyakori szolgáltatás beállítását mutatjuk be.

DHCP szerver beállítása (ISC DHCP)

A DHCP (Dynamic Host Configuration Protocol) szerver automatikusan osztja ki az IP címeket a hálózati kliensek számára.

sudo apt-get install isc-dhcp-server

A konfigurációs fájl szerkesztése:

sudo nano /etc/dhcp/dhcpd.conf

Alapvető konfiguráció:

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
  option routers 192.168.1.1;
  option domain-name-servers 8.8.8.8, 8.8.4.4;
  default-lease-time 600;
  max-lease-time 7200;
}

A szolgáltatás indítása:

sudo systemctl restart isc-dhcp-server

DNS szerver beállítása (BIND)

A BIND (Berkeley Internet Name Domain) a legelterjedtebb DNS szerver a Linux rendszereken.

sudo apt-get install bind9

Zóna konfigurálása:

sudo nano /etc/bind/named.conf.local

Zóna hozzáadása:

zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
};

Zóna fájl létrehozása:

sudo mkdir -p /etc/bind/zones
sudo nano /etc/bind/zones/db.example.com

Zóna fájl tartalma:

$TTL    604800
@       IN      SOA     ns1.example.com. admin.example.com. (
                  3         ; Serial
             604800         ; Refresh
              86400         ; Retry
            2419200         ; Expire
             604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.example.com.
@       IN      A       192.168.1.10
www     IN      A       192.168.1.10

A szolgáltatás újraindítása:

sudo systemctl restart bind9

Web szerver beállítása (Apache)

Az Apache a legelterjedtebb web szerver a Linux rendszereken.

sudo apt-get install apache2

Virtuális host konfigurálása:

sudo nano /etc/apache2/sites-available/example.com.conf

Konfiguráció:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com
    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

Könyvtár létrehozása:

sudo mkdir -p /var/www/example.com
sudo chown -R www-data:www-data /var/www/example.com

Virtuális host engedélyezése:

sudo a2ensite example.com.conf
sudo systemctl reload apache2

FTP szerver beállítása (vsftpd)

A vsftpd (Very Secure FTP Daemon) egy biztonságos és gyors FTP szerver.

sudo apt-get install vsftpd

Konfiguráció szerkesztése:

sudo nano /etc/vsftpd.conf

Ajánlott beállítások:

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES

A szolgáltatás újraindítása:

sudo systemctl restart vsftpd

Proxy szerver beállítása (Squid)

A Squid egy népszerű proxy szerver, amely gyorsíthatja a web böngészést és szűrheti a tartalmat.

sudo apt-get install squid

Konfiguráció szerkesztése:

sudo nano /etc/squid/squid.conf

Alapvető beállítások:

http_port 3128
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access deny all

A szolgáltatás újraindítása:

sudo systemctl restart squid

Szolgáltatások összehasonlítása

Az alábbi táblázat összehasonlítja a különböző hálózati szolgáltatások jellemzőit:

SzolgáltatásPortProtokollKonfigurációBiztonsági szempontok
DHCP67/68UDP/etc/dhcp/dhcpd.confJogosulatlan szerverek, IP ütközések
DNS (BIND)53TCP/UDP/etc/bind/Zóna átvitel, rekurzív lekérdezések
Apache80/443TCP/etc/apache2/SSL/TLS, jogosultságok, ModSecurity
vsftpd21TCP/etc/vsftpd.confHitelesítés, titkosítás, chroot
Squid3128TCP/etc/squid/squid.confHozzáférési listák, tartalom szűrés

„A hálózati szolgáltatások konfigurálása előtt mindig gondolj a biztonsági szempontokra. Csak azokat a szolgáltatásokat futtasd, amelyekre valóban szükség van, és mindig frissítsd őket a legújabb biztonsági javításokkal.”

Konténerek és virtualizáció hálózati beállításai

A konténerek és virtuális gépek hálózati konfigurálása speciális ismereteket igényel. Az alábbiakban bemutatjuk a leggyakoribb megoldásokat.

Docker hálózati beállítások

A Docker saját virtuális hálózatokat hoz létre a konténerek számára. Alapvető parancsok:

# Hálózatok listázása
docker network ls

# Új hálózat létrehozása
docker network create --driver bridge my_network

# Konténer indítása adott hálózaton
docker run --network=my_network -d nginx

# Hálózat részleteinek megtekintése
docker network inspect my_network

Egyedi IP cím hozzárendelése:

docker run --network=my_network --ip=172.18.0.10 -d nginx

Port továbbítás:

docker run -p 8080:80 -d nginx

KVM/QEMU virtuális gépek hálózati beállításai

A KVM/QEMU virtuális gépek különböző hálózati módokat támogatnak:

# NAT hálózat használata
virt-install --name vm1 --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/vm1.qcow2,size=20 --network network=default --os-type linux --os-variant ubuntu20.04

# Bridge hálózat használata
virt-install --name vm2 --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/vm2.qcow2,size=20 --network bridge=br0 --os-type linux --os-variant ubuntu20.04

Meglévő virtuális gép hálózati beállításainak módosítása:

virsh edit vm1

Kubernetes hálózati beállítások

A Kubernetes komplex hálózati modellt használ a podok és szolgáltatások számára:

# Hálózati plugin telepítése (pl. Calico)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

# Szolgáltatás létrehozása
kubectl expose deployment nginx --port=80 --type=ClusterIP

# Szolgáltatások listázása
kubectl get services

# Pod hálózati információinak megtekintése
kubectl describe pod nginx-pod

Bridge hálózat létrehozása

A bridge hálózat lehetővé teszi, hogy a virtuális gépek vagy konténerek ugyanazon a hálózati szegmensen legyenek, mint a host gép:

# Bridge csomag telepítése
sudo apt-get install bridge-utils

# Bridge interfész létrehozása
sudo ip link add name br0 type bridge
sudo ip link set br0 up

# Fizikai interfész hozzáadása a bridge-hez
sudo ip link set eth0 master br0

# IP cím beállítása a bridge-en
sudo ip addr add 192.168.1.100/24 dev br0
sudo ip route add default via 192.168.1.1 dev br0

Állandó konfiguráció Debian/Ubuntu rendszeren:

# /etc/network/interfaces
auto br0
iface br0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    bridge_ports eth0
    bridge_stp off
    bridge_fd 0

Hálózati névterek (Network Namespaces)

A Linux hálózati névterek lehetővé teszik izolált hálózati környezetek létrehozását:

# Új névtér létrehozása
sudo ip netns add ns1

# Veth pár létrehozása
sudo ip link add veth0 type veth peer name veth1

# Veth interfészek mozgatása
sudo ip link set veth1 netns ns1

# Interfészek konfigurálása
sudo ip addr add 192.168.100.1/24 dev veth0
sudo ip link set veth0 up
sudo ip netns exec ns1 ip addr add 192.168.100.2/24 dev veth1
sudo ip netns exec ns1 ip link set veth1 up
sudo ip netns exec ns1 ip link set lo up

# Parancs futtatása a névtérben
sudo ip netns exec ns1 ping 192.168.100.1

„A virtualizált környezetek hálózati konfigurációja gyakran összetettebb, mint a fizikai rendszereké. Mindig készíts tervrajzot a hálózati topológiáról, és dokumentáld a beállításokat a későbbi hibaelhárítás megkönnyítése érdekében.”

Speciális hálózati protokollok és szolgáltatások

A Linux rendszerek számos speciális hálózati protokollt és szolgáltatást támogatnak, amelyek speciális felhasználási esetekhez hasznosak.

VPN beállítása (OpenVPN)

Az OpenVPN egy rugalmas VPN megoldás, amely titkosított alagutakat hoz létre a hálózatok között:

sudo apt-get install openvpn easy-rsa

Tanúsítványok létrehozása:

mkdir -p ~/openvpn-ca
cp -r /usr/share/easy-rsa/* ~/openvpn-ca/
cd ~/openvpn-ca

Konfiguráció szerkesztése:

nano vars

Tanúsítványok generálása:

source vars
./clean-all
./build-ca
./build-key-server server
./build-key client1
./build-dh

Szerver konfiguráció:

nano /etc/openvpn/server.conf
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

Szerver indítása:

sudo systemctl start openvpn@server

Proxy ARP beállítása

A Proxy ARP lehetővé teszi, hogy egy rendszer válaszoljon más gépek ARP kéréseire:

# Proxy ARP engedélyezése
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp

# Állandó beállítás
echo "net.ipv4.conf.eth0.proxy_arp = 1" >> /etc/sysctl.conf
sudo sysctl -p

IPv6 beállítások

Az IPv6 konfigurálása hasonló az IPv4-hez, de néhány speciális beállítást igényel:

# IPv6 cím hozzáadása
sudo ip -6 addr add 2001:db8::1/64 dev eth0

# IPv6 alapértelmezett átjáró beállítása
sudo ip -6 route add default via 2001:db8::1 dev eth0

# IPv6 forgalom engedélyezése a tűzfalon
sudo ip6tables -A INPUT -p ipv6-icmp -j ACCEPT
sudo ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

QoS (Quality of Service) beállítása

A QoS lehetővé teszi a hálózati forgalom priorizálását:

# tc (Traffic Control) telepítése
sudo apt-get install iproute2

# Egyszerű QoS beállítás
sudo tc qdisc add dev eth0 root handle 1: htb default 12
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 50mbit prio 1
sudo tc class add dev eth0 parent 1:1 classid 1:11 htb rate 30mbit prio 2
sudo tc class add dev eth0 parent 1:1 classid 1:12 htb rate 20mbit prio 3

# Forgalom osztályozása
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 22 0xffff flowid 1:10
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:11

Multicast beállítások

A multicast lehetővé teszi az adatok egyidejű küldését több címzettnek:

# Multicast forgalom engedélyezése
sudo ip route add 224.0.0.0/4 dev eth0

# Multicast csoport csatlakozás tesztelése
sudo apt-get install smcroute
sudo smcroutectl join eth0 225.1.2.3

Időszinkronizálás (NTP)

Az NTP (Network Time Protocol) segít a rendszeróra pontos beállításában:

sudo apt-get install ntp

# NTP szerver konfiguráció
sudo nano /etc/ntp.conf

Szerver konfiguráció:

server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server 3.pool.ntp.org

Szolgáltatás újraindítása:

sudo systemctl restart ntp

Idő szinkronizálása:

sudo ntpq -p

A Linux hálózati parancssori eszközök rendkívül rugalmasak és hatékonyak. Megfelelő ismeretükkel a rendszergazdák teljes irányítást gyakorolhatnak a hálózati infrastruktúra felett, a legegyszerűbb asztali gépektől a legkomplexebb szerver környezetekig.

„A parancssori hálózati eszközök valódi ereje nem az egyes parancsokban rejlik, hanem abban, ahogy ezeket kombinálni tudod komplex feladatok megoldására, szkriptekben automatizálva vagy éppen valós idejű problémamegoldásra használva.”

BeOS

ITmozaik
Adatvédelmi áttekintés

Ez a weboldal sütiket használ, hogy a lehető legjobb felhasználói élményt nyújthassuk. A cookie-k információit tárolja a böngészőjében, és olyan funkciókat lát el, mint a felismerés, amikor visszatér a weboldalunkra, és segítjük a csapatunkat abban, hogy megértsék, hogy a weboldal mely részei érdekesek és hasznosak.