Vezanje usluga na IP adresu na Linux poslužitelju s više IP-a | INTROSERV
EUR
european

EUR

usa

USD

Croatia Hr
Ex. VAT Ex. VAT 0%

Kako vezati usluge na IP adresu na poslužitelju s više IP-a

Razina: Srednja
Procijenjeno vrijeme: ~25 minuta
Cilj: Konfigurirati SSH, Nginx, Apache i MySQL/MariaDB tako da slušaju samo na određenoj IP adresi umjesto na svim sučeljima poslužitelja s više IP adresa.

Uvod

Kada poslužitelj ima više IP adresa, svaka usluga prema zadanim postavkama sluša na svima njima. To se rijetko želi: baza podataka ne smije biti dostupna na javnoj IP adresi, a web poslužitelj jednog klijenta ne smije odgovarati na adresi drugog klijenta. Ispravna konfiguracija poslužitelja s više IP adresa osigurava da svako mrežno sučelje obrađuje odgovarajući promet. Vezanje na IP adresu (IP binding) omogućuje strožu kontrolu pristupa, pomaže u upravljanju usmjeravanjem dolaznog prometa i smanjuje površinu napada. U ovom ćemo vodiču objasniti kako vezati uslugu na IP adresu (bind service to IP address) za nekoliko uobičajenih usluga – SSH, Nginx, Apache, MySQL/MariaDB – i kako optimizirati konfiguraciju adrese slušanja tako da usluga sluša samo na odabranoj IP adresi.

Preduvjeti

Prije nego što počnete, provjerite jesu li ispunjeni sljedeći uvjeti:

  • Operacijski sustav: Ubuntu 20.04/22.04/24.04 LTS, Debian 11/12 ili CentOS/RHEL 8/9 (ako trebate konfigurirati vezanje usluga na Ubuntuu, koraci su u svim verzijama gotovo identični)
  • Pristup: sudo ili root pristup poslužitelju
  • Mreža: na poslužitelju su konfigurirane najmanje dvije IP adrese (provjerite u 1. koraku)
  • Potrebno znanje: sigurno služenje naredbenim retkom sustava Linux i osnovno uređivanje teksta

1. korak: Utvrdite svoje IP adrese

Provjerite koje su IP adrese dodijeljene poslužitelju:

ip -4 addr show

Očekivani izlaz (primjer):

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

U ovom vodiču koristimo 203.0.113.10 kao javnu IP adresu i 198.51.100.5 kao sekundarnu IP adresu. Zamijenite ih svojim stvarnim adresama.

Info

Ako vidite samo jednu adresu, na poslužitelju još nije konfigurirano više IP adresa. Prije nastavka obratite se pružatelju usluge ili ručno dodajte adresu.

2. korak: Vežite SSH na određenu IP adresu

SSH prema zadanim postavkama sluša na 0.0.0.0 (sva sučelja). Da biste ga ograničili na jednu IP adresu i ostvarili vezanje usluge u sustavu Linux:

Napravite sigurnosnu kopiju konfiguracije:

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

Otvorite konfiguracijsku datoteku SSH-a:

sudo nano /etc/ssh/sshd_config

Pronađite direktivu ListenAddress i postavite adresu slušanja kako biste konfigurirali IP adresu na kojoj usluga sluša:

ListenAddress 203.0.113.10

Ako je ListenAddress zakomentirana ili ne postoji, dodajte redak bilo gdje u datoteci.

Provjerite valjanost konfiguracije:

sudo sshd -t

Ako naredba ne ispiše ništa, konfiguracija je valjana.

Warning

Prije ponovnog pokretanja SSH-a provjerite je li navedena IP adresa ispravna i dostupna. Ako SSH vežete na pogrešnu IP adresu, izgubit ćete pristup poslužitelju. Kao sigurnosnu mjeru ostavite otvorenu drugu SSH sesiju ili koristite pristup konzoli koji nudi pružatelj usluge.

Ponovno pokrenite uslugu:

sudo systemctl restart sshd

Info

Na nekim se sustavima usluga može zvati ssh umjesto sshd.

