Прокси сервер

### Прокси сервер 
Прокси сервер нь нэг албан байгууллага буюу нэг сүлжээний толгой компьютер болон ажилладаг. Ерөнхийдөө прокси серверийг ашиглахдаа жижиг албан байгууллага аль болох бага хэрэглэгчтэй сүлжээнд хэрэглэх нь илүү оновчтой юм. Энэ нь илүү найдвартай ажиллагааг хангаж өгдөг. Прокси сервер нь сүлжээнд холбогдсон бүх компьютерт динамик буюу DHCP-р сүлжээний хаяг өгдөг бөгөөд тухайн сүлжээний бүх компьютерийн интернеттэй холбогдох гарц нь юм.

### Прокси серверийн талаарх ойлголт 
Ямар нэг прокси серверийг ашиглахаасаа өмнө прокси сервер гэж юу болоод прокси сервер хэрхэн ажилладгийг товчхон мэдэх ёстой. Прокси сервер нь сүлжээний ажиллагааг сайжруулах, сүлжээг удирдах, хянах ажиллагааг зохион байгуулах болон кеш буюу өгөгдлийг нөөцлөх үндсэн зорилготой ажилладаг. Компьютерийн сүлжээнд прокси сервер гэдэг нь нэгэн төрлийн сервер бөгөөд энэ нь клиентийн бусад серверээс нөөц хүсэх хүсэлтүүдэд зуучлагч болдог сервер юм. Өөрөөр хэлбэл сүлжээнд холбогдож байгаа хэрэглэгч болон интернет сүлжээний дунд байрладаг завсрын сервер болно. Прокси сервер нь 2 сүлжээний голд байх бөгөөд нэг сүлжээний интерфэйс нь интернет рүү(гадаад IP хаягтай), нөгөөх нь дотоод сүлжээтэй(дотоод IP хаягтай) холбогдсон байдаг. Прокси сервер нь өгөдлийг нөөшлөн хадгалаад дараа дахин дуудагдахад нөөцөлсөн хэсгээс дамжуулалтыг хийдэг.

### Proxy серверийн ажиллагааг товч дурдвал:
Вэб хуудас үзэх гэх мэтийн захиалгыг хүлээж авна. Хэрвээ админ элдэв шүүлтүүр хамгаалалт тавьсан бол тэр дагуу шүүж үзнэ. Бас cache ажиллаж байгаа бол шууд өөр дээрээ нөөцөлсөн байгаа эсэхийг шалгана. Хэрвээ нөөцөлсөн байх аваас интернэтээс дуудахгүйгээр уг нөөцөлсөн хуудсаа шууд харуулдаг учир хурд нэмэгддэг. Байнга дуудагддаг Yahoo-ийн нүүр хуудас мэтийн вэбүүдийг нөөцөлснөөр асар их хурд, урсгалыг хэмнэдэг. Иймээс интернэт кафе мэтийн газрууд сайн тохиргоо хийсэн Proxy серверийг заавал суулгах шаардлагатай.Хэрвээ cache хийгдээгүй бол интернэтээс уг хуудсыг дуудаж харуулна. Үндсэндээ хэрэглэгч хүнд Proxy сервер нь ямар ч хүртээлгүй, бас харагдах мэдэгдэх боломжгүй зүйл юм.Proxy серверийн эхний зорилго бол cache хийж урсгалыг гамнах явдал байдаг бол хоёр дахь нь сүлжээгээ удирдах хянах боломжийг админд олгодог юм.

