Thanks for the donated machine
ขอขอบคุณ คุณ wd ที่ได้สนับสนุนเครื่องคอมพิวเตอร์ตั้งโต๊ะสำหรับทำงาน หลังจากที่เคย สนับสนุนจอภาพถนอมสายตา มาแล้วครั้งหนึ่ง รู้สึกเกรงใจเพราะแจ้งไปบอกไม่ทัน ว่าผมได้แก้ปัญหาด้วยวิธีเปลี่ยนฮาร์ดดิสก์แล้ว แต่คุณ wd ได้จัดหาไปเรียบร้อยแล้ว
รับเครื่องมาแล้ว ก็คงพยายามใช้ทำงานให้เกิดประโยชน์สูงสุดนะครับ ตอนนี้ผมก็ลง apt-cacher-ng ที่เครื่องนี้แทนโน้ตบุ๊กไปแล้ว (คุณ wd ติดตั้ง Debian พร้อม apt-proxy มาให้เสร็จสรรพ แต่พอดีว่าผมลอง apt-cacher-ng มาแล้วพักหนึ่ง รู้สึกว่าทำงานได้ดี ก็เลยลงตัวนี้ใช้แทน) พร้อมทั้งลง squid3 ไว้เป็น HTTP proxy ในบ้านด้วย ใช้กันสองคนกับแม่ คงไม่ได้ช่วยอะไรเท่าไรในแง่การใช้แบนด์วิดท์ แต่ถือเป็นห้องแล็บสำหรับทำระบบเครือข่าย
Pidgin กับ Squid
แล้วก็เจอปัญหาแรก คือเมื่อตั้ง HTTP proxy ใน GNOME ที่เครื่องลูกข่ายแล้ว ปรากฏว่า Pidgin ไม่สามารถเชื่อมต่อกับ ICQ และ GTalk ได้ โดยมีข้อความฟ้องในทำนองว่า:
Could not connect to authentication server: Access denied: HTTP proxy server forbids port 5190 tunneling.
อันนี้สำหรับ ICQ ส่วน GTalk ก็ฟ้องที่พอร์ต 5222 แทน แต่สามารถออนไลน์ GTalk ผ่าน web interface ของ Gmail ได้นะครับ แสดงว่า Pidgin มันใช้วิธีไม่เหมือนชาวบ้าน
พยายามหาทางแก้ที่ Squid อยู่นาน หาไม่เจอ ในเว็บก็เจอแต่คนถามวิธี block ส่วนคำถามเรื่องวิธีอนุญาตไม่ค่อยมี
ในที่สุด ก็เจอทางออก โดยเลิกพยายามแก้ที่ Squid แต่หันมาแก้ที่ Pidgin แทน โดยไปที่เมนู "บัญชีผู้ใช้" > "Manage" แล้วก็แก้ไขบัญชีผู้ใช้เป็นตัว ๆ ไป โดยในกล่องโต้ตอบ "แก้ไขบัญชีผู้ใช้" ก็ไปที่แท็บ "ระดับสูง" แล้วเลือกชนิดพร็อกซีเป็น "ไม่ใช้พร็อกซี" จากนั้นก็จะสามารถเชื่อมต่อโดยไม่ผ่าน Squid ได้
กรณีนี้ทำให้คิดว่า "แล้วคนที่ใช้ transparent Squid proxy ล่ะ จะไม่มีปัญหาเหรอ?" เพราะไม่ว่าจะ config Pidgin ยังไงก็จะผ่าน Squid อยู่ดี เรื่องนี้ densin ใน #tlwg บอกว่าไม่มีปัญหา ผมเองก็คิดว่าเคยใช้โดยไม่มีปัญหา หลังจากคิดไปสักพักก็นึกได้ ว่าเวลาทำ transparent proxy นั้น เขาจะตั้ง netfilter rules ให้ forward พอร์ต 80 เข้า Squid เท่านั้นนี่หว่า.. ส่วนพอร์ตอื่น ๆ ที่ IM ใช้ ก็จะผ่านไปที่ netfilter ออกข้างนอกโดยไม่ผ่าน Squid อยู่แล้ว แต่สำหรับกรณีผม ไปตั้ง HTTP proxy ของทั้งเดสก์ท็อปให้ไปออก Squid เสมอ ก็เลยโดนทุกพอร์ต สรุปว่าได้คำตอบด้วยประการฉะนี้
Calamaris
อีกปัญหาหนึ่งคือ calamaris ซึ่งเป็นเครื่องมือรายงานสถิติจาก log ของ Squid นั้น ไม่สามารถสร้างกราฟได้ แม้จะลง libgd-graph-perl
และปรับค่าต่าง ๆ ตามที่แนะนำใน README.Debian
(พร้อม hack เล็กน้อยให้อ่าน log ของ squid3 ซึ่งอยู่คนละที่กับ squid 2.x) แล้ว โดยเมื่อสั่งรัน cron job จะเจอข้อความ error ดังนี้:
# /etc/cron.daily/calamaris Use of uninitialized value in concatenation (.) or string at /usr/bin/calamaris line 4083, <> line 625. Use of uninitialized value in concatenation (.) or string at /usr/bin/calamaris line 4115, <> line 625. Use of uninitialized value in concatenation (.) or string at /usr/bin/calamaris line 4115, <> line 625. Can't call method "png" on an undefined value at /usr/bin/calamaris line 4128, <> line 625.
ว่าแล้วก็ค้นใน Debian BTS ก็ไปเจอ Debian #501396 มีคนเจอปัญหาเดียวกันเป๊ะ แต่ปรากฏว่ายังไม่มี solution ฮ่วย! ว่าจะจิ๊กมาใช้ซะหน่อย :-(
ไม่เป็นไร hack เองก็ได้ฟะ หลังจากแทรกโค้ดให้มัน print โน่น print นี่มาให้ดู ก็พบว่าข้อมูลที่มันส่งให้ GD graph มันเป็นแอร์เรย์ว่างเปล่า ไม่มีข้อมูล เลยคิดว่าน่าจะมีอะไรผิดพลาดตอนเตรียมข้อมูล จนในที่สุดก็ได้ patch เสนอเขาไป
ก็ถือเป็นอานิสงส์ข้อแรกที่ได้จากเครื่องที่คุณ wd ให้มาละครับ คือได้ทำอะไรที่เป็นประโยชน์ต่อ Debian บ้าง :-)
ป้ายกำกับ: calamaris, debian, life, network, pidgin, squid, thanks
3 ความเห็น:
ณ 27 กุมภาพันธ์ 2552 เวลา 19:41 , ไม่ระบุชื่อ แถลง…
acl SSL_ports port 443 563 # https, snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
...
acl Safe_ports port 1025-65535 #
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
default config ของ squid มันจะ block non-ssl port ตามข้างบน.
วิธีแก้ก็แค่ comment บรรทัด "http_access deny CONNECT !SSL_ports" ออกไปซะ.
----
อานนท์
ณ 11 เมษายน 2552 เวลา 12:16 , Thep แถลง…
เพิ่งได้โอกาสลองทำดู ได้ผล ขอบคุณครับ
ณ 11 เมษายน 2552 เวลา 12:31 , Thep แถลง…
ผมดัดแปลงเป็นอย่างนี้แทน:
acl Connectable_ports port 443 # SSL
acl Connectable_ports port 5190 # ICQ
...
http_access deny CONNECT !Connectable_ports
แล้วก็เปิดให้ connect port ได้เป็นตัว ๆ ไป แทนที่จะเปิดทั้งหมด (สำหรับ gtalk และ yahoo ไม่จำเป็น เพราะดูเหมือนใช้ SSL อยู่แล้ว)
แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)
<< กลับหน้าแรก