Mini Howto Subject: การทำ IP Aliasing By: Dome Potikanond Date: Apr 5,1998 Update from: - License: สงวนลิขสิทธิ์เอกสารนี้ โดย โดม โพธิกานนท์ การเผยแพร่เอกสารนี้จะต้องอยู่ภายไต้ เงื่อนไขของ GNU General Public License เวอร์ชั่น 2.0 ที่ออกโดย Free Sofware Foundation กรุฒาอ่านรายละเอียดของ GPL ที่ Introduction: การอาศัยความสามารถของ IP Aliasing จะทำให้สามารถกำหนด IP address ได้หลายๆอันสำหรับ network interface เพียงอันเดียว(Lan Card หรือ Serial port เพียงอันเดียว) ซึ่งอาจใช้งานในการอาศัยเครื่องคอมพิวเตอร์ที่มีเพียง interface เพียงอันเดียวให้ทำตัวเป็น gateway ซึ่งจำเป็นต้องอาศัยหลาย interface นั่นคือการกำหนด IP address ได้หลายเบอร์สำหรับ network interface เพียงอันเดียว Prerequire: 1. ส่ิงที่จำเป็นต้องทำก่อนก็คือ การ make kernel ให้สนับสนุนการทำงานของ IP Aliasing ก่อนโดยการเข้าไปที่ diretory /usr/src/linux/ แล้วจึงสั่งให้ make kernel โดยใช้คำสั้ง make menuconfig แล้วจะปรากฎหน้าต่างดังรูป lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq Main Menu qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x Arrow keys navigate the menu. selects submenus --->. x x Highlighted letters are hotkeys. Pressing includes, excludes, x x modularizes features. Press to exit, for Help. x x Legend: [*] built-in [ ] excluded module < > module capable x x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x x x Code maturity level options ---> x x x x Loadable module support ---> x x x x General setup ---> x x x x Floppy, IDE, and other block devices ---> x x x x Networking options ---> x x x x SCSI support ---> x x x x Network device support ---> x x x x ISDN subsystem ---> x x x x CD-ROM drivers (not for SCSI or IDE/ATAPI drives) ---> x x x x Filesystems ---> x x x mqqqqqq.(+)qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj x tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu x < Exit > < Help > x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj จากนั้นให้เลือกไปที่ option Network aliasing ซึ่งจะทำให้ปรากฎรายลเอียดเกี่ยวกับ IP: aliasing support ขึ้นมาจึงเลื่อน cursor ไปที่บรรทัด ดังกล่าวแล้วกด space bar ซึ่งจะทำให้ปรากฎ * ขึ้นที่บรรทัดดังกล่าว จากนั้นให้ save configuration แล้วจึงสั่งดังต่อไปนี้ bash# make dep bash# make clean bash# make zlilo 2. เครื่องที่จะทำ IP Aliasing ได้ต้องมี network interface อย่างน้อย 1 interface (ในที่นี้จะขอกล่าวถึง Lan Card เท่านั้น) ซึ่งอาจจะต้อง make kernel ให้มองเห็น network interface ดังกล่าวด้วยถ้าในตอนแรกยังมองไม่เห็นโดยการ make kernel ต้องเลือกประเภท ของ lan card ให้ถูกต้องด้วยว่าเครื่องของเราใส่ lan card ชนิดใด เช่น 3c5x9 หรือ ne2000 สำหรับการดูว่าเครื่องมี interface ใดบ้างทำได้โดยการใช้คำสั่ง ifconfig ซึ่งจะทำให้ปรากฎรายละเอียดของ interface ทั้งหมดที่เครื่องมีเช่น bash# ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1 RX packets:238 errors:0 dropped:0 overruns:0 frame:0 TX packets:238 errors:0 dropped:0 overruns:0 carrier:0 coll:0 eth0 Link encap:Ethernet HWaddr 00:80:C8:37:15:60 inet addr:202.44.248.93 Bcast:202.44.248.95 Mask:255.255.255.224 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:14261 errors:0 dropped:0 overruns:0 frame:0 TX packets:5754 errors:0 dropped:0 overruns:0 carrier:0 coll:0 Interrupt:3 Base address:0x300 การใช้งาน IP Aliasing 1. การสร้าง interface ใหม่ให้เครื่องคอมพิวเตอร์(กำหนด ip address อีกหมายเลขหนึ่งแก่ lan card) การสร้าง interface ใหม่ทำได้โดยการใช้ command line : ifconfig โดยมี syntax ดังนี้ bash# ifconfig [interface type] [ip address] [netmask] สำหรับ interface type สามารถเลือกได้ว่าต้องการให้เป็น interface ตัวไหน และประเภทใด(lan card , serial) เช่นถ้าเป็น lan card อาจกำหนดให้เป็น eth0:0 , eth0:1 ซึ่งต้องอ้างมาจาก interface ที่มีอยู่แล้วเท่านั้น(eth0) สำหรับวิธีการอ้างมีตัวอย่างดังนี้ bash# ifconfig eth0:0 202.44.248.76 netmask 255.255.255.224 ซึ่งเมื่อทำการสร้าง interface ใหม่ให้เครื่องแล้วถ้าลองใช้คำสั่ง ifconfig เพื่อดูรายละเอียดเกี่ยวกับ interface ทั้งหมดของเครื่อง จะปรากฎรายละเอียดดังนี้ bash# ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1 RX packets:251 errors:0 dropped:0 overruns:0 frame:0 TX packets:251 errors:0 dropped:0 overruns:0 carrier:0 coll:0 eth0 Link encap:Ethernet HWaddr 00:80:C8:37:15:60 inet addr:202.44.248.93 Bcast:202.44.248.95 Mask:255.255.255.224 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:14692 errors:0 dropped:0 overruns:0 frame:0 TX packets:5780 errors:0 dropped:0 overruns:0 carrier:0 coll:0 Interrupt:3 Base address:0x300 eth0:0 Link encap:Ethernet HWaddr 00:80:C8:37:15:60 inet addr:202.44.248.35 Bcast:202.44.248.63 Mask:255.255.255.224 UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 coll:0 จะสังเกตุได้ว่าจะปรากฎ interface eth0:0 ขึ้นมาใหม่ซึ่งสามารถจะนำไปใช้งานได้จริง หมายเหตุุ: สำหรับการกำหนด ip address สามารถกำหนดให้เป็น private ip address เพื่อใช้กันภายในองค์กรได้ แต่ถ้าต้องการให้ สามารถใช้งาน internet ได้ต้องมีการทำ IP Masquerading ด้วยซึ่งจะได้อธิบายในส่วนของ howto " IP_Masquerading.html" 2. การสร้าง routing table สำหรับ interface ใหม่ เมื่อมี interface ใหม่ปรากฎขั้นมาในระบบแล้ว ในตอนแรกอาจจะยังไม่สามารถใช้งานได้(ขึ้นอยู่กับ ip address และ netmask ที่ได้กำหนดให้ interface ใหม่นั้นๆ)เพราะฉะนั้นควรตรวจสอบ routing table ก่อนโดยใช้คำสั่ง netstat -rn ดังตัวอย่าง bash# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 202.44.248.64 0.0.0.0 255.255.255.224 U 1500 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 3584 0 0 lo 0.0.0.0 202.44.248.68 0.0.0.0 UG 1500 0 0 eth0 จากตัวอย่าง interface ใหม่มี ip address และ netmask ที่ไม่ได้อยู่ในเน็ตเวิร์ค 202.44.248.64 แต่อยู่ในเน็ตเวิร์ค 202.44.248.32 ดังนัั้นต้องทำการเพิ่มบรรทัดใหม่เข้าไปใน routing table ดังตัวอย่างเพื่อให้เครื่องนี้สามารถติดต่่อกับเน็ตเวิร์ค 202.44.248.32 ได้โดยตรง โดย โดยไม่จำเป็นต้องไปผ่าน gateway 202.44.248.68 โดยการเพิ่มบรรทัดทำได้โดยใช้คำสั่ง route ดังต่อไปนี้ bash# route add [-net(network ip)/-host(host ip)] gw [gateway ip] netmask [ip netmask] metric [hop] วิธีการเพิ่มบรรทัดใน routing table นั้นทำได้โดยคำสั่งดังนี้ bash# route add -net 202.44.248.32 gw 202.44.248.35 bash# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 202.44.248.64 0.0.0.0 255.255.255.224 U 1500 0 0 eth0 202.44.248.32 0.0.0.0 255.255.255.224 U 1500 0 0 eth0:0 127.0.0.0 0.0.0.0 255.0.0.0 U 3584 0 0 lo 0.0.0.0 202.44.248.68 0.0.0.0 UG 1500 0 0 eth0 เมื่อลองกลับไปดู routing table ใหม่จะปรากฎบรรทัดใหม่ดังตัวอย่าง แล้วจึงทดลอง traceroute ไปที่เครื่องที่มี ip address อื่นๆที่ อยู่ใน network 202.44.248.32 (โดยควรจะลบบรรทัดสุดท้ายของ routing table ตามตัวอย่างออกก่อนเพื่อตรวจสอบว่า interface ใหม่ ที่สร้างขึ้นมาใช้งานได้จริงหรือไม่) ถ้าไปได้โดยผ่าน gateway ip 202.44.248.35 แสดงว่าใช้งานได้จริงๆแล้วเป็นอันว่าเสร็จเรียบร้อย 3. การกำหนดให้สร้าง interface เมื่อมีการ boot เครื่อง เมื่อมีการ boot เครื่องใหม่โดยปกติ interface ใหม่ที่สร้างขึ้นมาจะหายไปเสมอเพราะฉะนั้นจึงควรกำหนดให้เครื่องสร้าง interface ใหม่ดังกล่าวขึ้นมาเสมอทุกครั้งที่มีการ boot เครื่่องโดยที่สามารกทำได้โดยไปเพิ่มบรรทัดใหม่ลงในไฟล์ /etc/rc.d/rc.inet1 โดยจากตัวอย่าง เพิ่มดังต่อไปนี้ /sbin/ifconfig eth0:0 202.44.248.35 netmask 255.255.255.224 broadcast 202.44.248.63 /sbin/route add -net 202.44.248.32 netmask 255.255.255.224 gw 202.44.248.35 metric 1 หลังจากนี้เมื่อมีการ boot เครื่องใหม่จะมีการสร้าง interface eth0:0 พร้อมทั้งเพิ่ม routing ที่สัมพันธ์กับ interface ดังกล่าวเสมอ