12.12.2010

Proxy server-н талаар

Proxy server

IPv4 хаягийн нөөц бага байгаагаас олон зуун хосттой сүлжээ 1 гадаад хаягын доор интернэтдлүү хандах болсон. Тэгвэл 1 гадаад хаягийг олон хостууд дундаа хэрэглэн интернэтрүү хандах боломжийг олгодог сервэр нь Proxy сервэр юм.

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 болгож болно)

Proxy сервэрийн давуу тал

· Гадаад хаягийг үр ашигтай хэрэглэдэг

· Сүлжээний аюулгүй байдалд тустай. Учир нь хэрэв хост нь замчлал хийгдэх боломжгүй дотоод IP хаягтай бол түүнлүү интернэтээс шууд хандахад хүндрэлтэй болно

· Cable/DSL router худалдаж авахын оронд түүнийг Линукс систем дээрээ proxу server суулгаад бүрэн орлуулах боломжтой

· Нэгэнт Proxy серверээ зохион байгуулсан бол dyndns.org-г ашиглан өөрийн веб болон mail сервэр-тэй болж болно. (Web server-тэй болсон бол Web Cam server-г хялбархан нэмнэ)

Жич: Linux Proxy server-үүдээс хамгийн түгээмэл хэрэглэгддэг Squid proxy server-н хувьд “caching proxy server”-тэй юм. Cache server гэдэг нь web browser-н хамгийн сүүлд үзсэн Web site-г proxy server-н локал хард дээр хадгалан ахин тэр хуудсыг үзэх хүсэлт орж ирэхэд өнөөх хардаасаа хадгалсан хуудсаа дуудан үзүүлдэг.Ингэснээр сүлжээний гадагш гарах ачааллыг бууруулдаг. Маш олон хосттой сүлжээний хувьд л Caching proxy server-г ашиглах нь үр дүнтэй байдаг.

Бидний хувьд Squid болон өөр бусад апликшн, бэлэн серверийг суулгахгүй.

IPTABLES

Сүлжээгээр дамжих пакетуудыг удирдахын тулд Linux kernel 2.2 (Potato and woody) дээр IPCHAINS, Linux Kernel 2.4 (Sarge) дээр IPTABLES-г ашигладаг. IPTABLES-н command бүр нь rule (дүрэм)-тэй байдаг. Rule-үүдийн олонлогийг “ruleset” эсвэл “chain” гэнэ.

Ruleset нь зөвхөн memory-д оршин байдаг тул тухайн системийг reboot хийхэд энэхүү ruleset нь устдаг. Иймд Ruleset-н оронд Shell script-г ашигласнаар өдөр болгон тохиргоогоо гараар хийхээс зайлс хийнэ.

Доорх скриптийг /etc/init.d/proxy.sh -д 755 эрхтэйгээр хадгална.

#!/bin/sh

INTIF="eth0"

EXTIF="ppp0"

EXTIP="`/sbin/ifconfig ppp0 | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"

/sbin/depmod -a

/sbin/modprobe ip_tables

/sbin/modprobe ip_conntrack

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_conntrack_irc

/sbin/modprobe iptable_nat

/sbin/modprobe ip_nat_ftp

echo "1" > /proc/sys/net/ipv4/ip_forward

echo "1" > /proc/sys/net/ipv4/ip_dynaddr

iptables -P INPUT ACCEPT

iptables -F INPUT

iptables -P OUTPUT ACCEPT

iptables -F OUTPUT

iptables -P FORWARD DROP

iptables -F FORWARD

iptables -t nat -F

iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT

iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

Дээрх скриптийг тайлбарлавал:

Section A:

· Дотоод интерфэсийг тодорхойлох

INTIF="eth0"

· Гадаад интерфэсийг тодорхойлох

EXTIF="ppp0"

Section B:

· Хэрэв гадаад интерфэс нь static IP хаяг хэрэглэж байгаа бол EXTIP хэсэгт static IP хаягаа бичнэ.

EXTIP="Your IP Address”

Section C:

· Хэрэв гадаад интерфэс нь dynamic IP хаяг хэрэглэж байгаа бол EXTIP хэсэгт EXTIP="`/sbin/ifconfig ppp0 | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"