Proxy сервэр нь ‘Dual homed’ юм. Учир нь Proxy сервэр нь 2 сүлжээний голд байх бөгөөд нэг сүлжээний интерфэйс нь интернэтлүү (гадаад IP хаягтай), нөгөөх нь дотоод сүлжээтэйгээ (дотоод IP хаягтай сүлжээ) холбогдсон байдаг.

 Proxy сервэрт үндсэн 3 функц байна 

  * Gateway – Router-н үүргээр ажиллана. (сайн тал нь router авах мөнгөө хэмнэх)
  * NAT – Дотоод хаягийг гадаад хаягруу хөрвүүлэхийг NAT гэдэг. Linux-н хувьд үүнийг “Masquerading” гэдэг. Учир нь Proxy server дотоод сүлжээнээс интернэтлүү хандаж байгаа жинхэнэ хостыг нуудаг.
  * Firewall – Тухайн сүлжээны орох, гарах трафикийг тодорхойлж, сүлжээний аль систем интернэтийн ямар сервер, вебрүү хандахыг Firewall хийдэг. Тэгвэл Firewall-г IPTABLE ашиглан хүссэнээрээ зохион байгуулах боломжтой. (Proxy cервэр нь Firewall-н зарим үйлдлийг хийдэг ч яг Firewall биш юм. ProxyàFirewall болгох тун амархан бөгөөд proxy.sh script shield дээр хэдэн IPTABLE command бичээд л firewall.sh болгож болно)

### Прокси сервеийн үндсэн үүрэг 
  * Галт хана буюу сүлжээний өгөгдлийн шүүлтүүр – Тухайн сүлжээний орох, гарах урсгалыг тодорхойлж, сүлжээний аль систем интернетийн ямар    сервер, вэб рүү хандахыг зохицуулалт хийдэг. Галт ханыг IP хүснэгт(iptable) ашиглан хүссэнээрээ зохион байгуулах боломжтой.  
  * Өгөгдлийг нөөцлөх(кэйшлэх) – Прокси сервер нь өмнө нь хандсан вэб хуудсыг нөөцөлж авсанаараа дахин тэр хуудас руу хандахад нөөцөлсөн хуудсыг илгээдэг ба ингэснээр сүлжээний ачааллыг бууруулж , зурвасын өргөний үр ашигтай байдлыг нэмэгдүүлэн, хэрэглэгчид хамгийн их мэдрэгддэг асуудал болох хариу өгөх хугацааг богиносгодог.  
  * Сүлжээний холболтыг хуваалцах – Дотоод интранет сүлжээнүүд болон олон тооны компьютерууд интернэтэд холбогдохдоо бүгд прокси серверээр дамжин холбогддог.  

### Прокси серверийн төрөл
Прокси сервер яг тухайн хэрэглэгчийн компьютер дээр ажиллаж болох ч интернетийн орчин дахь төгсгөлийн серверүүд болон хэрэглэгчийн компьютерийн хоорондох янз бүрийн цэгүүд дээр ажиллаж болдог. Прокси серверийг  гурван төрөлд хуваан үздэг.  

#### Дамжуулагч прокси(Forward Proxy)
Дамжуулагч прокси сервер нь WAN сүлжээний хил дээр байрлаж дотоод сүлжээнээс ирж буй хүсэлтийг аваад гадаад сүлжээрүү илгээдэг. Ингэхдээ дүрмийн дагуу зөвшөөрөгдсөн хүсэлт байвал цааш дамжуулж, зөвшөөрөгдөөгүй хүсэлт байвал хүсэлтийг дамжуулдаггүй.
 

#### Нээлттэй прокси (Open Proxy)
Уг прокси нь интернэтийн хаанаас ч  хүсэлтүүдийг дамжуулдаг. Энэ проксид интернэтийн аль ч хэрэглэгч хандах боломжтой. Нээлттэй прокси сервер нь сүлжээний групп доторх DNS болон вэб хуудас дуудах мэт интернетийн үйлчилгээг өөртөө нөөшилдөг ба өгөгдөл дамжигдах шугамыг удирддаг мөн шугамын хэрэглээний тоог бууруулдаг.

