ວິທີການສ້າງ HTTP Proxy ໂດຍໃຊ້ Squid ໃນ CentOS 7/8


ໂປແກຼມໂປແກຼມໂປແກຼມເວັບໄດ້ມີມາເປັນເວລາຂ້ອນຂ້າງແລ້ວແລະຖືກ ນຳ ໃຊ້ໂດຍຜູ້ໃຊ້ຫລາຍລ້ານຄົນທົ່ວໂລກ. ພວກເຂົາມີຈຸດປະສົງທີ່ຫລາກຫລາຍ, ທີ່ເປັນທີ່ນິຍົມທີ່ສຸດແມ່ນການປິດບັງຊື່ທາງອິນເຕີເນັດ, ແຕ່ມີອີກວິທີອື່ນທີ່ທ່ານສາມາດໃຊ້ປະໂຫຍດຈາກໂປແກຼມໂປຼແກຼມໂປຼແກຼມຕ່າງໆ. ນີ້ແມ່ນຄວາມຄິດບາງຢ່າງ:

  • ການປິດບັງຊື່ທາງອິນເຕີເນັດ
  • ປັບປຸງຄວາມປອດໄພທາງອິນເຕີເນັດ
  • ປັບປຸງເວລາໃນການໂຫຼດ
  • ຂັດຂວາງການຈະລາຈອນທີ່ເປັນອັນຕະລາຍ
  • ເຂົ້າສູ່ລະບົບ online ຂອງທ່ານ
  • ເພື່ອຫລີກລ້ຽງຂໍ້ ຈຳ ກັດໃນພາກພື້ນ
  • ໃນບາງກໍລະນີສາມາດຫຼຸດຜ່ອນການ ນຳ ໃຊ້ແບນວິດ

ເຊີຟເວີຕົວແທນແມ່ນຄອມພິວເຕີ້ທີ່ໃຊ້ເປັນຕົວກາງລະຫວ່າງລູກຄ້າແລະເຄື່ອງແມ່ຂ່າຍອື່ນໆທີ່ລູກຄ້າອາດຈະຂໍຊັບພະຍາກອນ. ຕົວຢ່າງທີ່ງ່າຍໆຂອງສິ່ງນີ້ແມ່ນເມື່ອລູກຄ້າເຮັດການຮ້ອງຂໍທາງອິນເຕີເນັດ (ຕົວຢ່າງຕ້ອງການເປີດ ໜ້າ ເວບໄຊທ໌), ລາວເຊື່ອມຕໍ່ກັບ server server ກ່ອນ.

ເຄື່ອງແມ່ຂ່າຍຕົວແທນຫຼັງຈາກນັ້ນກວດເບິ່ງ cache ຂອງແຜ່ນທ້ອງຖິ່ນຂອງມັນແລະຖ້າຂໍ້ມູນສາມາດພົບເຫັນຢູ່ບ່ອນນັ້ນ, ມັນຈະສົ່ງຂໍ້ມູນຄືນໃຫ້ກັບລູກຄ້າ, ຖ້າບໍ່ມີຖານຄວາມ ຈຳ, ມັນຈະເຮັດໃຫ້ການຮ້ອງຂໍໃນນາມຂອງລູກຄ້າໂດຍໃຊ້ທີ່ຢູ່ IP ຂອງຕົວແທນ (ແຕກຕ່າງຈາກ ລູກຄ້າ) ແລະຫຼັງຈາກນັ້ນສົ່ງຄືນຂໍ້ມູນໃຫ້ກັບລູກຄ້າ. ເຊີຟເວີຕົວແທນຈະພະຍາຍາມທີ່ຈະເກັບຂໍ້ມູນ ໃໝ່ ແລະຈະໃຊ້ມັນເພື່ອການຮ້ອງຂໍໃນອະນາຄົດທີ່ເຮັດກັບເຄື່ອງແມ່ຂ່າຍດຽວກັນ.

Squid ແມ່ນຕົວແທນເວັບທີ່ໃຊ້ອົງກອນຕ່າງໆຂອງຂ້ອຍ. ມັນມັກຖືກໃຊ້ເປັນຕົວແທນແຄດແລະປັບປຸງເວລາຕອບສະ ໜອງ ແລະຫຼຸດຜ່ອນການ ນຳ ໃຊ້ແບນວິດ.

