Network Address Translation

**NAT** буюу **Network Address Translation**, орчуулбал **Сүлжээний хаягийн хөрвүүлэлт** нь рүтерүүдээр дамжиж буй өгөгдлийн IP хаягийг хувиргаж буй үйлдлийг хэлдэг.

1990-ээд оны дунд үеэс NAT нь IPv4 хаягчлалын нөөц дуусах асуудлыг багасгахад хэрэглэсэн үндсэн хэрэгсэл болсон байдаг. NAT нь зарим нэг ноцтой асуудлыг Интернет холболт дээр бий болгодог бөгөөд өгөгдөл илгээж буй хэрэглэгчийн хаяг болон портын дугаарыг хувиргаад явуулдаг нь зарим төрлийн холболтонд саад учруулдаг. NAT- Network Address Translation бол маш олон хэрэглээтэй. Нэг хэрэглээ нь бол хувийн IP хаяг хэрэглэж буй сүлжээний IP хаягийг хадгалах. NAT нь routable –г хөрвүүлдэггүй. Харин routable дотор байгаа Private хаягийг Public хаяг руу хөрвүүлэх үүрэгтэй. IPv4 ашиглаж интернет сүлжээнд хандах хэрэглэгчдийн тоо өдрөөс өдөрт өсөж байна. Мөн хаяглалт хэрэглэдэг  технологууд нэмэгдэж байгаа нь Network  Address Translate (NAT) хэрэглэх нэг шалтгаан нөхцөл болсон. NAT нь нэг зорилготой ба энэ н сүлжээний нууцлал. Бид бүхэн Public болон private хаягийн талаар мэддэг.  Public хаягийг интернетийн хүрээнд  хэрэглэдэг. Харин Private хаягийг бол зөвхөн байгууллагын хүрээнд хэрэглэдэг.  Өнөөдөр, энэ цагт  дэлхий даяр хэдэн  сая private хаяг хэрэглэж  интернетд хандаж байна. Энэ private хаягаас public хаяг- руу хөрвүүлж байгаа нь NAT.  NAT -г зөвхөн Private хаягийг public хаягруу хөрвүүлэхэд хэрэглэдэггүй. NAT  нь Public to public, private to private хөрвүүлэхэд хэрэглэдэг. Хамгийн ерөнхий хэрэглээ нь Private to Public юм аа.  Гадаад сүлжээнээс  өөрийнхөө сүлжээг  нууж байгаа нь аюулгүй байдлын нэг шалтгаан юм.  Интернет буюу гадаад сүлжээнээс  тухайн нэг note –д remote -р хандах хэрэг гарвал тухайн PC –ний дотоод хаягаар биш зөвхөн public хаягаар хандах хэрэгтэй. Ерөнхийдөө stub network хүрээн дэхь төхөөрөмж дээр NAT ажилладаг.
* **Static NAT:** Port эсвэл Address –г  нэгээс нэгт хөрвүүлэхэд  хэрэглэдэг төрөл. 
* **Dynamic NAT:**  Public address pool, ба нэг public илүү хаягтай ажиллахад хэрэглэдэг төрөл. 
* **PAT ( Port address Translation ) or NAT overload:**  дотоод node -үүдийн outbound траффик нь  нэг public хаягийн зөвхөн port number хөрвүүлэх нөхцөлд хэрэглэнэ. 

## Dynamic Mapping ба Static Mapping. 
***NAT хөрвүүлэлт нь 2 янз байдаг. Dynamic ба Static.**
Dynamic NAT  нь IP address –ийн сан ба first-come, first-served basis олгох гэж хэрэглэнэ. NAT pool name нь ямар public хаягруу хөрвүүлэх вэ? ACL нь зөвхөн энэ хаяг хөрвүүлэгдэнэ. Source: хаанаас хашаа хөрвүүлэх вэ? гэдэг ээ холбож өгнө.Хувийн ip address –тэй host  нь интернетэд хандах хүсэлт илгээхэд dynamic NAT нь бусад хостын хараахан хэрэглээгүй байгаа IP address-г сангаас сонгож өгнө. Хамгийн эхэнд санал болгосон болон хамгийн эхэнд ирсэнд даалгах ба public IP address pool хэрэглэх. Жишээ нь : Хувийн IP хаягтай host internet хандах хүсэлт илгээхэд. Dynamic NAT нь тухайн pool -ээс ip хаяг сонгох ба гэхдээ бусад host-д хараахан сонгож амжаагүй байгаа ip хаягийг өгнө.

