Prerequire:
1. ส่ิงที่จำเป็นต้องทำก่อนก็คือ การ make kernel ให้สนับสนุนการทำงานของ
IP Aliasing ก่อนโดยการเข้าไปที่ diretory /usr/src/linux/ แล้วจึงสั่งให้
make kernel โดยใช้คำสั้ง make menuconfig แล้วจะปรากฎหน้าต่างดังรูป
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq Main Menu qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Arrow keys navigate the menu. <Enter> selects submenus --->.
x
x Highlighted letters are hotkeys. Pressing <Y> includes, <N>
excludes, x
x <M> modularizes features. Press <Esc><Esc> to exit,
<?> for Help. x
x Legend: [*] built-in [ ] excluded <M> 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
<Select> < Exit > < Help >
x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
ให้เลือกไปที่ Network device support ---> แล้วจะปรากฎหน้าต่างดังรูปต่อไปนี้
lqqqqqqqqqqqqqqqqqqqqqqqqqq Networking options qqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Arrow keys navigate the menu. <Enter> selects submenus --->.
x
x Highlighted letters are hotkeys. Pressing <Y> includes, <N>
excludes, x
x <M> modularizes features. Press <Esc><Esc> to exit,
<?> for Help. x
x Legend: [*] built-in [ ] excluded <M> module < > module
capable x
x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x
x x [ ] Network firewalls
x x
x x [*] Network aliasing
x x
x x [*] TCP/IP networking
x x
x x [ ] IP: forwarding/gatewaying
x x
x x [*] IP: multicasting
x x
x x [*] IP: syn cookies
x x
x x [ ] IP: accounting
x x
x x [ ] IP: optimize as router not host
x x
x x <M> IP: tunneling
x x
x x <*> IP: aliasing support
x x
x mq.(+)qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x
<Select> < 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 ดังกล่าวเสมอ