Prejsť na hlavný obsah

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.

informácia

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

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

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​

informá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...
varovanie

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 out
  • Unable 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