#### Хөрвүүлэгч прокси (Reverse proxy) 
Дээрх дамжуулагч прокси сервер нь дотоод сүлжээний хэрэглэгчид болон интернэт гарцын хооронд холбогдон ажиллаж байсан бол хөрвүүлэгч прокси нь сервер талд холбогдон ажилладаг ба хувийн сүлжээн дээрх сервер рүү хандах хандалтыг шүүхэд хэрэглэгддэг, ихэнхдээ ачааллыг тэнцвэржүүлэх, баталгаажуулалт хийх, кодыг тайлах, өгөгдлийн нөөцлөлтийг хийх зорилгуудыг гүйцэтгэдэг сервер юм. Хөрвүүлэгч прокси интернэтээс хүсэлтүүдийг авдаг бөгөөд тэдгээр хүсэлтүүдийг дотоод сүлжээн дэх серверүүд рүү дамжуулдаг. Тэдгээр хүсэлтүүд нь прокситой холбогддог ч дотоод сүлжээний байршилыг мэддэггүй.      Хөрвүүлэгч прокси нь хувийн хувийн сүлжээнийхээ эх серверүүдийн характеристик буюу шинж чанар болон байршлыг нууж чаддаг ба хэд хэдэн серверүүдэд орж ирж байгаа хүсэлтүүдээс ачааллыг тараан хувиарлаж чаддаг. Энэ төрлийн проксигийн нөөцлөлтүүд ихэвчлэн вэб сайтын хүсэлтүүдэд эх серверийн өмнөөс хариу өгч эх сервер дээр ирэх ачааллыг маш ихээр багасгадаг. 

##### Хөрвүүлэгч прокси сервер нь дараах боломжуудтай байдаг:
    * Нууцлал
    * Ачааллыг тэнцвэржүүлэх
    * Нийцүүлэх/Кэйшлэх статик контент
    * Шахах/Хурайнгуулах
    * Аюулгүй байдал

Дамжуулагч прокси нь клиент талд ажилладаг бол харин хөрвүүлэгч прокси нь сервер талд ажилладаг. Прокси серверийн энэ 2 төрөл нь хоёулаа эх үүсвэр болон очих хаягуудын хооронд хүсэлт болон хариултуудыг дамжуулдаг. 

### Прокси сервер ямар давуу талуудтай вэ? 
    * Бүх хэрэглэгч интернэтэд холбогдохдоо прокси серверээр заавал дамжин холбогдох ба хэрэглэгчдийг бүрэн удирдаж хянаж чадна.   
    * Сүлжээний IP хаягаар, хэрэглэгчийн нэрээр, цаг хугацаагаар нь хэрэглэгчдийн хандалтыг нь хязгаарладаг.
    * Хэрэглэгчдийг вэб сайтуудад зочлохыг блоклон хандалтыг нь хязгаарлах боломжтой. 
Прокси сервер нь 2 интерфэйстэй. Гадаад болон дотоод. Дотоод интерпэйс нь дотоод сүлжээнд харин гадаад интерпэйс нь DSL модем, кабель эсвэл утасны шугамаар интернэтэд холбогддог. Энэ нь зөвхөн ганц гадаад сүлжээний хаягыг агуулдаг. Гадаад интерпэйс нь пакетыг өөр дээгүүрээ дамжуулалт хийж дотоод сүлжээнд холбогдсон хэрэглэгчдийн хүсэлтүүдийг хүлээн авна. 
  
## Squid-ийн тухай 