Provjerite sluša li SSH sada samo na navedenoj IP adresi:

ss -tlnp | grep sshd

Očekivani izlaz:

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

Ako vidite 0.0.0.0:22, promjena nije stupila na snagu. Provjerite ima li u konfiguraciji tipfelera ili proturječnih redaka ListenAddress.

3. korak: Vežite Nginx na određenu IP adresu

Direktiva listen određuje koju IP adresu i koja vrata koristi Nginx. Da biste aplikaciju vezali na IP adresu, morate konfigurirati direktivu listen u NGINX-u.

Napravite sigurnosnu kopiju konfiguracije:

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

Otvorite konfiguraciju svojeg web mjesta:

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

Info

Na CentOS/RHEL-u zadana je putanja konfiguracije /etc/nginx/conf.d/default.conf. Sintaksa je ista.

Direktivu slušanja (listen) promijenite iz:

listen 80; listen [::]:80;

u:

listen 203.0.113.10:80;

Ako koristite i HTTPS:

listen 203.0.113.10:443 ssl;

Testirajte konfiguraciju i ponovno je učitajte:

sudo nginx -t sudo systemctl reload nginx

Provjera:

ss -tlnp | grep nginx

Očekivani izlaz:

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

4. korak: Vežite Apache na određenu IP adresu

Apache u glavnoj konfiguraciji koristi direktivu 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

Promijenite:

Listen 80

u:

Listen 203.0.113.10:80

Za HTTPS:

Listen 203.0.113.10:443

Ažurirajte i sve blokove <VirtualHost *:80> kako bi koristili IP adresu:

<VirtualHost 203.0.113.10:80>

Testirajte i ponovno učitajte:

Debian/Ubuntu:

sudo apachectl configtest sudo systemctl reload apache2

CentOS/RHEL:

sudo apachectl configtest sudo systemctl reload httpd

Provjera:

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

5. korak: Vežite MySQL/MariaDB na određenu IP adresu

MySQL/MariaDB prema zadanim postavkama sluša na 127.0.0.1 (samo localhost). Ako ga trebate učiniti dostupnim na određenoj internoj IP adresi, promijenite bind-address kako biste aplikaciju vezali na lokalnu IP adresu.

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

Točna putanja konfiguracijske datoteke varira. Ako gornja datoteka ne postoji, potražite odjeljak [mysqld] u /etc/my.cnf ili /etc/mysql/my.cnf.

Pronađite redak bind-address i promijenite ga:

bind-address = 198.51.100.5

Ponovno pokrenite uslugu:

sudo systemctl restart mysql # ili mysqld / mariadb

Provjera:

ss -tlnp | grep 3306

Očekivani izlaz:

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

Warning

Ako bind-address mijenjate s 127.0.0.1 na IP adresu koja se može usmjeravati, provjerite imate li pravilo vatrozida koje dopušta veze samo iz pouzdanih izvora. Nikada ne izlažite vrata baze podataka javnom internetu bez zaštite.

Provjera

Nakon konfiguriranja svih usluga obavite zbirnu provjeru:

ss -tlnp

Provjerite prikazuje li svaka usluga predviđenu IP adresu, a ne 0.0.0.0 ili *.

Možete testirati i s drugog računala:

ssh [email protected] # treba raditi ssh [email protected] # treba biti odbijeno ako je SSH vezan na drugu IP adresu

Poništavanje promjena

Da biste poništili bilo koju promjenu, vratite konfiguraciju iz sigurnosne kopije i ponovno pokrenite uslugu.

Za SSH:

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

Za sve ostale usluge poništite promjenu listen / bind-address u odgovarajućoj konfiguracijskoj datoteci i ponovno pokrenite uslugu. Izvorna je vrijednost gotovo uvijek 0.0.0.0, * ili 127.0.0.1.

Zaključak

To je sve. Svaku je uslugu moguće ograničiti promjenom jedne direktive, ponovnim pokretanjem i provjerom naredbom ss -tlnp.

Verzija dokumenta: 1.0
Posljednje ažuriranje: travanj 2026.
Vlasnik: Tim za tehničku dokumentaciju

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