Network

อัดรูปดิจิตอล ทำสมุดภาพของคุณเอง
รอรับได้. ท่องเที่ยว แต่งงาน ฯลฯ

www.tanabutr.co.th/photobook


NAT แบบเร็วๆ

พอดี router แบบ wireless ที่บ้านเสียเลยต้องใช้ router billion ที่มันมี LAN interface ตัวเดียวต่อกับเครื่อง desktop Ubuntu ส่วนเครื่องโน้ตบุคที่เคยใช้ wireless ก็ใช้ไม่ได้ wireless แล้ว. เผอิญ desktop มี LAN card สองตัวเลยทำ NAT ให้เครื่องโน้ตบุคต่อผ่านแบบเร็วๆ

ทำด้วยมือก่อน

ใช้ ange-ftp กับ emacs

เมื่อวานเขียน PHP แล้วรู้สึกว่า emacs มันไม่มี php-mode เลยไปลองหาดูจาก google ว่ามันน่าจะมีใครทำมานะ แล้วก็มีจริงๆด้วย. พอจะดาว์นโหลดมาใช้ก็เอะใจว่ามันน่าจะมีแพ็กเกจใน Debian อยู่แล้วเลยลอง

# apt-cache search php | grep emacs

rbash กับ sftp



dpkg-reconfigure scponly

เมื่อวานพยายามจะเซ็ต account ในลินุกซ์ให้คนใช้ upload/download ด้วย sftp. ปรกติถ้าเป็น user ธรรมดาเวลาล็อกอินเข้ามาด้วย sftp จะสามารถเปลี่ยนไดเรกทอรีที่อยู่เหนือโฮมไดเรกทอรีของตัวเองด้วย. ก็เลยทำให้นึกถึง restrict bash ซึ่งถ้าเซ็ตให้เป็นเชลล์ของ user นั้นแล้วก็จะจำกัดการใช้งานต่างๆได้เช่น ไม่สามารถเปลี่ยนไดเรกทอรีไปที่อื่นนอกจากโฮมไดเรกทอรีของตัวเอง ฯลฯ.

จัดระเบียบ ssh, smbfs ใน coLinux

วันก่อน mount โฟลเดอร์ c:\cygwin\home\poonlap ไปไว้ที่ /home/poonlap โดยใช้ samba. ใช้ได้ไม่นานก็พอว่ามันไม่ดีเท่าไรนัก. คือในโฟลเดอร์ c:\cygwin\home\poonlap ก็มีไฟล์ตั้งค่าเริ่มต้นต่างๆของเชลล์บ้าง, X บ้าง, ssh บ้าง ซึ่งมันไปตีกัน. เลยจับแยกดีกว่า.

coLinux ตอนที่ 2

อาทิตย์ที่แล้วแนะนำ การติดตั้ง coLinux ไปแล้ว, ส่วนวันนี้จะมาดูเรื่องการปรับแต่งต่างๆไปเรื่อยๆครับ.

ตัว coLinux มันจะมีเน็ตเวิร์กอินเทอรเฟส eth0 และก็มี IP เป็น 192.168.0.40 ตั้งไว้ให้เรียบร้อยแล้ว. ตรงนี้ให้ลองเช็คในไฟล์ /etc/network/interface ใน coLinux ดูก็ได้. อินเทอร์เฟส eth0 นี้จะเชื่อมต่อกับ TAP Win32 ของวินโดวส์. ถ้าเราตั้ง IP ให้ TAP Win32 บนวินโดวส์เป็น 192.168.0.x ก็จะทำให้วินโดวส์กับ coLinux ติดต่อกันได้ (คือตั้ง IP ให้อยู่ในวงเดียวกัน). สมมติว่าเราตั้งค่าให้ TAP Win32 มี IP เป็น 192.168.0.1 จาก command prompt ของวินโดวส์ก็จะ ping ไปหา coLinux ได้.

C:\Documents and Settings\poonlap>ping 192.168.0.40

Pinging 192.168.0.40 with 32 bytes of data:

