Vezava storitev na IP na Linux strežniku z več IP-ji | INTROSERV
EUR
european

EUR

usa

USD

Slovenia Sl
Ex. VAT Ex. VAT 0%

Kako vezati storitve na naslov IP na strežniku z več IP

Raven: Srednja
Predviden čas: ~25 minut
Cilj: Nastaviti SSH, Nginx, Apache in MySQL/MariaDB tako, da poslušajo samo na določenem naslovu IP namesto na vseh vmesnikih strežnika z več naslovi IP.

Uvod

Kadar ima strežnik več naslovov IP, vsaka storitev privzeto posluša na vseh. To redko želimo: zbirka podatkov ne sme biti dosegljiva na javnem naslovu IP, spletni strežnik ene stranke pa se ne sme odzivati na naslovu druge stranke. Pravilna konfiguracija strežnika z več naslovi IP zagotavlja, da vsak omrežni vmesnik obdeluje ustrezen promet. Vezava na naslov IP (IP binding) omogoča natančnejši nadzor dostopa, pomaga upravljati usmerjanje dohodnega prometa in zmanjšuje napadalno površino. V tem vodniku bomo razložili, kako storitev vežemo na naslov IP (bind service to IP address) za več običajnih storitev – SSH, Nginx, Apache, MySQL/MariaDB – in kako optimiziramo konfiguracijo naslova poslušanja, da storitev posluša samo na izbranem naslovu IP.

Predpogoji

Preden začnete, se prepričajte, da so izpolnjeni naslednji pogoji:

  • Operacijski sistem: Ubuntu 20.04/22.04/24.04 LTS, Debian 11/12 ali CentOS/RHEL 8/9 (če morate vezavo storitev nastaviti v Ubuntuju, so koraki v vseh različicah skoraj enaki)
  • Dostop: dostop sudo ali root do strežnika
  • Omrežje: na strežniku sta nastavljena vsaj dva naslova IP (preverite v 1. koraku)
  • Potrebno znanje: samozavestna uporaba ukazne vrstice Linuxa in osnovno urejanje besedila

1. korak: Ugotovite svoje naslove IP

Preverite, kateri naslovi IP so dodeljeni strežniku:

ip -4 addr show

Pričakovani izpis (primer):

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> ... inet 203.0.113.10/24 brd 203.0.113.255 scope global eth0 inet 198.51.100.5/24 brd 198.51.100.255 scope global eth0:1

V tem vodniku uporabljamo 203.0.113.10 kot javni naslov IP in 198.51.100.5 kot sekundarni naslov IP. Zamenjajte ju z dejanskima naslovoma.

Info

Če vidite samo en naslov, na strežniku še ni nastavljenih več naslovov IP. Pred nadaljevanjem se obrnite na ponudnika ali ročno dodajte naslov.

2. korak: Vežite SSH na določen naslov IP

SSH privzeto posluša na 0.0.0.0 (vsi vmesniki). Če ga želite omejiti na en naslov IP in doseči vezavo storitve v Linuxu:

Varnostno kopirajte konfiguracijo:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

Odprite konfiguracijsko datoteko SSH:

sudo nano /etc/ssh/sshd_config

Poiščite direktivo ListenAddress in nastavite naslov poslušanja, da določite naslov IP, na katerem storitev posluša:

ListenAddress 203.0.113.10

Če je ListenAddress zakomentirana ali je ni, dodajte vrstico kjer koli v datoteki.

Preverite veljavnost konfiguracije:

sudo sshd -t

Če ukaz ne izpiše ničesar, je konfiguracija veljavna.

Warning

Preden znova zaženete SSH, se prepričajte, da je navedeni naslov IP pravilen in dosegljiv. Če SSH vežete na napačen naslov IP, boste izgubili dostop do strežnika. Kot varovalko pustite odprto drugo sejo SSH ali uporabite dostop do konzole, ki ga ponuja ponudnik.

Znova zaženite storitev:

sudo systemctl restart sshd

Info

V nekaterih sistemih se storitev imenuje ssh namesto sshd.

Preverite, ali SSH zdaj posluša samo na navedenem naslovu IP:

ss -tlnp | grep sshd

Pričakovani izpis:

LISTEN 0 128 203.0.113.10:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))

Če vidite 0.0.0.0:22, sprememba ni začela veljati. V konfiguraciji poiščite tipkarske napake ali neusklajene vrstice ListenAddress.

3. korak: Vežite Nginx na določen naslov IP

Direktiva listen določa, kateri naslov IP in vrata uporablja Nginx. Če želite aplikacijo vezati na naslov IP, morate nastaviti direktivo listen v NGINX.

