User Tools

Site Tools


networking:mikrotik:private_public

Javni servis na privatnoj mreži

Priključak na Internet korisnicima otvara cijeli spektar novih i interesantnih mogućnosti. Od “običnog” surfanja Internetskim prostranstvima i primanja i slanja mailova preko komuniciranja putem raznih javnih mrežnih servisa i gledanja streaming sadržaja pa sve do mogućnosti da i sami pružimo neku od usluga javnosti. To ne mora nužno značiti otvaranje pristupa širokim masama nego prvenstveno puštanje nekog od privatno hostanog servisa (web server, server video nadzora, privatni cloud server…) na Internet kako bismo mu sami mogli pristupiti sa bilo koje javne mreže.

Postupak za to je vrlo jednostavan na većini uređaja i zove se Destination Network Address Translation (NAT). To znači da pristupni mrežni uređaj (router), paketu koji je za ciljnu adresu imao upravo njegovu javnu adresu, istu zamjenjuje adresom uređaja na privatnoj mreži koji je tako svoju uslugu u mogućnosti prezentirati na Internetu. Ako smo iskoristili uslugu nekog od dinamičkih DNS servisa i ažurno mu dojavljujemo promjene svoje javne adrese svojem kućnom web serveru pristupat ćemo preko stalnog URL-a (Uniform Resource Locator) a ne preko adrese koja se mijenja na dnevnoj bazi ili ćešće.

Na komforno upisivanje URL-a umjesto IP adrese vrlo brzo ćemo se naviknuti i odmah naići na problem koji se javlja kad isti taj URL želimo iskoristiti za pristup svojem objavljenom servisu sa privatne mreže a omiljeni browser nam javi da to nije moguće, no ako pokušamo sa njegovom stvarnom privatnom IP adresom, vidjet ćemo da je i dalje dostupan. Zašto je tome tako?

Testno okruženje:

UređajImeOpisLink na konfiguracijsku datoteku
Router 1InternetRouter koji “glumi” internet odnosno povezuje dvije privatne mreže sa javnim adresamakonf_router_internet
Router 2Local_1Router na privatnoj mreži 1konf_router_1
Router 3Local_2Router na privatnoj mreži 2konf_router_2
RačunaloDSL_01Računalo na privatnoj mreži 1konf_dsl_1
RačunaloDSL_02Računalo na privatnoj mreži 1 (web server)konf_dsl_2
RačunaloDSL_03Računalo na privatnoj mreži 2konf_dsl_3

Imamo mrežu 1 (10.0.1.0/24) na kojoj jedno od računala (DSL_02) ima instaliran web server koji svoje stranice na pregled nudi i ostatku korisnika interneta a dostupno je na URL-u http://mywebserver.dyndnsdomain.com . Domena dyndnsdomain.com je pod kontrolom nekog od javnih servisa koji serviraju DNS za dinamičke domene, host mywebserver je kod njih registriran za nas i uz pomoć tome namjenjene aplikacije redovito mu osvježavamo IP adresu.

Na mreži 2 je jednaka situacija samo bez objavljenih servisa pa se tu nalaze samo klijenti koji žele pristupiti web serveru preko interneta.

Kad klijent DSL_02 sa privatne mreže 2 pokuša uspostaviti vezu sa web serverom na računalu DSL_02 koje se nalazi na privatnoj mreži 1 upit kreće sa adrese <fc #ff0000>10.0.2.1</fc> koju NAT rutera na mreži 2 zamjenjuje svojom javnom adresom <fc #ff0000>203.0.113.253</fc> a na Routeru 1 izgleda ovako:

KorakIzvorišna IP adresaOdredišna IP adresa Opis
01203.0.113.253192.51.100.253Klijent šalje paket sa izvorišnom IP adresom of <fc #ff0000>203.0.113.253</fc> na odredišnu IP adresu<fc #ff0000>192.51.100.253</fc> na port tcp/80 kako bi pristupio sadržaju na web serveru
02203.0.113.25310.0.2.100Router translatira odredišnu adresu paketa u <fc #ff0000>10.0.1.100</fc>. Izvorišna IP adresa ostaje ista: <fc #ff0000>203.0.113.253</fc>.
0310.0.1.100203.0.113.253Server odgovara na klijentov zahtjev paketom koji za izvorišnu IP adresu ima<fc #ff0000>10.0.1.100</fc> a za odredišnu <fc #ff0000>203.0.113.253</fc>.
04192.51.100.253203.0.113.253Router odlučuje da se radi o o paketu koji je dio prethodno uspostavljene veze, skida odredišnu adresu koju je postavio destination NAT i vraća originalnu. Odredišna adresa je sada <fc #ff0000>203.0.113.253</fc>, a izvorišna<fc #ff0000>192.51.100.253</fc>.

Klijent je od web servera dobio očekivane pakete i veza je uspostavljena.

Kad istu radnju pokuša napraviti klijent DSL_01 sa privatne mreže 1, dakle uspostaviti vezu sa web serverom na računalu DSL_02 na istoj mreži koristeći pri tome URL web servera odnosno njegovu javnu adresu događa se sljedeće:

KorakSource IP addressDestination IP addressDescription
0110.0.1.1192.51.100.253klijent šalje paket sa izvorišnom IP adresom <fc #ff0000>10.0.1.1</fc> na odredišnu IP adresu <fc #ff0000>192.51.100.253</fc> na port tcp/80 kako bi pristupio sadržaju na web serveru.
0210.0.1.110.0.1.100Router translatira odredišnu adresu paketa u <fc #ff0000>10.0.1.100</fc>. Izvorišna IP adresa ostaje ista: <fc #ff0000>10.0.1.1</fc>.
0310.0.1.10010.0.1.1Server odgovara na klijentov zahtjev paketom koji za izvorišnu IP adresu ima<fc #ff0000>10.0.1.100</fc> a za odredišnu <fc #ff0000>10.0.1.1</fc>. Budući su i izvorišna i odredišna IP adresa na istom subnetu ovaj odgovor web servera klijentu ne vraća se na router sa kojeg je došao nego direktno klijentu.

Klijent dobiva odgovor ali odbacuje paket budući ga je dobio sa adrese 10.0.1.100 a ne sa 198.51.100.253 kako je očekivao.


Hair Pin NAT

Da bismo riješili ovaj problem potrebno nam je dodatno NAT pravilo na Routeru 1 koje će forsirati da odgovor web servera sa adrese 10.0.1.100 računalu DSL_01 na adresi 10.0.1.1 prođe kroz router bez obzira na činjenicu što se obje nalaze na istoj mreži. Pravilo može biti vrlo specifično za točno određenu adresu odnosno tip prometa a može se i proširiti tako da za svaki prosljeđeni servis ne moramo imati po jedno.

/ip firewall nat
add action=masquerade chain=srcnat comment="Masquerade to Web server" dst-address=10.0.1.100 out-interface=bridge_local protocol=tcp src-address=10.0.1.0/24

Sa dodatnim NAT pravilom tok se mijenja na sljedeći način:

KorakSource IP addressDestination IP addressDescription
0110.0.1.1192.51.100.253klijent šalje paket sa izvorišnom IP adresom <fc #ff0000>10.0.1.1</fc> na odredišnu IP adresu <fc #ff0000>192.51.100.253</fc> na port tcp/80 kako bi pristupio sadržaju na web serveru.
0210.0.1.25410.0.1.100Router translatira odredišnu adresu paketa u <fc #ff0000>10.0.1.100</fc>, ali i izvorišnu IP adresa zamjenjuje adresom routera: <fc #ff0000>10.0.1.254</fc>.
0310.0.1.10010.0.1.254Server odgovara na klijentov zahtjev paketom koji za izvorišnu IP adresu ima<fc #ff0000>10.0.1.100</fc> a za odredišnu <fc #ff0000>10.0.1.254</fc>.
04192.51.100.25310.0.1.1Router odlučuje da je paket dio prethodno uspostavljene konekcije, “skida” Source i Destination NAT i paketu vraća orginalne adrese pa tako za izvorišnu IP adresu dobije <fc #ff0000>192.51.100.253</fc> a za odredišnu <fc #ff0000>10.0.1.1</fc>

Klijent dobiva odgovor u formi kakvu očekuje i veza je uspostavljena.

Ovaj princip se naziva još i Hair Pin NAT (hair pin - ukosnica) jer na to podsjeća putanjom paketa od klijenta do servera i natrag.


Zasebna mreža

Sljedeći način za rješavanje ovog problema je postavljanje web servera na zasebnu mrežu (subnet)

Server je preseljen u mrežu 10.0.11.0/24 a njegova IP adresa je 10.0.11.100.U ovom slučaju problem je u potpunosti otklonjen za sva računala <fc #ff0000>osim za sam server</fc>. Naime sa svih računala na internetu a i računala na privatnoj mreži 1 u subnetu 10.0.1.0/24 web server će biti dostupan preko javne adrese rutera ili URL-a mywebserver.dyndnsdomain.com. Ukoliko i sa računala DSL_02 želimo pristupiti web serveru koji se nalazi na njemu koristeći URL, pojavit će se ista greška kao i u prethodnom slučaju, koji možemo riješiti na isti način kao i prije samo što će se ovaj puta pravilo odnositi na promet koji polazi sa subneta na kojem se server nalazi prema samom sebi ali preko javne adrese.

NAT pravilo će sada izgledati ovako:

/ip firewall nat
add action=masquerade chain=srcnat comment="Masquerade to Web server" dst-address=10.0.11.100 out-interface=bridge_dmz protocol=tcp src-address=10.0.11.0/24

Split DNS

Router "Internet" - konfiguracija

# may/19/2021 14:59:58 by RouterOS 6.48.1
# software id =
#
#
#
/system identity
set name=Internet

/ip address
add address=198.51.100.254/24 interface=ether1 network=198.51.100.0
add address=203.0.113.254/24 interface=ether5 network=203.0.113.0

/ip dhcp-client
add disabled=no interface=ether3

/ip dns
set allow-remote-requests=yes

/ip dns static
add address=198.51.100.253 name=mywebserver.dyndnsdomain.com

/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether
  1. postavljeno je ime rutera
  2. dodijeljene su IP adrese na ether1 i ether5 koji će biti povezani sa routerom 1 i routerom 2
  3. kreiran je dhcp klijent koji na ether3 postavlja adresu dobivenu od nadređenog DHCP servera
  4. dozvoljeni su DNS upiti
  5. u statički dns dodan je web server kako bismo mu mogli pristupiti po URL adresi
  6. kreiran je NAT masquerade prema ether3 interfejsu okrenutom Internetu kako bi svi uređaji iza routera mogli razmjenjivati promet sa Internetom

konf_router_1

Router "Local_1" - konfiguracija

# may/19/2021 15:22:24 by RouterOS 6.48.1
# software id =
#
#
#
/system identity
set name=Local_1

/interface bridge
add name=bridge_local

/interface bridge port
add bridge=bridge_local interface=ether1
add bridge=bridge_local interface=ether2

/ip address
add address=10.0.1.254/24 interface=bridge_local network=10.0.1.0
add address=198.51.100.253/24 interface=ether5 network=198.51.100.0

/ip pool
add name=dhcp_pool0 ranges=10.0.1.1-10.0.1.253

/ip dhcp-server
add address-pool=dhcp_pool0 disabled=no interface=bridge_local name=dhcp1

/ip dhcp-server lease
add address=10.0.1.1 mac-address=00:0C:29:2B:7F:0B server=dhcp1
add address=10.0.1.100 mac-address=00:0C:29:D6:C1:2A server=dhcp1

/ip dhcp-server network
add address=10.0.1.0/24 dns-server=198.51.100.254 gateway=10.0.1.254

/ip dns
set allow-remote-requests=yes

/ip firewall nat
add action=masquerade chain=srcnat comment="Masquerade to Internet" out-interface=ether5
add action=dst-nat chain=dstnat comment="DstNat to Web server" dst-address=198.51.100.253 dst-port=80 protocol=tcp to-addresses=10.0.1.100 to-ports=80
add action=masquerade chain=srcnat comment="Masquerade to Web server" dst-address=10.0.1.100 out-interface=bridge_local protocol=tcp src-address=10.0.1.0/24

