Didelės įmonės klasikinė kompiuterių tinklo architektūra

Trumpai aprašysime ir pateiksime klasikiniu tampančiu tinklo architektūros modeliu, vidutinei bei didelei įmonei. Kaip ir senosios tinklo architektūros, klasikinė tinklo architektūrą išlaiko trijų sluoksnių modelį. Todėl aprašant vadovausimės kuo paprastesniu pavyzdžiu, be sudėtingos konfigūracijos (neaprašinėsime aukšto pasiekiamumo, ir kitų dalių). Taip pat naudosime kuo įvairesnių gamintojų tinklo įrangą – Mikrotik, Aruba ir Cisco.
Didžioji tinklo dalis apims dinaminius tinklo maršrutizavimo protokolus, tokius kaip OSPF ir BGP. Nepamiršime ir senos VLAN technologijos.

Pradiniai duomenys, kuriuos reikės suvesti, norint paruošti tinklo įrangą darbui.

Išorinis tinklų sujungimas:

  • IPv4 susijungimo su IPT adresai 80.81.195.164/30
  • IPv4 publikuojami viešai IP adresai: 85.255.96.0/29
  • Užregistruotas AS sistemos numeris: 65550

Vidinis tinklų sujungimas:

  • IPv4 tranzitinis tinklas su išorės maršrutizatoriumi KLIENT01 10.10.98.0/30
  • IPv4 tranzitinis tinklas tarp SWCORE01 ir SWDIST01 komutatorių (VLAN99) 10.10.99.0/30
  • IPv4 tinklas galinei įrangai (VLAN10) 10.10.10.0/24
  • IPv4 tinklas galinei įrangai (VLAN20) 10.10.20.0/24

world_class_enterprise

Nuo apačios…

Tinklo architektūros dalies aprašymą pradėsime nuo apačios į viršų t.y. nuo trečio tinklo dalies sluoksnio. Šiame sluoksnyje, priklausomai nuo poreikių, suteikiame prijungimus mūsų vartotojų galinei įrangai, serveriams, kai kuriais atvejais gali būti ir duomenų centrams. Konfigūruosime tinklo komutatorių SWDIST01, kuriame sukursime virtualius potinklius VLAN10, VLAN20 vartotojų poreikiams su jų numatytais šliuzais (angl. gateway).
Papildomai šis komutatorius turi turėti tranzitinį potinklį VLAN99 ir dalyvauti dinaminiame OSPF maršrutizavime, kad užtikrinti maršrutizuojamą L3 pasiekiamumą su pagrindiniu komutatoriumi SWCORE01.

Atliekame konfigūraciją SWDIST01 komutatoriuje. Pirmiausia sukuriame VLAN’us, priskiriame tinklo įrenginio prievadus ir IP adresus.

vlan 10
description VLAN10
vlan 20
description VLAN20
vlan 99p
description TRANSIT_VLAN99
interface 1/1/1
no shutdown
description PC1
no routing
vlan access 10
interface 1/1/2
no shutdown
description PC2
no routing
vlan access 20
interface 1/1/6
no shutdown
no routing
vlan access 99
interface vlan 10
description VLAN10 GW
ip address 10.10.10.254/24
interface vlan 20
description VLAN20 GW
ip address 10.10.20.254/24
interface vlan 99
description TRANSIT_VLAN99
ip address 10.10.99.2/30

Toliau sukuriame OSPF procesą 1 (neturi reikšmės niekur, tik turi būti sukurtas) su grupe 0 (area 0.0.0.0), kuris dinamiškai atiduos visus prijungtus prie šio komutatoriaus potinklius į dinaminio maršrutizavimo lentelę (redistribute connected).

router ospf 1
router-id 2.2.2.2
redistribute connected
area 0.0.0.0

Nepamirštame priskirti tinklo sąsają prie OSPF proceso 1 ir grupės 0 (0.0.0.0).

interface vlan 99
description TRANSIT_VLAN99
ip address 10.10.99.2/30
ip ospf 1 area 0.0.0.0

Visa Aruba komutatoriaus konfigūracija SWDIST01.