Varnostno kopirajte konfiguracijo:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.backup

Odprite konfiguracijo spletnega mesta:

sudo nano /etc/nginx/sites-available/default

Info

V CentOS/RHEL je privzeta pot konfiguracije /etc/nginx/conf.d/default.conf. Sintaksa je enaka.

Direktivo za poslušanje (listen) spremenite iz:

listen 80; listen [::]:80;

v:

listen 203.0.113.10:80;

Če uporabljate tudi HTTPS:

listen 203.0.113.10:443 ssl;

Preizkusite konfiguracijo in jo znova naložite:

sudo nginx -t sudo systemctl reload nginx

Preverjanje:

ss -tlnp | grep nginx

Pričakovani izpis:

LISTEN 0 511 203.0.113.10:80 0.0.0.0:* users:(("nginx",pid=5678,fd=6))

4. korak: Vežite Apache na določen naslov IP

Apache v glavni konfiguraciji uporablja direktivo Listen.

Debian/Ubuntu:

sudo cp /etc/apache2/ports.conf /etc/apache2/ports.conf.backup sudo nano /etc/apache2/ports.conf

CentOS/RHEL:

sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.backup sudo nano /etc/httpd/conf/httpd.conf

Spremenite:

Listen 80

v:

Listen 203.0.113.10:80

Za HTTPS:

Listen 203.0.113.10:443

Posodobite tudi vse bloke <VirtualHost *:80>, da uporabljajo naslov IP:

<VirtualHost 203.0.113.10:80>

Preizkusite in znova naložite:

Debian/Ubuntu:

sudo apachectl configtest sudo systemctl reload apache2

CentOS/RHEL:

sudo apachectl configtest sudo systemctl reload httpd

Preverjanje:

ss -tlnp | grep -E 'apache|httpd'

5. korak: Vežite MySQL/MariaDB na določen naslov IP

MySQL/MariaDB privzeto posluša na 127.0.0.1 (samo localhost). Če mora biti dosegljiv na določenem notranjem naslovu IP, spremenite bind-address, da aplikacijo vežete na lokalni naslov IP.

Debian/Ubuntu (MySQL 8.x / MariaDB 10.x):

sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.backup sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

CentOS/RHEL (MariaDB):

sudo cp /etc/my.cnf.d/mariadb-server.cnf /etc/my.cnf.d/mariadb-server.cnf.backup sudo nano /etc/my.cnf.d/mariadb-server.cnf

Info

Natančna pot konfiguracijske datoteke se razlikuje. Če zgornja datoteka ne obstaja, poiščite razdelek [mysqld] v /etc/my.cnf ali /etc/mysql/my.cnf.

Poiščite vrstico bind-address in jo spremenite:

bind-address = 198.51.100.5

Znova zaženite storitev:

sudo systemctl restart mysql # ali mysqld / mariadb

Preverjanje:

ss -tlnp | grep 3306

Pričakovani izpis:

LISTEN 0 80 198.51.100.5:3306 0.0.0.0:* users:(("mysqld",pid=9012,fd=22))

Warning

Če bind-address spremenite iz 127.0.0.1 v usmerljiv naslov IP, poskrbite za pravilo požarnega zidu, ki dovoljuje povezave samo iz zaupanja vrednih virov. Vrat zbirke podatkov nikoli ne izpostavljajte javnemu internetu brez zaščite.

Preverjanje

Ko nastavite vse storitve, opravite zbirni pregled:

ss -tlnp

Preverite, da vsaka storitev prikazuje predvideni naslov IP, ne pa 0.0.0.0 ali *.

Preizkusite lahko tudi z drugega računalnika:

ssh [email protected] # mora delovati ssh [email protected] # mora biti zavrnjeno, če je SSH vezan na drugi naslov IP

Razveljavitev sprememb

Če želite razveljaviti katero koli spremembo, obnovite varnostno kopijo konfiguracije in znova zaženite storitev.

Za SSH:

sudo cp /etc/ssh/sshd_config.backup /etc/ssh/sshd_config sudo systemctl restart sshd

Pri vseh drugih storitvah razveljavite spremembo listen / bind-address v ustrezni konfiguracijski datoteki in znova zaženite storitev. Izvirna vrednost je skoraj vedno 0.0.0.0, * ali 127.0.0.1.

Zaključek

To je vse. Vsako storitev lahko omejite s spremembo ene same direktive, ponovnim zagonom in preverjanjem z ss -tlnp.

Različica dokumenta: 1.0
Zadnja posodobitev: april 2026
Lastnik: Ekipa za tehnično dokumentacijo

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA