Mini Howto
Subject: การทำ IP Masquerading
By: Dome Potikanond <dome@ds90.intanon.nectec.or.th>
Date: Apr 5,1998
Update from: -
License: สงวนลิขสิทธิ์เอกสารนี้ โดย โดม โพธิกานนท์ <dome@ds90.intanon.nectec.or.th> การเผยแพร่เอกสารนี้จะต้องอยู่ภายไต้ เงื่อนไขของ GNU General Public License เวอร์ชั่น 2.0 ที่ออกโดย Free Sofware Foundation กรุฒาอ่านรายละเอียดของ GPL ที่ <http://linux.thai.net/gpl.html>

Introduction:
    IP Masquerading(ip masq) นั้นเป็นการทำให้เครื่องคอมพิวเตอร์ที่ไม่ได้ใช้ี ip address ที่มีอยู่จริงๆสามารถติดต่อทำงานต่างๆ ที่เกี่ยวข้องกับ
Internet ได้โดยผ่าน Linux box (นั่นคือสามารถใช้งาน Internet ได้โดยใช้ private ip address โดยไม่จำเป็นที่ต้องใช้ ip address จริงๆ)
เหตุุผลที่มีการสร้างบริการดังกล่าวขึ้นมาเนี่องจากว่า Ip address นั้นเป็นทรัพยากรที่สามารถใช้ให้หมดไปได้ ซึ่งในปัจจุบันนั้นมีผู้ใช้งานและบริการต่างๆ
ของ internet มากมายและมีแนวโน้มว่าจะเพิ่มขึ้นเรื่ีอยๆ จึงทำให้ ip address ค่อยถูกใช้หมดไป ดังนั้นถ้่าหน่วยงานที่ได้รับ ip address มาเพียงไม่กี่
หมายเลขมีความต้องการใช้งาน internet ก็สามารถกำหนดให้ภายในหน่วยงานมีการใช้งาน private ip address แล้วใช้ความสามารถของ
ip masq เพื่อให้เล่น internet ได้โดยใช้ ip address ที่มีเพียงไม่กี่เบอร์นั้นแต่อาจใช้งานได้หลายๆเครื่อง

Prerequire:
    1. ต้องมี kernel ที่สนับสนุนการทำงานของ ip masq ซึ่งถ้า kernel ไม่สนับสนุนก็ให้ทำการ make kernel ใหม่ให้สนับสนุนการทำงานของ
Network firewall ,IP forwarding/gatewaying ,TCP/IP networking ,IP firewalling และ IP always defragment ดังรูป
 

  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: firewalling                                                  x x
  x x[ ] IP: firewall packet logging                                      x x
  x x[*] IP: masquerading                                                 x x
  x x--- Protocol-specific masquerading support will be built as modules. x x
  x x[ ] IP: ipautofw masq support                                        x x
  x x[ ] IP: ICMP masquerading                                            x x
  x x[*] IP: always defragment                                            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 x--- (it is safe to leave these untouched)                            x x
  x m.(+)qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj x
  tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
  x                    <Select>    < Exit >    < Help >                     x
  mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
 

    2. ต้องมีเครื่องที่มี ip address จริงๆใช้อย่างน้อย 1 เครื่องเพื่อที่ว่าจะใช้เครื่องดังกล่าวไปทำหน้าที่เป็น forwarding gateway ของ
private network ที่่มีการใช้งาน private ip โดยเครื่องดังกล่าวต้องมีอย่างน้อย 2 interface เพื่อใช้ interface หนีึ่งเกาะอยู่กับ
internet (real ip) และอีกหนึ่ง interface ใช้เกาะอยู่กับ private network
        สำหรับ interface นั้นไม่จำเป็นว่าต้องอาศัย physical network interface (lan card) 2 อัน แต่อาจใช้ความสามารถของ
ip aliasing เพื่อสร้าง network interface หลอกๆจขึี้นมาทำงานก็ได้ ซึ่งทำให้ประหยัด physical network interface ที่มีจำกัดและมี
ราคาแพง

การใช้งาน IP Masquerading
    1. เลือกเอาเครื่องที่มี ip address จริงๆที่มองเห็นได้ด้วย internet มาหนึ่งเครื่องเพื่อทำเป็น forwarding gateway ให้ private network
ซึ่งใช้ private ip address โดยที่ private ip address อาจเป็น ip address ที่มีอยู่จริงหรือไม่มีอยู่จริงบน internet ก็ได้
    2. กำหนดให้ network interface ตัวหนี่งมี private ip address ที่เกาะอยู่กับ network วงเดียวกันกับ private network
    3. ถ้าปรากฎว่าเครื่่อง forwarding gateway มี physical network interface เพียงอันเดียวให้ใช้ความสามารถของ IP Aliasing โดยสร้าง
network interface ใหม่ขึ้นมาโดยกำหนดให้มีคุณสมบัติตามข้อ 2.
    4. กำหนด routing table ของเครื่องที่อยู่ใน private network ให้มี default ไปที่เครื่อง forwarding gateway
    5. ถ้าเครื่องที่เป็น forwarding gateway มีการใช้งาน IP Aliasing ให้ทำการกำหนดให้เครื่องมีการสร้าง interface และ routing
ทุกครั้งที่มีการ boot เครื่องเสมอ
 

    หมายเหตุ : การใช้งาน IP Masquerading นั้นไม่จำเป็นว่าต้องกำหนดให้แยก private network ออกไปเป็น physical network อีกอันหนึ่ง ทุกครั้ง แต่สามารถทำให้บน physical network หนี่งอันสามารถแบ่งออกเป็น 2 logical network (มีทั้งเครื่องที่ใช้ ip ที่่มีอยู่จริง และเครื่องที่ใช้ ip ปลอม ทำงานอยู่บน physical network เดียวกันได้) ก็ได้ เพราะเครื่องที่ใช้ private ip ทุุกๆเครื่องนั้นจะมีการชี้มายัง เครื่องท่ีทำหน้าที่เป็น forwarding gateway เสมอ แล้วจึงออกไปสู่ internet ได้ทางเครื่อง forwarding gateway ดังกล่าว