hostname SWDIST01
user admin group administrators password ciphertext
led locator on
ntp server pool.ntp.org minpoll 4 maxpoll 4 iburst
ntp enable
!
ssh server vrf mgmt
vlan 1
vlan 10
description VLAN10
vlan 20
description VLAN20
vlan 99
description TRANSIT_VLAN99
interface mgmt
no shutdown
ip static 10.10.5.5/24
interface 1/1/1
no shutdown
description PC1
no routing
vlan access 10
interface 1/1/2
no shutdown
description PC2
no routing
vlan access 20
interface 1/1/6
no shutdown
no routing
vlan access 99
interface vlan 10
description VLAN10 GW
ip address 10.10.10.254/24
interface vlan 20
description VLAN20 GW
ip address 10.10.20.254/24
interface vlan 99
description TRANSIT_VLAN99
ip address 10.10.99.2/30
ip ospf 1 area 0.0.0.0
!
router ospf 1
router-id 2.2.2.2
redistribute connected
area 0.0.0.0

Per viduriuką arba šerdis

Kylame vienu sluoksniu aukščiau ir čia pateksime į pagrindinį tinklo architektūros sluoksnį (anlg. core), kuriame, pagal poreikius, galima taikyti aušto pasiekiamumo tinko technologijas. Apsiribosime šiame pavyzdyje užtikrindami OSPF grupės 0 (0.0.0.0) pasiekiamu ir tolimesniu dinaminio maršrutizavimo duomenų perdavimu per tranzitinį tinklą iš komutatoriaus SWCORE01 į išorės maršrutizatorių KLIENT01.

Atliekame konfigūraciją SWCORE01 komutatoriuje. Pirmiausia sukuriame VLAN’us, priskiriame tinklo įrenginio prievadus ir IP adresus.

vlan 99
description TRANSITVLAN99
interface 1/1/1
no shutdown
ip address 10.10.98.2/30
ip ospf 1 area 0.0.0.0
interface 1/1/6
no shutdown
description TRANSITVLAN99
no routing
vlan access 99
interface vlan 99
description TRANSITVLAN99
ip address 10.10.99.1/30

Toliau sukuriame OSPF procesą 1 (neturi reikšmės niekur, tik turi būti sukurtas) su grupe 0 (area 0.0.0.0), kuris dinamiškai atiduos toliau per OSPF išmoktus ir prie šio komutatoriaus prijungtus potinklius į dinaminio maršrutizavimo lentelę.

router ospf 1
router-id 1.1.1.1
area 0.0.0.0

Nepamirštame priskirti tinklo sąsają prie OSPF proceso 1 ir grupės 0 (0.0.0.0).

interface 1/1/1
no shutdown
ip address 10.10.98.2/30
ip ospf 1 area 0.0.0.0
interface vlan 99
description TRANSITVLAN99
ip address 10.10.99.1/30
ip ospf 1 area 0.0.0.0

Visa Aruba komutatoriaus konfigūracija SWCORE01.


hostname SWCORE01
vlan 1
vlan 99
description TRANSITVLAN99
interface mgmt
no shutdown
ip static 10.10.5.4/24
interface 1/1/1
no shutdown
ip address 10.10.98.2/30
ip ospf 1 area 0.0.0.0
interface 1/1/6
no shutdown
description TRANSITVLAN99
no routing
vlan access 99
interface vlan 99
description TRANSITVLAN99
ip address 10.10.99.1/30
ip ospf 1 area 0.0.0.0
!
router ospf 1
router-id 1.1.1.1
area 0.0.0.0

Vartai į pasaulį

Galiausiai patenkame į paskutinį sluoksnį, kuriame yra IP tinklų paskirstymo sluoksnis. Čia naudosime du tinklo maršrutizavimo protokolus – pratęsiant vidinius sujungimus OSPF išoriniam sujungimui su interneto paslaugų tiekėju BGP, kurie veiks KLIENT01 maršrutizatoriuje. Taip pat šis maršrutizatorius sujungs vidinius komutatorius ir perduos mūsų norimus skelbi vidinius IP maršrutus į BGP maršrutizavimo lentelę.
Šiame sluoksnyje reikia atlikti įeinančių/išeinančių IP adresų filtravimą, kad neskelbti visų vidinių IP adresų į išorę t.y. internetą (nors jūsų interneto tiekėjas greičiausiai juos nufiltruos automatiškai).

