วันพุธที่ 14 กรกฎาคม พ.ศ. 2553

Internet Sharing บน Ubuntu Server 10.04

     วันก่อนโน้น ได้ลง Ubuntu server 10.04 ในเครื่องเก่ามากๆ (RAM 128 M.,Harddisk 4.3 Gb.) เพื่อทบทวนที่เรียนจาก sipa phuket มา ก็อยากจะหาวิธีconfig ให้Server Share internet ได้ ก็เลยไปซื้อ Lan Card มาจาก Big C มาใส่เพิ่มเป็น 2 ใบ เพื่อทดสอบดู
     สำหรับ ระบบที่ทดสอบ คือ
- Ubuntu server(10.04,32bits) มี การ์ดlan ตัวที่ 1 (eth0) ติดต่อกับ internet ภายนอก โดยผ่าน router ที่ แจก ip อัตโนมัติ(dhcp)และ เป็น name serverด้วย ส่วน eth1 ผม fix IP ให้เป็น 192.168.2.1
- Client หรือ เครื่องลูกที่จะขอ share internet เป็น Ubuntu Desktop 10.04 และกำหนดค่า ip ผ่านทาง Network Manager Applet 0.8 (icon เชื่อมต่อ บน Main Menu Bar ด้านขวามือครับ)
 ดังรูปแบบข้างล่างนี้

    Internet <<==>> eth0 <> Ubuntu gateway <> eth1 <<==>> Client PC

     โดยเชื่อมต่อกันระหว่างClient กับ Server ด้วยสายLan แบบ Cross 
     มาลุยกันเลยครับ...

ปรับแต่ง Ubuntu Gateway
- ขั้นแรก กำหนด ip ให้ การ์ดLan ใบที่2 (eth1) เป็นคนละวง กับ router ก่อน เช่น 192.168.2.1 โดย แก้ไขไฟล์ /etc/network/interfaces พิมพ์เพิ่มท้ายไฟล์ดังนี้
auto eth1
address 192.168.2.1
netmask 255.255.255.0
     เสร็จแล้ว save file แล้วสั่ง restart network ดังนี้
$sudo /etc/init.d/networking restart
- ขั้นที่ 2 Configure NAT ปรับแต่ง iptables เพื่อให้ packages สามารถ ผ่าน ไปยังclient ได้ถูกต้องดังนี้
$sudo iptables -A FORWARD -i eth0 -o eth1 -s 192.168.2.0/24 -m conntrack --ctstate NEW -j ACCEPT
$sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$sudo iptables -A POSTROUTING -t nat -j MASQUERADE
เสร็จแล้ว ให้ rule ใหม่นี้มีผลทุกครั้งที่ reboot เครื่อง ให้สั่งดังนี้

     - save iptables rules
$sudo iptables-save | sudo tee /etc/iptables.sav
     - แก้ไขไฟล์ /etc/rc.local และ เพิ่มข้อความนี้ ให้อยู่ก่อนบรรทัด "exit 0"
iptables-restore < /etc/iptables.sav
- ขั้นที่ 3 Enable Routing
     config gateway ให้สื่อสารกันได้ โดย enable IP Forwarding ดังนี้

$sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
สุดท้าย เพิ่มข้อความเหล่านี้ไปในไฟล์ /etc/sysctl.conf
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.all.forwarding=1
 เป็นอันเสร็จพิธี สำหรับ ฝั่ง Gateway

ปรับแต่ง Client (Ubuntu)
     ทีนี้ก็เป็นขั้นตอนการ setup เครื่อง notebook ของผม ให้ติดต่อกับ Server โดยสามารถใช้ internet ที่ share มาจาก Server ได้ ดังรูป

     -ให้ Right Click ที่ NetworkManager Applet(มุมบนขวา ติดกับ volume icon)
     -เลือก Edit Connections...รอซักครู่ จะพบหน้าต่าง Network Connections
     -กดปุ่ม Add ใน Tab Wired บนหน้าต่าง Network Connections เพื่อสร้าง Wired Connections ใหม่ขึ้นมา กำหนดชื่อใหม่ ในช่อง Connection Name
     -เลือกTab IPv4 Settings แล้วกดปุ่ม Add จากนั้นกำหนดค่า ดังรูปข้างบน โดยให้
- เลือก Manual ในหัวข้อ Method
- Address ให้กำหนด IP ให้อยู่ในวงเดียวกันกับ eth1 ของ Gateway Server คือ 192.168.2.x
- Netmask คือ 255.255.255.0
- Gateway คือ eth1 ของ Gateway Server อันนี้คือ 192.168.2.1
- DNS Servers คือ ค่า IP ของ Router ก็คือ 192.168.1.1 นั่นเอง
แล้วกด Apply แล้ว ปิดหน้าต่างออกมา

     - เสร็จแล้ว ให้ Right Click ที่ NetworkManager Applet เพื่อสั่ง restart network โดยเลือก Enable Networking ซ้ำ 2 ครั้ง ก็ทดสอบ โดยการ เปิด mozilla Firefox ได้เลยครับ
     สำหรับบทความนี้ ช่วงต้นก็เขียนผ่าน ระบบ ที่เขียนมานี้ครับ

     สามารถศึกษา เพิ่มเติมได้ที่นี่ครับ