ສຳ ລັບຈຸດປະສົງຂອງບົດຄວາມນີ້, ຂ້ອຍຈະຕິດຕັ້ງ Squid ຢູ່ໃນ Linode CentOS 7 VPS ແລະໃຊ້ມັນເປັນເຊີຟເວີ HTTP proxy.

ວິທີການຕິດຕັ້ງ Squid ໃນ CentOS 7/8

ກ່ອນທີ່ພວກເຮົາຈະເລີ່ມຕົ້ນ, ທ່ານຄວນຮູ້ວ່າ Squid, ບໍ່ມີຂໍ້ ກຳ ນົດຂັ້ນຕ່ ຳ, ແຕ່ປະລິມານການ ນຳ ໃຊ້ RAM ອາດຈະແຕກຕ່າງກັນໄປຕາມລູກຄ້າທີ່ທ່ອງອິນເຕີເນັດຜ່ານ server server.

Squid ແມ່ນລວມຢູ່ໃນຖານຂໍ້ມູນພື້ນຖານແລະດັ່ງນັ້ນການຕິດຕັ້ງແມ່ນງ່າຍດາຍແລະກົງໄປກົງມາ. ຢ່າງໃດກໍ່ຕາມກ່ອນທີ່ຈະຕິດຕັ້ງມັນ, ໃຫ້ແນ່ໃຈວ່າແພັກເກດຂອງທ່ານລ້າສຸດໂດຍການເຮັດວຽກ.

# yum -y update

ດໍາເນີນການໂດຍການຕິດຕັ້ງກຸ້ງ, ເລີ່ມຕົ້ນແລະເປີດໃຊ້ງານມັນໃນລະບົບເລີ່ມຕົ້ນໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

# yum -y install squid
# systemctl start squid
# systemctl  enable squid

ໃນຈຸດນີ້, ຕົວແທນເວັບໄຊຕ໌ Squid ຂອງທ່ານຄວນຈະເຮັດວຽກຢູ່ແລ້ວແລະທ່ານສາມາດກວດສອບສະຖານະຂອງການບໍລິການກັບ.

# systemctl status squid
 squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-09-20 10:07:23 UTC; 5min ago
 Main PID: 2005 (squid)
   CGroup: /system.slice/squid.service
           ├─2005 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─2007 (squid-1) -f /etc/squid/squid.conf
           └─2008 (logfile-daemon) /var/log/squid/access.log

Sep 20 10:07:23 tecmint systemd[1]: Starting Squid caching proxy...
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: will start 1 kids
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: (squid-1) process 2007 started
Sep 20 10:07:23 tecmint systemd[1]: Started Squid caching proxy.

ນີ້ແມ່ນບາງສະຖານທີ່ເອກະສານທີ່ ສຳ ຄັນທີ່ທ່ານຄວນຮັບຮູ້:

  • ເອກະສານການຕັ້ງຄ່າ Squid: /etc/squid/squid.conf
  • Squid Access log: /var/log/squid/access.log
  • ບັນຊີ Squid Cache: /var/log/squid/cache.log

ຕ່ ຳ ສຸດຂອງເອກະສານການຕັ້ງຄ່າ squid.conf (ໂດຍບໍ່ມີ ຄຳ ເຫັນໃນມັນ) ເບິ່ງຄືວ່າ:

acl localnet src 10.0.0.0/8	# RFC1918 possible internal network
acl localnet src 172.16.0.0/12	# RFC1918 possible internal network
acl localnet src 192.168.0.0/16	# RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern .		0	20%	4320

ການຕັ້ງຄ່າ Squid ເປັນ HTTP Proxy

ນີ້, ພວກເຮົາຈະສະແດງວິທີການຕັ້ງຄ່າ squid ເປັນຕົວແທນ HTTP ໂດຍໃຊ້ພຽງແຕ່ IP address ຂອງລູກຄ້າ ສຳ ລັບການກວດສອບຄວາມຖືກຕ້ອງ.

ຖ້າທ່ານຕ້ອງການທີ່ຈະອະນຸຍາດໃຫ້ທີ່ຢູ່ IP ເຂົ້າເຖິງເວັບຜ່ານເຊີຟເວີຕົວແທນ ໃໝ່ ຂອງທ່ານ, ທ່ານຈະຕ້ອງເພີ່ມສາຍ ACL (ເຂົ້າເຖິງບັນຊີຄວບຄຸມ) ໃນເອກະສານການຕັ້ງຄ່າ.