/ip route
add distance=1 gateway=198.51.100.254

/ip service
set www disabled=yes
  1. postavljeno je ime rutera
  2. kreiran je bridge_local
  3. u koji su dodani ether1 i ether2
  4. dodijeljene su IP adrese na bridge_local i ether5 koji će biti povezani sa lokalnom mrežom 1 i Internetom
  5. kreiran je pool adresa za DHCP server
  6. kreiran je dhcp server
  7. rezervirane su adrese za računala DSL_01 i DSL_02 tako da uvijek budu 10.0.1.1 i 10.0.1.100
  8. dhcp serveru su dodani parametri mreže
  9. dozvoljeni su DNS upiti
  10. kreiran je Source NAT (masquerade) koji adrese sa lokalne mreže koje pristupaju Internetu maskira javnom adresom rutera
  11. kreiran je Destination NAT koji sve pakete koji dolaze sa Interneta namijenjene javnoj adresi rutera i portu 80 upućuje na port 80 računala DSL_02 na kojem je web server
  12. <fc #ff0000>kreiran je Source NAT (masquerade) koji adrese sa lokalne mreže koje pristupaju web serveru maskira privatnom adresom routera</fc>
  13. dodana je defaultna ruta za sav promet koji nije namijenjen lokalnoj mreži
  14. na ruteru je onemogućen lokalni web server namijenjen konfiguraciji

konf_router_2

Router "Local_2" - konfiguracija

# may/19/2021 15:25:43 by RouterOS 6.48.1
# software id =
#
#
#
/system identity
set name=Local_2

/interface bridge
add name=bridge_local

/interface bridge port
add bridge=bridge_local interface=ether1
add bridge=bridge_local interface=ether2

/ip address
add address=10.0.2.254/24 interface=bridge_local network=10.0.2.0
add address=203.0.113.253/24 interface=ether5 network=203.0.113.0

/ip pool
add name=dhcp_pool0 ranges=10.0.2.1-10.0.2.253

/ip dhcp-server
add address-pool=dhcp_pool0 disabled=no interface=bridge_local name=dhcp1

/ip dhcp-server lease
add address=10.0.2.1 mac-address=00:0C:29:8F:9E:D3 server=dhcp1

/ip dhcp-server network
add address=10.0.2.0/24 dns-server=203.0.113.254 gateway=10.0.2.254

/ip dns
set allow-remote-requests=yes

/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether5

/ip route
add distance=1 gateway=203.0.113.254
  1. postavljeno je ime rutera
  2. kreiran je bridge_local
  3. u koji su dodani ether1 i ether2
  4. dodijeljene su IP adrese na bridge_local i ether5 koji će biti povezani sa lokalnom mrežom 1 i Internetom
  5. kreiran je pool adresa za DHCP server
  6. kreiran je dhcp server
  7. rezervirana je adresa za računalo DSL_03 tako da uvijek bude 10.0.2.1
  8. dhcp serveru su dodani parametri mreže
  9. dozvoljeni su DNS upiti
  10. kreiran je Source NAT (masquerade) za pristup lokalne mreže 2 Internetu
  11. dodana je defaultna ruta za sav promet koji nije namijenjen lokalnoj mreži
  12. na ruteru je onemogućen lokalni web server namijenjen konfiguraciji

konf_dsl_1

Računalo "DSL_01" - konfiguracija

Ime računala:     DSL_01
IP adresa:        10.0.1.1
Def. Gateway:     10.0.1.254
Funkcija:         klijent

konf_dsl_2

Računalo "DSL_02" - konfiguracija

Ime računala:     DSL_02
IP adresa:        10.0.1.100
Def. Gateway:     10.0.1.254
Funkcija:         Web Server

konf_dsl_3

Računalo "DSL_03" - konfiguracija

Ime računala:     DSL_03
IP adresa:        10.0.2.1
Def. Gateway:     10.0.2.254
Funkcija:         klijent
networking/mikrotik/private_public.txt · Last modified: 2021/05/21 11:19 by rplecko