Жич: B, C 2-н аль нэгийг л ашиглана

#------- Энэ хэсэгт өөрчлөх өөр тохиргоо байхгүй --------#

/sbin/depmod -a

/sbin/modprobe ip_tables

/sbin/modprobe ip_conntrack

/sbin/modprobe ip_conntrack_ftp

/sbin/modprobe ip_conntrack_irc

/sbin/modprobe iptable_nat

/sbin/modprobe ip_nat_ftp

echo "1" > /proc/sys/net/ipv4/ip_forward

echo "1" > /proc/sys/net/ipv4/ip_dynaddr

#------- Урьд хийгдсэн тохиргоог устгаж, Default болгох --------#

iptables -P INPUT ACCEPT

iptables -F INPUT

iptables -P OUTPUT ACCEPT

iptables -F OUTPUT

iptables -P FORWARD DROP

iptables -F FORWARD

iptables -t nat -F

#------- Бүх гадагш гарах урсгал болон зөвхөн түүний хариуд ирэх урсгалыг л зөвшөөрнө --------#

iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT

#------- NAT (Masquarade)-г идэвхжүүлэх --------#

iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

Proxy server-ээ тестлэх

1. Хэрэв EXTIF=”ppp0” байхаар тохируулаад ppp0 нь идэвхитэй бол pon коммандаар ISP-тэйгаа холбогдоно

2. /etc/init.d/proxy.sh коммандыг ажиллуулна. Хэрэв бичиг гарж ирвэл proxy сервер маань ажиллаж байна

3. Сүлжээгээ доорхи байдалтай зохион байгуулна.

Сүлжээнийхээ Default Gatewey-г 192.168.5.1 гэж тохируулж өгнө. (Үүний дараа системийг restart хийнэ)

Тэмдэглэл: Дээр байгаа зурганаас ерөнхий бүтцийг харна уу


4. сүлжээний аль нэг хостоос “tracert www.debian.orgкоммандыг өг. Үр дүнд нь 192.168.5.1-р дамжиж байвал proxy Server зөв ажиллаж байна. (хэрэв tracert комманд ажиллахгүй байвал www.debian.org- н оронд 194.109.137.218 гэсэн IP хаягийг ашиглаад үзээрэй. Учир нь DNS-н тохиргоо болоогүй байж болно.)

Automatic startup

Бичсэн Script-ээ систем асахад автоматаар ажиллуулдаг болхын тулд Symbolic link-г үүсгэх хэрэгтэй.

ln –s /etc/init.d/proxy.sh /etc/rc.d/S95proxy

Auto-Dialing

Pon коммандаар manual-р dial хийхийн оронд sleep command-н тусламжтай automat болгож болно.

Үүнийг өмнө үүсгэсэн Script дээрээ нэмж бичиж өгнө.

Echo –e “\n\nSETTING UP TABLES PROXY…”

Echo “ Dialing internet connection…..”

/usr/bin/pon

Sleep 15

Remove Automatic startup

Rm /etc/rc2.d/S95proxy

Бидний бичсэн sctipt бол зөвхөн ерөнхий л тохиргоотой байгаа бөгөөд үүнийг өөрсдийн сүлжээний онцлогоос хамааран өөрчлөх боломжтой. Үүний тулд IPTABLES-н коммандуудаг мэддэг байх хэрэгтэй

IPTABLES-н бүх коммандуудыг тайлбартайгаар нь харах бол:

/etc/iptables –help

3 comments:

  1. Хэй ёстой баярлалаа найзаа. Их тус боллоо шүү :)
    мм Proxy ARP-ын талаар мэдээлэл оруулж өгөөч хэхэ ?

    ReplyDelete
  2. ok udahku ter talar sudlad chadhara orulay

    ReplyDelete
  3. Bayrlla ho ih heregtei medeelel bn
    Neg yum asuuy
    Proxy server.d olon hereglegch handlaa ghd web server.ees irsen medeellig hereglegchded yaaj butsaaj hariu oghu?
    Holbogdsn hereglegchin session id, eswl dynamic.aar port ntr uusgeh u?

    ReplyDelete