# vim /etc/squid/squid.conf

ສາຍທີ່ທ່ານຄວນເພີ່ມແມ່ນ:

acl localnet src XX.XX.XX.XX

ບ່ອນທີ່ XX.XX.XX.XX ແມ່ນທີ່ຢູ່ IP ຂອງລູກຄ້າທີ່ທ່ານຕ້ອງການເພີ່ມ. ສາຍຄວນຈະຖືກເພີ່ມເຂົ້າໃນຕອນຕົ້ນຂອງເອກະສານບ່ອນທີ່ ACLs ຖືກ ກຳ ນົດ. ມັນເປັນການປະຕິບັດທີ່ດີທີ່ຈະເພີ່ມ ຄຳ ເຫັນຕໍ່ ACL ເຊິ່ງຈະອະທິບາຍວ່າໃຜໃຊ້ທີ່ຢູ່ IP ນີ້.

ມັນເປັນສິ່ງສໍາຄັນທີ່ຄວນສັງເກດວ່າຖ້າ Squid ຕັ້ງຢູ່ນອກເຄືອຂ່າຍທ້ອງຖິ່ນຂອງທ່ານ, ທ່ານຄວນເພີ່ມທີ່ຢູ່ IP ຂອງລູກຄ້າ.

ທ່ານຈະຕ້ອງເລີ່ມ Squid ຄືນ ໃໝ່ ເພື່ອໃຫ້ການປ່ຽນແປງ ໃໝ່ ມີຜົນບັງຄັບໃຊ້.

# systemctl  restart squid

ດັ່ງທີ່ທ່ານອາດຈະໄດ້ເຫັນໃນເອກະສານການຕັ້ງຄ່າ, ມີພຽງແຕ່ພອດໃດ ໜຶ່ງ ທີ່ຖືກອະນຸຍາດ ສຳ ລັບເຊື່ອມຕໍ່. ທ່ານສາມາດເພີ່ມເຕີມໄດ້ໂດຍການແກ້ໄຂເອກະສານການຕັ້ງຄ່າ.

acl Safe_ports port XXX

ບ່ອນທີ່ XXX ແມ່ນພອດຈິງທີ່ທ່ານຕ້ອງການໂຫລດ. ອີກເທື່ອ ໜຶ່ງ ມັນເປັນຄວາມຄິດທີ່ດີທີ່ຈະອອກ ຄຳ ເຫັນຕໍ່ໄປເຊິ່ງຈະອະທິບາຍວ່າທ່າເຮືອຈະໃຊ້ຫຍັງ.

ສຳ ລັບການປ່ຽນແປງທີ່ຈະມີຜົນ, ທ່ານ ຈຳ ເປັນຕ້ອງໄດ້ກັບຄືນສູ່ປາຫມຶກອີກຄັ້ງ.

# systemctl  restart squid

ທ່ານອາດຈະຕ້ອງການໃຫ້ຜູ້ໃຊ້ຂອງທ່ານກວດສອບຄວາມຖືກຕ້ອງກ່ອນທີ່ຈະໃຊ້ຕົວແທນ. ເພື່ອຈຸດປະສົງນັ້ນ, ທ່ານສາມາດເປີດໃຊ້ການກວດສອບ HTTP ຂັ້ນພື້ນຖານ. ມັນງ່າຍແລະໄວໃນການຕັ້ງຄ່າ.

ກ່ອນອື່ນ ໝົດ, ທ່ານ ຈຳ ເປັນຕ້ອງຕິດຕັ້ງເຄື່ອງມື httpd-install.

# yum -y install httpd-tools

ບັດນີ້ໃຫ້ສ້າງເອກະສານທີ່ຈະເກັບຮັກສາຊື່ຜູ້ໃຊ້ຕໍ່ມາ. Squid ເຮັດວຽກກັບຜູ້ໃຊ້“ squid” ສະນັ້ນເອກະສານຄວນຈະເປັນເຈົ້າຂອງໂດຍຜູ້ໃຊ້ນັ້ນ.

# touch /etc/squid/passwd
# chown squid: /etc/squid/passwd

ຕອນນີ້ພວກເຮົາຈະສ້າງຜູ້ໃຊ້ ໃໝ່ ທີ່ມີຊື່ວ່າ "proxyclient" ແລະຕັ້ງລະຫັດຜ່ານຂອງມັນ.