Static NAT  local ба global address –н mapping -д one to one гэж хэрэглэдэг. Static NAT ихэвчлэн интернетэд байрлалтай тогтмол хаягтай web server эсвэл host-д хэрэглэдэг. Тухайн хөрвүүлэх хаяг нь өөрчлөгдөхгүй public хаяг байна. NAT Overload NAT overloading (заримдаа үүнийг Port Address Translation буюу PAT гэдэг) private олон хаягийг ганц public хаягруу эсвэл цөөн хэдэн public хаягруу хөрвүүлэхийг хэлнэ. Static NAT нь outside address ба inside хооронд one-to-one mapping хийдэг. Static NAT нь гадаад төхөөрөмжөөс дотоод төхөөрөмжрүү эхлээд холбогдохыг эхлээд зөвшөөрдөг. Дотоод сүлжээнд байгаа серверийнн IP хаягийг шууд public хаягруу хөрвүүлж байна. Dynamic NAT –н тохиргоо хийх. Static NAT нь тусгай public ба internal IP address хооронд тогтомол mapping хийж байдаг. Dynamic NAT нь private хаягуудаас public хаягуудруу map хийдэг. Эдгээр public address –д нь NAT pool-с ирдэг. Dynamic нь static nat-аас өөр тохиргоотой боловч хоёулаа интерфейс тус бүр дээрээ inside or outside interface гэдэг ээ тохируулж өгнө.

Мөн зайлшгүй тайлбарлах ижил зүйл нь. 
* **Inside local :**  тухайн PC-ний private хаяг. 
* **Inside global**:  тухайн PC-ний авах Public хаяг. 
* **Outside local:**  гадна талд байгаа хостуудын public хаяг. 
* **Outside global:** гадаад local нь адилхан хаягтай зайлшгүй outside address-г private хаягруу хөрвүүлэх шаардлагатай. / Same address as the outside local, necessary to translate an outside address to an private address. / 

Зураг 1-ээс хаягийн өөр өөр байдлыг тодорхойлж харна уу. 

* 

## NAT overload 
NAT overload   ( заримдаа Port Address Translation буюу PAT гэж нэрлэдэг. ) олон private (хувийн ) ip address –г нэг public ip address эсвэл д цөөн хэдэн хувийн ip хаягруу замчилдаг. Үүнийг Home routers  хийдэг ба танай ISP тухайн  router дээр зөвхөн  нэг л хаягаар хандаг. 

NAT Overloading  тэй multiple address-д нь нэг эсвэл цөөхөн ip хаягруу замчиллах шалтгаан нь private address  бүр нь port number-р чиглүүллэгдэг.  Client –н TCP/IP  session нь open байхад  NAT router нь source addressц-д port number оноож өгдөг.  Internet дахь  server –д холбогдосон Client тус бүрд NAT overload  нь өөр өөр TCP port number  хэрэглэж client-уудыг баталгаажуулдаг. Server –c буцаж хариу эрхэд source  port  нь ( return trip ) буцаж ирэх  destination port address  дээр ирдэг router-ээс замчиллагдасан pаckets нь аль client дээр ирхийг тодорхойлно. 

## NAT болон NAT overload-н хоорондын ялгаа нь 
NAT  нь ерөнхийдөө зөвхөн IP address 1:1  байдлаар хөрвүүлдэг. Public ip address  ба private ip address хооронд. 

NAT overload  нь бол private address ба port number 2-г өөрчилж илгээдэг.  NAT  Overload нь public сүлжээний хостоос харсан port number сонгох болно.  NAT overload нь ерөнхийдөө зөвхөн нэг эсвэл маш цөөхөн public IP хаягруу хөрвүүлдэг.  

NAT- ийн давуу болон сул тал.