Reply from 192.168.0.40: bytes=32 time=7ms TTL=64
Reply from 192.168.0.40: bytes=32 time<1ms TTL=64
Reply from 192.168.0.40: bytes=32 time<1ms TTL=64
Reply from 192.168.0.40: bytes=32 time<1ms TTL=64

Ping statistics for 192.168.0.40:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 7ms, Average = 1ms

ให้ระวังเรื่อง Firewall ของวินโดวส์ด้วยไม่เช่นนั้นอาจจะ ping แล้วไม่มีการตอบกลับ.

การเน็ตเวิร์กแบบนี้เป็นการติดต่อกันระหว่างเครื่อง Windows กับ coLinux เท่านั้น, ถ้าจะให้ coLinux ติดต่อเน็ตเวิร์กใช้อินเทอร์เน็ตก็มีอยู่สองวิธีคือ bridge กับ NAT. ในที่นี้จะแนะนำวิธี NAT เพราะง่ายดี. วินโดวส์ XP มีความสามารถให้แชร์เน็ตเวิร์กผ่านตัวมันเองอยู่แล้วโดยการเลือกอินเทอร์เฟสที่เป็นตัวแชร์ เช่นผมอยากให้ coLinux ใช้เน็ตเวิร์กออกไปข้างนอกผ่าน wireless อินเทอร์เฟสก็ไปคลิ้กขวาที่ connection ของ wireless, เลือก properties ไปที่แท็บสุดท้ายเลือกให้แชร์เน็ตเวิร์กไปให้ TAP Win32 ก็ OK. เสร็จแล้วตัววินโดวส์จะตั้งค่า IP ของ TAP Win32 ให้เป็น 192.168.0.1 โดยอัตโนมัติ. ตรงเน็ตเวิร์กคอนเน็คชันก็มีรูปมือแสดงด้วยว่าแชร์เรียบร้อยแล้ว.

อินสตอลล์ coLinux

หลายวันก่อนเขียนไปแล้วว่ามีหลายวิธีที่จะรันลินุกซ์บนวินโดวส์ และหนึ่งในนั้นคือใช้ coLinux.

พูดง่ายๆ coLinux คือโปรแกรมวินโดวส์ที่สามารถรันตัวลินุกซ์เคอร์เนลที่ได้รับการปรับแต่งมาแล้ว. มันจะต่างกับ VMware หรือ QEMU ซึ่งโปรแกรมพวกนั้นจะจำลองการทำงานของหน่วยประมวลผล ฯลฯ. สรุปคุณสมบัติคร่าวๆได้ว่า

ไฟล์ hosts ในวินโดวส์

ในลินุกซ์จะมีไฟล์ /etc/hosts เป็นฐานข้อมูลของ IP address กับชื่อโฮส. ในวินโดวส์ก็มีไฟล์แบบนี้เหมือนกันอยู่ที่ c:\windows\system32\drivers\etc\hosts บางทีอยากได้ชื่อ DNS ใช้ชั่วคราวก็ไปแก้ไฟล์นี้.

ฟอร์แมตของไฟล์นี้ก็เหมือนในยูนิกซ์ทั่วไป, IP address ขึ้นก่อนแล้วตามด้วยชื่อโฮสที่ต้องการครับ.

mail-notification

ตอนนี้ตัด ISP ที่ใช้้เรียบร้อยแล้วเลยต้องหันมาใช้ gmail อย่างเต็มตัว. Gmail สามารถ POP และส่งเมลด้วย SMTP ได้แต่ตอนนี้ยังไม่อยากเซ็ตเลยอ่านเมลจาก gmail.google.com เป็นประจำ. เห็นข้าวบอกว่า Gmail มีอินเทอร์เฟสเป็นภาษาญี่ปุ่นเอาใจตลาดญี่ปุ่นด้วย. ส่วนตัวรู้สึกว่าเวลาส่งเมลภาษาญี่ปุ่นแล้วมันจะแปลงรหัสเป็น ISO-2022-JP ให้แล้วด้วย. ใครอยากได้ account ส่งเมลมาที่ poonlap at linux dot thai dot net ครับ. มี invite แต่ไม่รู้จะไปแจกใครดี.

