Hoppa till huvudinnehåll

Konfigurera Linux-gateways i produktionsnätverk

Den här guiden beskriver några av de grundläggande nätverkskonfigurationsparametrarna som kan orsaka att ett Linux-system inte fungerar i en produktionsmiljö på grund av den isolerade infrastrukturen. Observera att Linux-distributioner kan använda olika tjänster för följande områden. Därför kan du eventuellt inte köra vissa av kommandona som listas nedan. Detta avsnitt har skrivits med en Raspberry Pi med nativ Debian 12 (bookworm) som exempel.

info

Innan ditt supportsamtal med SDA-teamet bör du säkerställa att du har SSH-åtkomst till Linux-enheten från din dator för skärmdelning under sessionen.

Följande är en lista över vanliga områden som kan förhindra anslutning.

DNS-servrar​

En DNS-server (Domain Name System) översätter domännamn till IP-adresser för att möjliggöra kommunikation över internet. Korrekt DNS-konfiguration är avgörande för ett Linux-system som körs i en nätverksmiljö. Felsökning av DNS-problem innebär att man kontrollerar att DNS-servern är nåbar med kommandon som ping eller nslookup. Säkerställ att servern svarar och korrekt översätter domännamn till IP-adresser. Felkonfigurationer kan leda till att domännamnsuppslag misslyckas, vilket påverkar nätverkskommunikation och internetåtkomst.

Testning​

Kontrollera vilka DNS-server-IP-adresser som är konfigurerade på värden med:

cat /etc/resolv.conf

Varje DNS-server kan testas individuellt med antingen nslookup eller dig. Om servern till exempel är 8.8.8.8:

nslookup api.eu1.sdaconsole.io 8.8.8.8
dig @8.8.8.8 api.eu1.sdaconsole.io +short

Om dessa kommandon inte finns kan de installeras antingen med paketet dnsutils eller bind9-dnsutils i Debian, eller så kan ett nativt kommando som ping eller getent användas för att testa den aktuella DNS-konfigurationen:

ping api.eu1.sdaconsole.io
getent hosts api.eu1.sdaconsole.io

Konfigurering​

DNS-servrarna kan hanteras av olika tjänster beroende på Linux-installationen. För en Raspberry Pi hanteras de vanligtvis av tjänsten NetworkManager. Tjänsten som hanterar DNS-uppslagen lämnar sannolikt en kommentar i /etc/resolv.conf som anger att den genererade filen, till exempel:

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

För att ange de globala DNS-servrarna, skapa filen:

sudo nano /etc/NetworkManager/conf.d/dns.conf

Och lägg till:

[global-dns-domain-*]
servers=8.8.8.8,4.4.4.4

Starta om tjänsten NetworkManager och kontrollera de nya värdena i /etc/resolv.conf

sudo systemctl restart NetworkManager
# Verify /etc/resolv.conf was updated
cat /etc/resolv.conf

NTP-servrar​

En NTP-server (Network Time Protocol) används i Linux-system för att synkronisera systemklockan med en tidskälla, till exempel en atomklocka eller en central server. Exakt tidhållning är avgörande för loggning, säkerhetsprotokoll och samordning av åtgärder över ett nätverk. Felaktig konfiguration av en NTP-server orsakar att HTTPS-anrop misslyckas på grund av att SSL-certifikat blir ogiltiga.

Testning​

Granska NTP-synkroniseringens status och om aktuellt datum och tid är korrekta.

# 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

Testa anslutningen till en specifik server:

# 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

Konfigurering​

NTP-servern kan konfigureras med ett domännamn, till exempel 0.debian.pool.ntp.org eller ntp.myorg.com, eller direkt med en IP-adress.

# Configure systemd-timesyncd
sudo nano /etc/systemd/timesyncd.conf

Lägg till den anpassade NTP-servern i blocket [Time] och säkerställ att raden inte är kommenterad. Ta bort alla servrar i FallbackNTP som inte kan nås.

[Time]
NTP=ntp.myorg.com ntp.myorg.local
FallbackNTP=