NAT-н давуу тал дараах зүйлүүд болно. 
* NAT  нь public сүлжээнд холбогдох уян хатан чанрыг өсгөж өгдөг. Multiple pools, Backup pools, and load-balancing pools нь public сүлжээнд холбогдох найдвартай аюулгүй ажилгааг хэрэгжүүлдэг. 
* Хувийн сүлжээний аюулгүй байдал. 
* Дотоод сүлжээний хаягийн схэм дэхь цогцол 
NAT –н сул тал нь
* Гүйцэтгэл нь муу 
* End-to-End үйл ажиллагаа нь муу.  
* End-to-End traceroute нь муу. 
* Tunneling бол илүү асуудалтай будлиантай. 
* Эхний TCP холболт нь байхгүй  

## Static NAT тохиргоо хийх 
Статик нат  нь inside address ба outside address –аар хоорондоо one-to-one mapping хийдэг. Static NAT нь гадаад төхөөрөмжөөс дотоод төхөөрөмжрүү эхлэж холбогдохыг зөвшөөрдөг. Жишээбэл танай вэб сэрвэрд хандахын тулд чухал inside local address руу inside global address замчиллах ёстой. 

Configuring Static NAT 

Доорх зурганд 192.168.10.254 хаягтай сервер интернэт рүү гарахдаа үргэлж 209.165.200.254 гэсэн гадаад хаягаар хөрвүүлэгдэнэ. Дотоод сүлжээ inside тал интернэт тал нь outside тал болно. 

## PAT 
Inside болон outside interface-г тодорхойлно.

Router(config)#access-list 10 permit 192.168.10.0 0.0.0.255

Router(config)#ip nat inside source list 10 interface fa0/1 overload –интерфэйс дээр өгсөн хаягаар хөрвүүлэгдэнэ.

## Dynamic NAT configure. 
Static NAT нь нэг дотоод хаягнаас нэг гадаад  хаяг хооронд өөрчиллөгдөггүй mapping  хийдэг бол Dynamic NAT нь дотоод IP хаягуудаас гадаад IP хаягуудруу замчилдаг. Эдгээр Public IP хаягууд нь 

NAT pool-ээс ирдэг.  Dynamic NAT configure нь  Static NAT-аас өөр. Харин outside interface болон  inside interface дээр configure  нь адилхан.  Хэдийгээр Static map to single ip address үүсгэдэг ч. Inside global сангаас ip хаяг хэрэглэдэг. 

Configuring Dynamic NAT алхам: 

NAT pool name Ямар public хаягруу хөрвүүлэх вэ?  

ACL нь зөвхөн энэ хаяг хөрвүүлэгдэнэ Source: хаанаас хашаа хөрвүүлэх вэ?  

Гэдэг ээ холбож өгнө NAT Overload There are two possible ways to configure overloading, depending on how the ISP allocates public IP addresses. In the first instance, the ISP allocates one public IP address to the organization, and in the other, it allocates more than one public IP address. 

Доор Зураг-3т үзүүлэв. Тохиргоог нь Зураг-4т харуулав. NAT-POOL нэртэй access-list зарлаж өгсөн ба хөрвүүлэгдэх хаягийн хэмжээ 209.165.200.226 -аас 209.165.200.240 хооронд хөрвүүлэлт хийгдэнэ. 

Зөвшөөрсөн хаяг нь 192.168.0.0 дотоод сүлжээний хаяг. Оролтын эх үүсвэрийн хаяг нь дотоод сүлжээнээс зөвшөөрсөн хаяг. Интерфейс дээр орол гаралтыг зааж өгнө. 

## Configuring NAT Overload 
Single Public IP address дэхь NAT overload тохиргоо. 

Overloading configure хийх 2 боломжтой арга байна. Эдгээр нь ISP байгаа public ip address-с хамаарна. Нэгт тухайн байгууллага нь  ISP дээр нэг Public хаягтай. Эсвэл тухайн байгууллага ISP дээр 1-ээс илүү хаягтай үед. NAT overload хийх нь Dynamic NAT хийхтэй адилхан configure тэй.  

## Configuring Port Forwarding 
Port forwarding ( заримдаа tunneling тэй хамаатай гэж дууддаг.) бол сүлжээний нэг цэгээс өөр сүлжээний порт дамжуулдаг үйлдэл юм. Энэ арга нь гадаад хэрэглэгч NAT идэвхжсэн чиглүүлэгчийн дамжуулан гаднаас нь (а LAN дотор) хувийн IP хаяг дээр порт хүрэх боломжийг олгож болно. 

Ерөнхийдөө. Peer-to-peer file-sharing programs ба key operations, web serving ба outgoing FTP, гэх мэт router –ийн port дээр эдгээр application-ээс open хийгдэсэн нь ажилдаг. Учир нь NAT  нь дотоод сүлжээний хаягийг нуудаг. Зөвхөн peer-to-peer нөхцөлд ажилдаг. 

## Nat хөрвүүлэгдсэн эсэхийг Show command-аар харахад дараах байдлаар харагдана. 
Router# **show ip nat translations->** Хөрвүүлэгдсэн ip хаягийг харах

Router#sh ip nat translations

Pro                  Inside global            Inside local            Outside local             Outside gloabal

icmp              200.200.200.1:1     192.168.10.3:1       192.168.30.10:1          192.168.30.10:1

icmp              200.200.200.1:2     192.168.10.3:2       192.168.30.10:2          192.168.30.10:2

icmp              200.200.200.1:3     192.168.10.3:3       192.168.30.10:3          192.168.30.10:3

icmp              200.200.200.1:4     192.168.10.3:4       192.168.30.10:4          192.168.30.10:4

icmp              200.200.200.1:5     192.168.10.3:5       192.168.30.10:5          192.168.30.10:5
* Inside local : тухайн PC-ний private хаяг.
* Inside global: тухайн PC-ний авах Public хаяг.
* Outside local: гадна талд байгаа хостуудын public хаяг. 
* Outside global: гадаад local нь адилхан хаягтай зайлшгүй outside address-г private хаягруу хөрвүүлэх шаардлагатай.
* Icmp: ашиглагдаж буй протокол

Router# **show ip nat statistics->** Статикаар хөрвүүлэгдэж байгаа ip хаягийг харах

Router# sh ip nat statictics

Total translations: 1 (1 static, 0 dynamic, 0 extended )

Outside Interfaces:FactEthernet0/1            /Гаралтын интерфейс/

Inside Interfaces: FastEthernet0/0                /Оролтын интерфейс/

Hits: 0 Misses: 2 

Expired translations: 0

Dynamic mappings:

--Inside Source    /Оролтын эх үүсвэрийн хаяг /

accees-list 10 pool Nat resfCount 0  /статик нат бичихдээ access-list 10 -ийг Nat гэсэн нэртэйгээр зарлаж өгсөн байна./

pool NAT:netmask 255.255.255.0     

start 200.200.200.1 end 200.200.200.200  

Router# **debug ip nat->** Хөрвүүлэгдэж байгаа хаягуудыг харах

NAT*:  s=192.168.30.10, d=100.100.100.100->192.168.10.10 [11]

NAT*:  s=192.168.10.0, d=100.100.100.100->192.168.10.10 [12]

NAT*:  s=192.168.30.10, d=100.100.100.100->192.168.10.10 [5]

NAT*:  s=192.168.10.10, d=100.100.100.100->192.168.10.10 [8]

NAT*:  s=192.168.30.10, d=100.100.100.100->192.168.10.10 [11]
## Nat програм хангамжийн жишээ 
* Internet Connection Sharing (ICS): NAT & DHCP implementation included with Windows desktop operating systems
* IPFilter: included with (Open)Solaris, FreeBSD and NetBSD, available for many other Unix-like operating systems
* ipfirewall (ipfw): FreeBSD-native packet filter
* Netfilter with iptables/nftables: the Linux packet filter
* NPF: NetBSD-native Packet Filter
* PF: OpenBSD-native Packet Filter
* Routing and Remote Access Service: routing implementation included with Windows Server operating systems
* WinGate: third-party routing implementation for Windows

## Гадаад холбоос 
https://en.wikipedia.org/wiki/Network_address_translation(https://mn.wikipedia.org/wiki/:en:Network_address_translation) /англи хэл дээр Nat -ийн ойлголт/

https://web.archive.org/web/20160330025335/http://cisco.edu.mn/ /cisco-ийн хичээлүүд/

http://www.slideshare.net/ochiroodorj/nat-31246241 /Nat-ийн тухай ойлголт/