# htpasswd /etc/squid/passwd proxyclient

New password:
Re-type new password:
Adding password for user proxyclient

ຕອນນີ້ເພື່ອ ກຳ ນົດການກວດສອບຄວາມຖືກຕ້ອງເປີດເອກະສານການຕັ້ງຄ່າ.

# vim /etc/squid/squid.conf

ຫຼັງຈາກທີ່ Port ACLs ເພີ່ມສາຍຕໍ່ໄປນີ້:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

ຊ່ວຍປະຢັດເອກະສານແລະເລີ່ມຕົ້ນກະປູເພື່ອໃຫ້ການປ່ຽນແປງ ໃໝ່ ມີຜົນ:

# systemctl restart squid

ສຸດທ້າຍ, ພວກເຮົາຈະສ້າງ ACL ສຸດທ້າຍ ໜຶ່ງ ທີ່ຈະຊ່ວຍພວກເຮົາກີດຂວາງເວັບໄຊທ໌ທີ່ບໍ່ຕ້ອງການ. ກ່ອນອື່ນ ໝົດ, ສ້າງເອກະສານທີ່ຈະເກັບສະຖານທີ່ທີ່ຖືກບັນຊີ ດຳ.

# touch /etc/squid/blacklisted_sites.acl

ທ່ານສາມາດເພີ່ມບາງໂດເມນທີ່ທ່ານຕ້ອງການບລັອກ. ຍົກຕົວຢ່າງ:

.badsite1.com
.badsite2.com

ຈຸດ ດຳ ເນີນຄະດີບອກ squid ເພື່ອສະກັດເອກະສານອ້າງອີງທັງ ໝົດ ໃນເວັບໄຊດັ່ງກ່າວລວມທັງ www.badsite1, subsite.badsite1.com, ແລະອື່ນໆ.

ຕອນນີ້ເປີດເອກະສານການຕັ້ງຄ່າຂອງ Squid.

# vim /etc/squid/squid.conf

ພຽງແຕ່ຫລັງຈາກທີ່ Port ACLs ເພີ່ມສອງສາຍຕໍ່ໄປນີ້:

acl bad_urls dstdomain "/etc/squid/blacklisted_sites.acl"
http_access deny bad_urls

ດຽວນີ້ບັນທຶກເອກະສານແລະເລີ່ມຕົ້ນກະປອງ:

# systemctl restart squid

ເມື່ອທຸກຢ່າງໄດ້ຕັ້ງຄ່າຢ່າງຖືກຕ້ອງ, ດຽວນີ້ທ່ານສາມາດ ກຳ ນົດ browser browser ໃນທ້ອງຖິ່ນຂອງທ່ານຫລືລະບົບເຄືອຂ່າຍປະຕິບັດການຂອງລະບົບປະຕິບັດການເພື່ອໃຊ້ proxy squid ຂອງທ່ານ.

ໃນບົດແນະ ນຳ ນີ້, ທ່ານໄດ້ຮຽນຮູ້ວິທີຕິດຕັ້ງ, ຮັບປະກັນແລະຕັ້ງຄ່າເຊີຟເວີ Squid HTTP Proxy ດ້ວຍຕົວເອງ. ດ້ວຍຂໍ້ມູນທີ່ທ່ານຫາກໍ່ໄດ້ຮັບ, ຕອນນີ້ທ່ານສາມາດເພີ່ມການກັ່ນຕອງຂັ້ນພື້ນຖານບາງຢ່າງ ສຳ ລັບການຈະລາຈອນທີ່ເຂົ້າມາແລະທາງຜ່ານ Squid.

ຖ້າທ່ານຕ້ອງການທີ່ຈະເຂົ້າໄປໃນໄມພິເສດ, ທ່ານຍັງສາມາດຕັ້ງຄ່າກຸ້ງເພື່ອກີດຂວາງບາງເວັບໄຊທ໌ໃນເວລາເຮັດວຽກເພື່ອປ້ອງກັນການລົບກວນ. ຖ້າທ່ານມີ ຄຳ ຖາມຫຼື ຄຳ ເຫັນ, ກະລຸນາຂຽນລົງໃນສ່ວນ ຄຳ ເຫັນຂ້າງລຸ່ມ.