Starta om och säkerställ att tjänsten timesync aktiveras.

# 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

Proxyservrar​

En proxyserver fungerar som en mellanhand mellan en klient och målservrar och vidarebefordrar förfrågningar och svar. I företagsmiljöer används proxyservrar ofta för säkerhetskontroll, innehållsfiltrering, bandbreddshantering och loggning av utgående trafik. Linux-system i sådana nätverk måste konfigureras för att dirigera sina HTTP/HTTPS-förfrågningar via företagsproxyn för att komma åt externa resurser, inklusive paketarkiv och webbtjänster.

Testning​

Kontrollera om en proxy för närvarande är konfigurerad genom att granska miljövariablerna och de systemomfattande proxyinställningarna:

# 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

För att kontrollera om en proxyserver behövs, försök ansluta direkt till en extern server:

# 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"

Om det misslyckas med anslutningsfel kan en proxy krävas. Vanliga fel är till exempel Failed to connect eller Connection timed out.

För att testa en förfrågan med en specifik proxyserver:

# 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

Konfigurering​

info

En proxyadress har ett av följande format:

<protocol>://<proxy-address>:<port-number>
<protocol>://<username>:<password>@<proxy-address>:<port-number>

Konfigurera proxy för alla användare och applikationer:

# Edit system-wide environment
sudo nano /etc/environment

Lägg till eller ändra följande rader:

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"

Tillämpa ändringarna:

# Reload environment (or log out and back in)
source /etc/environment
# Verify variables are set
env | grep -i proxy

För att kontrollera om trafiken faktiskt går via proxyn:

# 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...
varning

Vissa proxyservrar utför SSL-inspektion. Du kan behöva installera företagets CA-certifikat:

# 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

Debian-arkiv​

Debian-arkiv är servrar som tillhandahåller programvarupaket och uppdateringar för Debian-baserade system. I isolerade företagsmiljöer kan åtkomst till publika Debian-speglar (som deb.debian.org eller archive.ubuntu.com) vara blockerad av säkerhetsskäl. Företag underhåller ofta egna interna speglar för att kontrollera vilka paket som är tillgängliga och för att minska användningen av extern bandbredd.

Testning​

Kontrollera de för närvarande konfigurerade arkiven:

# 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

Här är ett omfattande bash-skript för att fullständigt testa anslutningen till de konfigurerade arkiven:

# 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

En annan metod är att försöka uppdatera paketlistorna för att identifiera arkivproblem:

# Try to update package lists
sudo apt update

# Check for errors in apt logs
tail -20 /var/log/apt/term.log

Vanliga felmeddelanden som indikerar blockerade arkiv:

  • Failed to fetch http://deb.debian.org/...
  • Could not resolve 'deb.debian.org'
  • Connection timed out
  • Unable to connect to...

Testa en specifik arkivserver manuellt:

# 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

Konfigurering​

Redigera huvudkällfilen:

sudo nano /etc/apt/sources.list

Ersätt innehållet med din interna spegel. För 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

Om din interna spegel använder HTTPS:

deb https://mirror.company.local/debian bookworm main contrib non-free non-free-firmware

Observera: För HTTPS-arkiv, säkerställ att paketen apt-transport-https och ca-certificates är installerade.

Konfigurera arkivprioritet (valfritt)

Om du behöver använda både interna och externa arkiv med förtur för de interna:

sudo nano /etc/apt/preferences.d/internal-mirror

Lägg till:

Package: *
Pin: origin mirror.company.local
Pin-Priority: 900

Package: *
Pin: origin deb.debian.org
Pin-Priority: 500

Detta ger interna speglar högre prioritet.

Konfigurera proxy för arkiv (valfritt)

Om ditt nätverk kräver en proxy för att nå arkiven:

# 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

Uppdatera och verifiera

Efter att arkiven har konfigurerats:

# 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

Vanliga problem

Problem: apt update hänger sig oändligt

# 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

Problem: Paket hittas inte efter konfigurering av spegel

# 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

Problem: Blandade arkivkällor orsakar konflikter

# 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