Squid-ийг анх 1990 ээд оны үед Harvest Cache Daemon гэдэг хүн үндэслэсэн. Squid нь товчоор хэлвэл Proxy server-ийн нэг гол апликайшн болж ажиллах ба прокси сервер суулган ашигладаг. FTP,HTTP,HTTPS өгөгдлийн обьектийг дэмждэг бөгөөд эдгээрийн зурвасын өргөнийг нэмэгдүүлэх болон цаг хэмнэн вэб хуудсуудын хүсэлтийг нөөцлөх гэхдээ жирийн нэг нөөцөлдөг програм хангамж биш.Squid нь дан ганц блок хийхгүй I/O input -driven process-ийн бүх хүсэлтийг авдаг.Squid нь шуурхай санах ойдоо өгөгдлийг өөрчилж хадгалах ба өгөгдлийн амжилтгүй болсон хүсэлтийг нөөцөлдөггүй.Squid-ийн давуу тал нь нөөцлөлт хийдэг юм.Нөөцлөх үйлдэл нь олон дахин дуудагдсан вэб хуудасыг прокси серверийнхээ өөрийн харданд нөөцлөн авдаг ингэснээр дахин тухайн хуудсыг дуудахад өөрийн харднаасаа маш хурдан дууддаг.Squid нөөцлөлт нь зурвасын өргөнийг нэмэлт торон бүрхэвчээр цэгцэлж хадгалдаг. Squid сервер програмийн гол бүтэц нь DNS(Domain name system) lookup програм буюу DNS сервер болон зарим нэг options Authentication, client management tool-үүд байдаг. Squid server ажиллаж байх үед дан ганц blocking domain name system lookup гүйцэтгэх бүрт dns server-ийн процессийн дугаар өсөн нэмэгдэж байдаг. Иймээс DNS lookup нь cache хийх програм хангамж нь Линукс үйлдлийн систем болон  Windows OS-д ашиглагддаг. 

### Squid-ийг дэмждэг үйлдлийн системүүдийг танилцуулахад 
     * Linux                             * IRIX
     * FreeBSD                           * SunOS/Solaris
     * NetBSD                            * NeXTStep 
     * OpenBSD                           * SCO Unix 
     * BSDI                              * AIX 
     * Mac OS/X                          * HP-UX
     * OSF/Digital Unix/Tru64            * OS/2

     
## IP Tables 
Линукс үйлдлийн системийн firewall буюу галт ханын үүргийг ихэнх тохиолдолд 2.4 хувилбартай анх орсон iptables гэдэг програм гүйцэтгэдэг. Галт хана нь сүлжээний халдлагаас хамгаалах зориулалттай юм. iptables нь өөр руу нь орж байгаа, өөрөөс нь гарч байгаа, өөрөөр нь дамжин өнгөрч байгаа пакетуудтай хэрхэн ажилладаг талаарх дүрмүүдийн цогцыг агуулсан хүснэгтүүд(table)-ээс бүрдэх ба тэдгээр хүснэгтүүд нь дүрмүүдийн цогц буюу дарааллуудаас бүрдэнэ. iptables нь filter, nat, mangle, гэсэн 3 хүснэгттэй. 
# Filter хүснэгт нь пакетад шүүлт хийх үүрэгтэй бөгөөд оролт, гаралт, дамжуулах гэсэн 3 дарааллаас бүрдэнэ. Оролтын дараалал нь тухайн                  линукс систем руу орж ирж байгаа пакетанд, гаралтын дараалал нь тухайн линукс системээс гарч байгаа пакетанд, дамжуулалт дараалал нь тухайн линукс системээр дамжин өнгөрч байгаа пакетуудад шүүлт хийх үүрэгтэй. 
# NAT-хүснэгт нь дакетийн хаяганд хөрвүүлэлт хийх үүрэгтэй бөгөөд PREROUTING, POSTROUTING8 OUTPUT гэсэн 3 дарааллаас бүрдэнэ.PREROUTING дараалал нь чиглүүлэлт хийхээс өмнө хүлээн авагчийн хаягийг солих, POSTROUTING дараалал нь чиглүүлэлт хийгдсэний дараа илгээгч хаягийг солих, OUTPUT дараалал нь өөрөөсөө гарч байгаа пакетанд хаягийн хөрвүүлэлт хйих үүрэгтэй. 
# Mangle энэ нь ерөнхийдөө filter ба nat хүснэгтийг нэгтгэсэн бөгөөд өөртөө PREROUTING ,OUTPUT, FORWARD, INPUT, POSTROUTING эдгээрийг агуулна. 
    
    * INPUT -энэ нь пакетын оролтонд нь филтер хийнэ. 
    * OUTPUT - энэ нь пакетын гаралтанд нь филтер хийнэ.

### IP Tables комманд : 
Тохиргооны үндсэн файлууд нь:
    
    * /etc/init.d/iptables - iptables-ийг зогсоох, ажиллуулах, дахин ачаалах, INIT скрипт байна. 
    * /var/lib/iptables - Идэвхитэй ба идэвхигүй iptables - хадгалалтын counter файлуудад байрлана.
    * /var/lib/iptables/active- Идэвхитэй Counters
    * /var/lib/iptables/inactive -Идэвхигүй Counters 
    * /sbin/iptables - Удирдлагын хэрэгсэл

iptables коммандын бичлэг нь:
    iptables command[option ... option] jump гэсэн хэлбэртэй байдаг.
 
command талбар нь: -A -chain-ий сүүлд дүрмийг нэмнэ. 

* INPUT chain-ий дүрмүүдийн төгсгөлд бүх пакетыг хориглох дүрмийг нэмэхийн тулд дараах командыг бичнэ.
    iptables -A INPUT -j DROP
 
* -I -chain-ийн өгөгдсөн байрлалд дүрмийг нэмнэ.
* INPUT chain-ий дүрмүүдийн 5-р мөрөнд бүх пакетийг хориглох дүрмийг нэмэхийн тулд дараах командыг бичнэ.
    iptables -I INPUT 5 -j DROP 
* Хэрэв дүрмийн нэмэх байрлалыг тусгайлан зааж өгөөгүй бол chain дэх дүрмүүдийн эхэнд нэмнэ. 
* -D -chain-ээс өгөгдсөн дүрмийг хасна. 
* INPUT chain-ээс бүх пактыг хориглох дүрмийг устгахын тулд дараах командыг бичнэ. 
    iptables -D INPUT -j DROP
* -F -өгөгдсөн chain дэх бүх дүрмийг устгана. 
* filter table-ийн INPUT chain дэх дүрмүүдийг устгахын тулд дараах коммандыг бичнэ. 
    iptables -L INPUT 
* -P -default дүрмийг тодорхойлно. 
* filter table-ийн INPUT chain-ий default дүрмийг хаягдах гэж тодорхойлохын тулд дараах коммандыг бичнэ. 
    iptables -P INPUT DROP

### Option талбар нь: 

   -t -table-ийг тодорхойлно
   -j -үйлдлийг тодорхойлно
   -p -протоколыг тодорхойлно
   --sport - тухайн протоколын source портыг тодорхойлно
   --drop - тухайн протоколын хүлээн авах портыг тодорхдйлно
   -s - илгээгч хаягийг тодорхойлно
   -d - хүлээн авагч хаягийг тодорхойлно
   -i - пакет орж ирэх интерфэйсийг тодорхойлно
   -o - пакет гарах интерфэйсийг тодорхойлно

Жишээ :
  iptables -A INPUT -p tcp --drop 80 -i eth0 -j ACCEPT
eth0 интерфэйсээр орж ирсэн уг компютер руу чиглэсэн вэб хандалтуудыг зөвшөөрнө.
тухайн компьютераас 5000 гэсэн эх портоос tcp протоколоор хандаж буй хандалтыг хориглоно. 
  iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE 
тухайн компьютераар дамжин өнгөрч буй 10.1.1.0 255.255.255.0 сүлжээнээс ирсэн пакетуудын эх хаягийг eth0 интерфэйсийнхээ хаягаар солино.

## Гадаад холбоос 
*https://web.archive.org/web/20160323195707/http://free-proxyserver.com/
*http://www.publicproxyservers.com/
*https://web.archive.org/web/20151130203212/http://trafficserver.readthedocs.org/en/5.3.x/admin/forward-proxy.en.html
*https://web.archive.org/web/20190502171858/https://www.citrix.com/blogs/2010/10/04/reverse-vs-forward-proxy/
*https://www.quora.com/Whats-the-difference-between-a-reverse-proxy-and-forward-proxy

Ангилал:МТ-Архитектур
Ангилал:Сервер
Ангилал:Аноним байдал
Ангилал:Компьютерын сүлжээнүүд