บันทึกการติดตั้ง Debian - wireless

เครื่องโน้ตบุคที่ใช้อยู่ซื้อมาเมื่อ 3 ปีที่แล้ว. ตอนนั้นไม่ได้ซื้อรุ่นที่มี wireless LAN ติดมาด้วยตอนนี้เลยต้องใช้ wireless LAN card แบบ PCMCIA ของ Buffalo WLI2-CB-G54L ที่แถมมากับ wireless access point.

ตรวจสอบฮาร์ดแวร์

ก่อนอื่นตรวจสอบฮาร์ดแวร์ว่าเห็น wireless LAN อันนี้หรือไม่ด้วยคำสั่ง lspci

# lspci
...
0000:02:00.0 Ethernet controller: Linksys, A Division of Cisco Systems [AirConn] 
INPROCOMM IPN 2220 Wireless LAN Adapter (rev 01)

ลองหาข้อมูลจาก google ก็จะรู้ว่าใช้กับลินกซ์ผ่านทาง ndiswrapper.

module-assistant

ถ้าลอง apt-cache หาแพ็กเกจที่เกี่ยวกับ ndiswrapper จะเห็นว่ามีแพ็กเกจ ndiswrapper-source กับ ndiswrapper-utils. และ ndiswrapper-source จะขึ้นกับแพ็กเกจ module-assistant ซึ่งเป็นแพ็กเกจโปรแกรมสำหรับสร้างโมดูลใช้กับเคอร์เนลปัจจุบัน.

ในดิสโทร Debian เราสามารถติดตั้งเคอร์เนลที่ทางดิสโทรเตรียมไว้ให้แล้ว. แน่นอนว่าโมดูลเคอร์เนลบางตัวดิสโทรไม่ได้เตรียมไว้ให้เช่นในกรณี ndiswrapper นี้จะมีแพ็กเกจ xxx-source ให้แล้วใช้ module-assistant สร้างเคอร์เนลโมดูลเอง. อีกอย่างหนึ่งผู้ใช้มีสิทธิ์เลือกว่าจะใช้เคอร์เนลรุ่นไหน 2.4x , 2.6.x. ถ้าใช้ module-assistant ช่วยสร้างโมดูลที่เข้ากันกับเคอร์เนลที่ใช้ได้จากรหัสต้นฉบับ.

# apt-get install ndiswrapper-source ndiswrapper-utils

ถ้าในระบบยังไม่มีแพ็กเกจ module-assistant ก็จะติดตั้งแพ็กเกจนี้ให้ด้วย. ไฟล์รหัสที่มากับแพ็กเกจ ndiswrapper-source จะเป็นไฟล์ archive ชื่อ ndiswrapper-source.tar.bz2 อยู่ที่ไดเรกทอรี /usr/src. หลังจากนั้นใช้คำสั่ง module-assistant หรือย่อๆว่า m-a คอมไพล์โมดูลเป็นแพ็กเกจแล้วติดตั้งแพ็กเกจที่คอมไพล์.

โปรแกรม module-assistant เป็นโปรแกรมแบบไดอะล็อกโต้ตอบกับผู้ใช้ทางเทอร์มินอล. ในไดอะล็อกจะมีขึ้นตอนได้แก่

ssh-agent และ ssh-add

ต่อจากเรื่องการใช้ public key และ private key กับ ssh ที่เคยเขียนไปแล้ว. วิธีหนึ่งสำหรับการล็อกอินโดยที่ไม่ต้องใส่พาสเฟรส (passpharse) เองคือการสร้าง public key และ private key โดยมีพาสเฟรสว่างเปล่า. ถ้าไม่อยากให้พาสเฟรสว่างเปล่าและไม่อยากใส่กรอกพาสเฟรสเองเวลาล็อกอินผ่าน ssh ต้องใช้ ssh-agent ช่วย.