Šį kartą visą konfigūraciją atliksime KLIENT01 maršrutizatoriuje, kuriame naudojame operacinė sistema RouterOS. Pirmiausia priskiriame tinklo įrenginio prievadus ir IP adresus.

/ip address
add address=80.81.195.166/30 interface=ether1 network=80.81.195.164
add address=10.10.98.1/30 interface=ether2 network=10.10.98.0

Taip pat, lokaliai sukonfigūruosime, kaip pavyzdį mūsų įsigytą IP adresų rėžį (85.255.96.0/29), kurį publikuosime į viešąjį interneto tinklą, naudojant mūsų AS (65550). Vieną IP adresą iš šio rėžio tiesiog priskirsime tinklo prievadui (ether4).

/ip address
add address=85.255.96.1/29 interface=ether4 network=85.255.96.0

Toliau reikia įjungti OSPF procesą ir priskirti tranzitinio tinklo prievadą, kad vidinis tinklas turėtų išėjimą į viešą interneto tinklą. Taip pat įjungiame vidinių IP adresų maskavimą/keitimą į viešą statinį tinklo adresą, kuris sujungia KLIENT01 su IPT01.

/ip firewall nat
add action=masquerade chain=srcnat src-address=10.10.20.0/24
add action=masquerade chain=srcnat src-address=10.10.10.0/24

/routing ospf instance add disabled=no name=ospf1 originate-default=always redistribute="" router-id=3.3.3.3
/routing ospf area add disabled=no instance=ospf1 name=area0
/routing ospf interface-template add area=area0 disabled=no interfaces=ether2

Kaip rašėme – mes turime įsigiję AS ir viešų IP adresų rėžį, kurį norėsime skelbti į viešąjį interneto tinklą. Šiam tikslui reikalingas išorinis dinaminiame IP adresų apsikeitimas su interneto paslaugų teikėjų/ais naudojant BGP protokolą.

Rekomenduojame panaudoti BGP šabloną bendriems nustatymams t.y. AS, Router-ID.

/routing bgp template
set default as=65550 disabled=no router-id=3.3.3.3 routing-table=main

Toliau pakuriame paleidžiame BGP procesą ir sukuriame sujungimą su interneto paslaugų tiekėju. Taip pat įjungiame prie tinklo įrenginio prijungtų IP tinklų skelbimą į BGP maršrutizavimo lentelę ir sukuriame išeinančių IP tinklų filtrą (apie filtro panaudojimą pateiksime daugiau info).

/routing bgp connection
add afi=ip as=65550 disabled=no local.role=ebgp name=2ISP_IPT0ą output.default-originate=never .filter-chain=\
ipv4-ebgp-provider-out-lists .redistribute=connected remote.address=80.81.195.165/30 .as=65555 router-id=3.3.3.3 \
routing-table=main templates=default

BGP filtravimas

Prieš pradedant BGP sesijas, svarbu sukurti filtrus įeinančiam ir išeinančiam IP duomenų srautui.
Kad neskelbti vidinio tranzitinio IP potinklio (sujungimas su KLIENT01 ir SWCORE01 ) į BGP sukuriame tokią filtro taisyklę.

Kaip visada šiek tiek pasilengviname su adresų sąrašais.

/ip firewall address-list
add address=10.10.98.0/30 list=LOCAL_NO_OUT

Pati taisyklė skamba taip – bet koks IP potinklis įtrauktas į IP sąrašą (pvz. 85.255.96.0/29) pateks į BGP maršrutizavimo lentelę ir bus perduotas BGP kaimynams. Visa kita nepateks ir yra draudžiama.

/routing filter rule
add chain=TRANSIT_IPv4_OUT disabled=no rule="if ( dst in LOCAL_OUT ) { accept } else { reject }"

Dar vienas filtras bus reikalingas, kad „išfiltruoti” pas mus įeinančius IP potinklius iš IPT tiekėjo. Šiuo atveju turime du sprendimo būdus: priimti tik IP tiekėjo siunčiamą numatytąjį maršrutą (angl. default route), ar prašyti pilnos BGP lentelės be numatytojo maršruto, dar vadinamos pilna interneto maršrutizavimo lentele. Paskutinis variantas reikalaus daugiau maršrutizatoriaus sisteminių resursų.

