Konfigurácia brán Linux v produkčných sieťach
Táto príručka pokrýva niektoré základné parametre sieťovej konfigurácie, ktoré môžu spôsobiť, že systém Linux nebude v produkčnom prostredí fungovať kvôli izolovanej infraštruktúre. Majte na pamäti, že distribúcie Linux môžu pre nasledujúce témy používať rôzne služby. Preto sa môže stať, že niektoré z nižšie uvedených príkazov nebudete môcť spustiť. Táto časť bola napísaná s použitím zariadenia Raspberry Pi s natívnou verziou OS Debian 12 (bookworm) ako príkladu.
Pred telefonátom s podporou tímu SDA sa uistite, že máte zo svojho počítača prístup cez SSH k zariadeniu Linux na zdieľanie obrazovky počas relácie.
Nasleduje zoznam bežných oblastí, ktoré môžu brániť pripojeniu.
Servery DNS
Server systému doménových mien (DNS) prekladá doménové mená na IP adresy, čím umožňuje komunikáciu cez internet. Správna konfigurácia DNS je kritická pre systém Linux prevádzkovaný v sieťovom prostredí. Riešenie problémov s DNS zahŕňa kontrolu dosiahnuteľnosti servera DNS pomocou príkazov ako ping alebo nslookup. Uistite sa, že server odpovedá a správne prekladá doménové mená na IP adresy. Nesprávne konfigurácie môžu viesť k zlyhaniu prekladu domén, čo ovplyvní sieťovú komunikáciu a prístup na internet.
Testovanie
Skontrolujte IP adresy serverov DNS nakonfigurované na hostiteľovi pomocou:
cat /etc/resolv.conf
Každý server DNS je možné otestovať jednotlivo buď pomocou nslookup, alebo dig. Napríklad ak je server 8.8.8.8:
nslookup api.eu1.sdaconsole.io 8.8.8.8
dig @8.8.8.8 api.eu1.sdaconsole.io +short
Ak tieto príkazy nie sú k dispozícii, možno ich v systéme Debian nainštalovať pomocou balíkov dnsutils alebo bind9-dnsutils, prípadne možno na otestovanie aktuálnej konfigurácie DNS použiť natívny príkaz ako ping alebo getent:
ping api.eu1.sdaconsole.io
getent hosts api.eu1.sdaconsole.io
Konfigurácia
Servery DNS môžu byť spravované rôznymi službami v závislosti od inštalácie systému Linux. V prípade Raspberry Pi ich typicky spravuje služba NetworkManager. Služba, ktorá spravuje preklad DNS, pravdepodobne zanechá v súbore /etc/resolv.conf komentár o tom, že súbor vygenerovala, napríklad:
cat /etc/resolv.conf
> # Generated by NetworkManager
> nameserver 192.168.15.1
> nameserver fe80::dec6:37ff:fe36:5ee8%wlan0
cat /etc/resolv.conf
> # Generated by dhcpcd from eth0.dhcp
> # /etc/resolv.conf.head can replace this line
> nameserver 192.168.15.1
- NetworkManager
- dhcpcd
- resolvconf
Na nastavenie globálnych serverov DNS vytvorte súbor:
sudo nano /etc/NetworkManager/conf.d/dns.conf
A pridajte:
[global-dns-domain-*]
servers=8.8.8.8,4.4.4.4
Reštartujte službu NetworkManager a skontrolujte nové hodnoty v súbore /etc/resolv.conf
sudo systemctl restart NetworkManager
# Verify /etc/resolv.conf was updated
cat /etc/resolv.conf
sudo nano /etc/dhcpcd.conf
Na koniec súboru pridajte alebo upravte:
# Static DNS configuration
static domain_name_servers=8.8.8.8 4.4.4.4
Zmeny aplikujte reštartovaním služby dhcpcd a overte, či boli servery DNS aktualizované:
sudo systemctl restart dhcpcd
# Verify /etc/resolv.conf was updated
cat /etc/resolv.conf
Kontrola, či je resolvconf k dispozícii:
which resolvconf
dpkg -l | grep resolvconf
Nakonfigurujte servery DNS prostredníctvom resolvconf úpravou základnej konfigurácie:
# Edit the base configuration
sudo nano /etc/resolvconf/resolv.conf.d/head
Pridajte:
nameserver 8.8.8.8
nameserver 4.4.4.4
Aktualizujte službu resolvconf a skontrolujte, či boli servery DNS aktualizované:
sudo resolvconf -u
# Verify /etc/resolv.conf was updated
cat /etc/resolv.conf
Servery NTP
Server sieťového časového protokolu (NTP) sa v systémoch Linux používa na synchronizáciu systémových hodín s časovým zdrojom, ako sú atómové hodiny alebo centrálny server. Presné meranie času je kľúčové pre protokolovanie, bezpečnostné protokoly a koordináciu činností v rámci siete. Nesprávne nastavenie servera NTP spôsobí zlyhanie volaní HTTPS z dôvodu neplatnosti certifikátu SSL.
Testovanie
Skontrolujte stav synchronizácie NTP a to, či sú aktuálny dátum a čas správne.
# Check NTP sync status
timedatectl status
# Check configured NTP servers
timedatectl timesync-status
timedatectl show-timesync --all
# Check logs from the timesync service
journalctl -u systemd-timesyncd -n 20
# Check if service is active
systemctl is-active systemd-timesyncd
Testovanie pripojenia ku konkrétnemu serveru:
# Using ntpdate, if installed
ntpdate -q 0.debian.pool.ntp.org
# Using Netcat
timeout 2 nc -u -z -v 0.debian.pool.ntp.org 123
Konfigurácia
Server NTP možno nakonfigurovať pomocou doménového mena, napríklad 0.debian.pool.ntp.org alebo ntp.myorg.com, prípadne priamo pomocou IP adresy.
# Configure systemd-timesyncd
sudo nano /etc/systemd/timesyncd.conf
Pridajte vlastný server NTP do bloku [Time] a uistite sa, že riadok nie je zakomentovaný. Odstráňte z FallbackNTP každý server, ktorý nie je dosiahnuteľný.
[Time]
NTP=ntp.myorg.com ntp.myorg.local
FallbackNTP=
Reštartujte a nezabudnite povoliť službu timesync.
# Restart and enable
sudo systemctl restart systemd-timesyncd
sudo systemctl enable systemd-timesyncd
# Force synchronization
sudo timedatectl set-ntp true
# Verify sync
timedatectl timesync-status
Proxy servery
Proxy server pôsobí ako sprostredkovateľ medzi klientom a cieľovými servermi, pričom preposiela požiadavky a odpovede. V podnikových prostrediach sa proxy servery bežne používajú na bezpečnostnú kontrolu, filtrovanie obsahu, správu šírky pásma a protokolovanie odchádzajúcej prevádzky. Systémy Linux v takýchto sieťach musia byť nakonfigurované tak, aby smerovali svoje požiadavky HTTP/HTTPS cez firemný proxy server na prístup k externým zdrojom vrátane repozitárov balíkov a webových služieb.
Testovanie
Skontrolujte, či je proxy aktuálne nakonfigurovaný, prostredníctvom premenných prostredia a systémových nastavení proxy:
# Check shell environment proxy variables
env | grep -i proxy
# Check system-wide proxy configuration
cat /etc/environment | grep -i proxy
# Check if proxy is set for current user
echo $http_proxy
echo $https_proxy
echo $no_proxy
Ak chcete zistiť, či je potrebný proxy server, pokúste sa pripojiť priamo k externému serveru:
# Try direct connection to a public server
timeout 5 curl -I https://repository.eu1.sdaconsole.io/glue/v2/linux/arm64/release.json 2>&1
# If it fails with connection errors, proxy might be required
# Common error: "Failed to connect" or "Connection timed out"
Ak zlyhá s chybami pripojenia, môže byť potrebný proxy. Bežné chyby sú napríklad Failed to connect alebo Connection timed out.
Testovanie požiadavky s konkrétnym proxy serverom:
# Test with curl
curl -I --proxy http://proxy.company.local:8080 https://repository.eu1.sdaconsole.io/glue/v2/linux/arm64/release.json
# Proxy with user authentication
curl -I --proxy http://user@pwd@proxy.company.local:8080 https://repository.eu1.sdaconsole.io/glue/v2/linux/arm64/release.json
# Test without proxy (direct connection)
curl -I --noproxy "*" https://repository.eu1.sdaconsole.io/glue/v2/linux/arm64/release.json
Konfigurácia
Adresa proxy má jeden z týchto formátov:
<protocol>://<proxy-address>:<port-number>
<protocol>://<username>:<password>@<proxy-address>:<port-number>
Konfigurácia proxy pre všetkých používateľov a aplikácie:
# Edit system-wide environment
sudo nano /etc/environment
Pridajte alebo upravte nasledujúce riadky:
http_proxy="http://proxy.company.local:8080"
https_proxy="http://proxy.company.local:8080"
no_proxy="localhost,127.0.0.1,*.company.local,10.0.0.0/8,192.168.0.0/16"
# Uppercase variants (some applications check these)
HTTP_PROXY="http://proxy.company.local:8080"
HTTPS_PROXY="http://proxy.company.local:8080"
NO_PROXY="localhost,127.0.0.1,*.company.local,10.0.0.0/8,192.168.0.0/16"
Aplikujte zmeny:
# Reload environment (or log out and back in)
source /etc/environment
# Verify variables are set
env | grep -i proxy
Kontrola, či prevádzka skutočne prechádza cez proxy:
# Verbose curl request showing proxy connection
curl -v -I https://repository.eu1.sdaconsole.io/glue/v2/linux/arm64/release.json 2>&1 | grep -i proxy
# Should show something like:
# * Uses proxy env variable http_proxy == 'http://proxy.company.local:3128'
# * Trying proxy.company.local:3128...
Niektoré proxy servery vykonávajú kontrolu SSL. Môže byť potrebné nainštalovať firemné certifikáty CA:
# Copy corporate CA certificate
sudo cp company-ca.crt /usr/local/share/ca-certificates/
# Update CA trust store
sudo update-ca-certificates
# Verify
curl -I https://repository.eu1.sdaconsole.io/glue/v2/linux/arm64/release.json
Repozitáre Debian
Repozitáre Debian sú servery, ktoré hosťujú softvérové balíky a aktualizácie pre systémy založené na Debiane. V izolovaných podnikových prostrediach môže byť prístup k verejným zrkadlám Debian (ako deb.debian.org alebo archive.ubuntu.com) z bezpečnostných dôvodov blokovaný. Firmy často prevádzkujú vlastné interné zrkadlá, aby mali kontrolu nad tým, ktoré balíky sú dostupné, a aby znížili spotrebu externej šírky pásma.
Testovanie
Skontrolujte aktuálne nakonfigurované repozitáre:
# View configured repositories
cat /etc/apt/sources.list
# Check additional repository files
ls -la /etc/apt/sources.list.d/
cat /etc/apt/sources.list.d/*.list 2>/dev/null
Tu je komplexný skript bash na úplné otestovanie konektivity k nakonfigurovaným repozitárom:
# Test if repository servers are reachable
grep -h "^deb http" /etc/apt/sources.list /etc/apt/sources.list.d/*.list 2>/dev/null | \
awk '{print $2, $3}' | sort -u | while read repo suite; do
echo "Testing: $repo (suite: $suite)"
# Test the Release file that APT actually fetches
# This is what APT checks first when doing 'apt update'
release_url="${repo}/dists/${suite}"
# Test with curl (follows redirects, checks certificates)
if curl -fsSL --connect-timeout 5 --max-time 10 -I "$release_url/InRelease" >/dev/null 2>&1; then
echo " > Repository is reachable"
else
if curl -fsSL --connect-timeout 5 --max-time 10 -I "$release_url/Release" >/dev/null 2>&1; then
echo " > Repository is reachable"
else
# If failed, show the specific error
error=$(curl -fsSL --connect-timeout 5 --max-time 10 -I "$repo" 2>&1 | head -1)
echo " X Unreachable: $error"
fi
fi
echo
done
Ďalšou metódou je pokúsiť sa aktualizovať zoznamy balíkov a identifikovať tak problémy s repozitármi:
# Try to update package lists
sudo apt update
# Check for errors in apt logs
tail -20 /var/log/apt/term.log
Bežné chybové hlásenia indikujúce blokované repozitáre:
Failed to fetch http://deb.debian.org/...Could not resolve 'deb.debian.org'Connection timed outUnable to connect to...
Manuálne otestovanie konkrétneho servera repozitára:
# Test HTTP connectivity to a repository
curl -sSL -I --connect-timeout 5 http://deb.debian.org/debian/
# Or using wget
wget --spider --timeout=5 http://deb.debian.org/debian/
# Test DNS resolution
getent hosts deb.debian.org
Konfigurácia
Upravte hlavný súbor so zdrojmi:
sudo nano /etc/apt/sources.list
Nahraďte obsah svojím interným zrkadlom. Pre Debian 12 (bookworm):
# Internal Debian Repository Mirror
deb http://mirror.company.local/debian bookworm main contrib non-free non-free-firmware
deb http://mirror.company.local/debian bookworm-updates main contrib non-free non-free-firmware
deb http://mirror.company.local/debian-security bookworm-security main contrib non-free non-free-firmware
# Optionally, backports for newer packages
deb http://mirror.company.local/debian bookworm-backports main contrib non-free non-free-firmware
Ak vaše interné zrkadlo používa HTTPS:
deb https://mirror.company.local/debian bookworm main contrib non-free non-free-firmware
Poznámka: Pri repozitároch HTTPS sa uistite, že sú nainštalované balíky apt-transport-https a ca-certificates.
Konfigurácia priority repozitárov (voliteľné)
Ak potrebujete používať interné aj externé repozitáre s uprednostnením interných:
sudo nano /etc/apt/preferences.d/internal-mirror
Pridajte:
Package: *
Pin: origin mirror.company.local
Pin-Priority: 900
Package: *
Pin: origin deb.debian.org
Pin-Priority: 500
Tým získajú interné zrkadlá vyššiu prioritu.
Konfigurácia proxy pre repozitáre (voliteľné)
Ak vaša sieť vyžaduje na prístup k repozitárom proxy:
# Configure APT proxy
echo 'Acquire::http::Proxy "http://proxy.company.local:3128";' | \
sudo tee /etc/apt/apt.conf.d/proxy.conf
# For HTTPS repositories
echo 'Acquire::https::Proxy "http://proxy.company.local:3128";' | \
sudo tee -a /etc/apt/apt.conf.d/proxy.conf
# Test
sudo apt update
Aktualizácia a overenie
Po nakonfigurovaní repozitárov:
# Update package lists
sudo apt update
# Check for errors
echo $? # Should return 0 if successful
# Verify packages can be found
apt-cache policy apt
# Test installing a small package
sudo apt install --dry-run nano
Bežné problémy
Problém: apt update sa zasekne na neurčito
# Check if repository server is actually responding
timeout 10 curl -v http://mirror.company.local/debian/
# Check for proxy interference
unset http_proxy https_proxy
sudo apt update
Problém: Balíky sa po nakonfigurovaní zrkadla nenájdu
# Verify the mirror has the correct Debian version
curl http://mirror.company.local/debian/dists/ | grep bookworm
# Check if the mirror is properly synced
curl -sI http://mirror.company.local/debian/dists/bookworm/Release | grep Date
Problém: Zmiešané zdroje repozitárov spôsobujúce konflikty
# Check all active sources
grep -rh "^deb" /etc/apt/sources.list /etc/apt/sources.list.d/ | sort -u
# Disable conflicting sources
sudo mv /etc/apt/sources.list.d/problematic.list /etc/apt/sources.list.d/problematic.list.disabled
sudo apt update