Ubuntu ip,dhcp beállítása, routing

Ubuntu 18.04.2

DHCP beállítása Ubuntu 18.04-es operációs rendszeren

Mire szolgál a DHCP?
Minden hálózatba kötött számítógépnek rendelkeznie kell azokkal a paraméterekkel melyek segítségével kommunikálni tudnak a saját hálózatukban lévő társaikkal illetve más hálózatokban lévő gépekkel. Néhány ilyen paraméter a teljesség igénye nélkül:

  •  IP-cím
  • Alhálózati maszk
  • Alapértelmezett átjáró
  • Elsődleges és másodlagos DNS kiszolgáló
  • WINS-kiszolgáló címe
  • Tartomány név

A DHCP a paramétereket csak „bérbe” adja. Ha a bérleti idő lejár a paramétereket más gép is megkaphatja.

Nézzük meg mi az aktuális ip címe a gépnek, illetve milyen hálózati kártya azonosítókkal rendelkezik: ip -a

netplan1

A hálózati beállításokat a netplan alkalmazás kezeli. /etc/netplan/*.yaml Nézzük meg, hogyan is néz ki egy ilyen yaml fájl: sudo nano /etc/netplan/50-cloud-init.yaml

A netplan számozási sorrendben hajtja végre a konfigurációs fájlokat, tehát több kártya esetén akár külön-külön fájlba is tehetjük a konfigurációkat. Nézzünk néhány példát, hogyan kell megadni az adatokat.

Egy yaml fájl általános felépítése:

network:
version: 2
renderer: networkd
ethernets:
DEVICE_NAME:
dhcp4: yes/no
addresses: [IP/NETMASK]
gateway: GATEWAY
nameservers:
addresses: [NAMESERVER, NAMESERVER]

DEVICE_NAME az eszköz neve
RENDERER: ami végrehajtja a parancsot. Szerver esetén a networkd, asztali verzióval a NetworkManager. Alapértelmezett a networkd, ezért nincs mindig kiírva különféle leírásokban.
dhcp4: yes/no dhcp ip4 be illetve kikapcsolása
IP ez az eszköz ip  címe
NETMASK alhálózati maszk, az ip címmel együtt kell megadni
GATEWAY az átjáró címe
NAMESERVERS DNS szerverek címe, vesszővel elválasztva

Példa1: Van 1db hálózati kártyának, ennek adunk statikus ip címet
network:
    version: 2
    renderer: networkd
    ethernets:
        ens5:
        dhcp4: no
        addresses: [192.168.1.230/24]
        gateway4: 192.168.1.254
        nameservers:
                addresses: [8.8.4.4, 8.8.8.8]

A hálózati maszkot is új formában kell megadni a régi (255.255.255.0) helyett, együtt az ip címmel!

Példa 1.b Van 1db hálózati kártyánk, ens5 azonosítóval, ami dhcp-vel kapja meg a beállításait:

network:
     version: 2
     renderer: networkd
     ethernets:
        ens5:
        Addresses: []
        dhcp4: true
        optional: true

Példa 2: Van 2db hálózati kártyánk. Az egyik, az enp0s3 nevű, dhcp-n keresztül kapja meg az adatokat, a másik, az enp0s8 nevű statikus beállítással.

network:
   version: 2
   renderer: networkd
   ethernets:
     enp0s3:
       dhcp4: true
     enp0s8:
       dhcp4: false
       addresses:
         – 192.168.100.30/24
       nameservers:
         addresses: [8.8.8.8,8.8.4.4]

(ha kész akkor ctrl+x bezárás, y-igen, menteni szeretnénk, majd enter)
Amire figyelni kell: a megfelelő tagolás, ponsotsvesszők, szóközök! Tab-ot nem szereti…

Ha kész a beállítások szerkesztése és elmentettük a fájlt, akkor adjuk ki ezt a két parancsot az érvényesítéshez:
sudo netplan generate
sudo netplan apply
Van még a sudo netplan try parancs is, ami csak teszteli, nem állítja be.

Ha minden rendben, akkor nem ír ki semmit, ha talált valami hibát, akkor jelezni fogja. Érzékeny a tabokra, és a pontosvessszőre.

A dhcp szerver telepítése

sudo apt install isc-dhcp-server

Első lépésként meg kell adni, melyik hálózati kártyát (kártyákat) használja:

sudo nano /etc/default/dhcpd.conf
INTERFACESv4=”
hálózati kártya azonosítója
ha több van, akkor vesszővel elválasztva INTERFACESv4=”eth0 eth1″
(Előző példa szerint, ha a belső hálózatra szeretnénk dhcp szolgáltatást: INTERFACESv4=”enp0s8″

Következő lépés az ip cím tartományok, egyéb beállítások megadása:
sudo nano /etc/dhcp/dhcpd.conf

A konfigurációs fájlban elég kivenni a # komment jelet a megfelelő sorok elől, illetve módosítani ahol szükséges.

Tartomány név, dns szerverek megadása.
# option definitions common to all supported networks…
option domain-name „your_domain.com”;
option domain-name-servers ns1.your_domain.com, ns2.your_domain.com;

Ha ez a dhcp szerver lesz a helyi hálózat kiszolgálója akkor:
authoritative;

Belső hálózat konfigurálása  „A slightly different configuration for an internal subnet.” Példa:
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.150 192.168.0.170;
option domain-name-servers ns1.your_domain.com;
option domain-name „local.your_domain.com”;
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
default-lease-time 600;
max-lease-time 7200;
}

Ip cím fix hozzárendelése MAC címhez:
host fixed-ip-client {
hardware ethernet 00:0c:29:39:c7:81;
fixed-address 192.168.0.220;
}

Ha kész a beállítás,és mentettük a fájlt:
systemctl restart isc-dhcp-server
sudo systemctl enable isc-dhcp-server

dhcp_active

Ellenőrzése: ha minden ok, akkor zöld Active felirattal jelzi, és már osztja is a címeket 🙂
sudo systemctl status isc-dhcp-server

Útválasztás (routing)

Célunk, hogy a szerveren keresztül a kliensek is kapjanak internetet. Per pillnat a szerverünk ilyen feladatot még nem végez, tehát a kliensek megkapják ugyan dhcp-vel a hálózati beállításokat, de nem férnek hozzá az internethez.

Tűzfal beállítása

A tűzfal beállítása tulajdonképpen az iptables beállítása. Itt lehet megadni a szabályokat.
Hozzunk létre egy új fájlt: sudo nano /etc/rc.local

#!/bin/bash
# /etc/rc.local
# Default policy to drop all incoming packets.
iptables -P INPUT DROP
iptables -P FORWARD DROP

# Accept incoming packets from localhost and the LAN interface.
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i enp0s8 -j ACCEPT

# Accept incoming packets from the WAN if the router initiated the connection.
iptables -A INPUT -i enp0s3 -m conntrack \
–ctstate ESTABLISHED,RELATED -j ACCEPT

# Forward LAN packets to the WAN.
iptables -A FORWARD -i enp0s8 -o enp0s3 -j ACCEPT

# Forward WAN packets to the LAN if the LAN initiated the connection.
iptables -A FORWARD -i enp0s3 -o enp0s8 -m conntrack \
–ctstate ESTABLISHED,RELATED -j ACCEPT

# NAT traffic going out the WAN interface.
iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE

# rc.local needs to exit with 0
exit 0

A scriptnek bootolás közben kell lefutnia, ehhez meg kell adni a szükséges jogosultságot a fájlnak:
sudo chmod 755 /etc/rc.local

A beállítások után majd újra kell indítani a gépet!

Tűzfal bekapcsolása (Uncomplicated Firewall):
sudo ufw enable
A beállításai itt találhatóak:
/etc/ufw/sysctl.conf
Nyissuk is meg ezt a fájlt, és módosítsuk annyiban, hogy a komment jelet vegyük ki a net/ipv4/ip_forward=1 sor elől!
sudo nano /etc/ufw/sysctl.conf

Engedélyezzük a továbbítást a kernelben: sudo sysctl -w net.ipv4.ip_forward=1

Az rc.local sem engedélyezett alapból, ezt is nekünk kell engedélyezni. Létre kell hozni egy rc-local.service nevű fájlt is, hogy futtatni lehessen.

sudo nano /etc/systemd/system/rc-local.service

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

Végül engedélyezzük az rc.local-t, ami így már el fog tudni indulni.

sudo systemctl enable rc-local
sudo systemctl start rc-local.service

sudo systemctl status rc-local.service

A végén egy újraindítás nem árt. Ha minden jól sikerült, akkor a klienseken mennie kell az internetnek. Célszerű ellenőrizni a névfeloldást:
windows/linux-on: nslookup <oldalneve>
linuxon: cat /etc/resolv.conf