Pirmuoja atveju sukuriame filtrą, kuris priima tik numatytąjį maršrutą 0.0.0.0/0 (angl. default route) iš paslaugų tiekėjo.

/routing filter rule
add chain=TRANSIT_IPv4_IN rule="if (dst==0.0.0.0/0) { accept; } else { reject }"

Priskiriame filtrą BGP kaimynui IPT01.

/routing bgp connection
add afi=ip as=65550 disabled=no input.filter=TRANSIT_IPv4_IN local.role=ebgp name=2ISP_IPT01 output.default-originate=\
never .filter-chain=TRANSIT_IPv4_OUT .redistribute=connected remote.address=80.81.195.165/30 .as=65555 router-id=\
3.3.3.3 routing-table=main templates=default

Antras variantas – galima priimti visą BGP lentelę, bet reikia išfiltruoti tinklo kaukes (angl. prefix) nuo /8 iki /24. Visas kitas kaukes tiesiog nepriimsime.

Sukuriame filtras leidžiantį tinklo kaukes tik nuo /8 iki /24

/routing filter rule
add chain=TRANSIT_IPv4_IN rule="if (dst-len >= 8 && dst-len <= 24) { accept; } else { reject }"
/routing bgp connection
add afi=ip as=65550 disabled=no input.filter=TRANSIT_IPv4_IN local.role=ebgp name=2ISP_IPT01 output.default-originate=\
never .filter-chain=TRANSIT_IPv4_OUT .redistribute=connected remote.address=80.81.195.165/30 .as=65555 router-id=\
3.3.3.3 routing-table=main templates=default

Visa konfigūracija iš KLIENT01 RouterOS.

/ip smb users
set [ find default=yes ] disabled=yes
/port
set 0 name=serial0
/routing bgp template
set default as=65550 disabled=no router-id=3.3.3.3 routing-table=main
/routing ospf instance
add disabled=no name=ospf1 originate-default=always redistribute="" router-id=3.3.3.3
/routing ospf area
add disabled=no instance=ospf1 name=area0
/ip firewall connection tracking
set udp-timeout=10s
/ip settings
set max-neighbor-entries=6144
/ipv6 settings
set max-neighbor-entries=3072
/interface ovpn-server server
add mac-address=FE:E2:B4:FF:91:61 name=ovpn-server1
/ip address
add address=80.81.195.166/30 interface=ether1 network=80.81.195.164
add address=10.10.98.1/30 interface=ether2 network=10.10.98.0
add address=85.255.96.1/29 interface=ether4 network=85.255.96.0
/ip firewall address-list
add address=85.255.96.0/29 list=LOCAL_OUT
/ip firewall nat
add action=masquerade chain=srcnat src-address=10.10.20.0/24
add action=masquerade chain=srcnat src-address=10.10.10.0/24
/ip ipsec profile
set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5
/ip route
add disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=80.81.195.165 pref-src="" routing-table=main scope=30 \
suppress-hw-offload=no target-scope=10
/ip smb shares
set [ find default=yes ] directory=/pub
/routing bgp connection
add afi=ip as=65550 disabled=no input.filter=TRANSIT_IPv4_IN local.role=ebgp name=2ISP_IPT01 \
output.default-originate=never .filter-chain=TRANSIT_IPv4_OUT .redistribute=connected remote.address=\
80.81.195.165/30 .as=65555 router-id=3.3.3.3 routing-table=main templates=default
/routing filter rule
add chain=TRANSIT_IPv4_OUT disabled=no rule="if ( dst in LOCAL_OUT ) { accept } else { reject }"
add chain=TRANSIT_IPv4_IN disabled=no rule="if (dst==0.0.0.0/0) { accept } else { reject }"
/routing ospf interface-template
add area=area0 disabled=no interfaces=ether2
/system identity
set name=KLIENT01

Publikavo: 

Padedame prisijungti prie pasaulio ipv4/ipv6 lygio tinklų pagalba. ITIL, CISCO, Mikrotik, MCP, CompTIA, LPI