ใช้บริการอินเตอร์เน็ตแล้วได้ IP Address  มา 8 IP จะออกแบบเครือข่ายอย่างไร

โดยอดิศร  ขาวสังข์
เขียนเมื่อ 11 พฤศจิกายน 2548


บทนำ
บทความนี้เป็นการทดลองออกแบบการเชื่อมต่อเครือข่ายภายในขององค์กรกับเครือข่ายอินเตอร์เน็ต ซึ่งได้ผ่านการทดลองจริงแล้วว่าสามารถใช้งานได้

รายละเอียดของเครือข่าย
บริษัทแห่งหนึ่งต้องการเชื่อมต่อระบบเครือข่ายภายในบริษัทกับระบบอินเตอร์เน็ต ผ่านระบบ ADSL หรือ Leased Line โดยมีรายละเอียดของความต้องการและข้อจำกัดดังต่อไปนี้ :

  • ผู้ให้บริการอินเตอร์เน็ต จัดสรรหมายเลข IP Address 203.146.55.128/29 ให้กับเครือข่ายของบริษัท
  • จำานวนเครื่องคอมพิวเตอร์ที่ใช้งานในเครือข่ายภายใน มีจำนวนมากกว่าจำานวน IP Address ที่ได้รับการจัดสรรจากผู้ให้บริการ

ความต้องการ

  • ต้องการมีระบบป้องกันการใช้งานที่ไม่ได้รับอนุญาตจากภายนอกเครือข่าย และป้องกันการใช้งานอินเตอร์เน็ตจากเครือข่ายภายในบริษัทโดยไม่ได้รับอนุญาตได้
  • ต้องการมี web server เพื่อให้บริการข้อมูลแก่ผู้ใช้ภายนอกและภายในเครือข่าย
  • การติดต่อไปยัง Web Server ภายนอกเครือข่าย จะต้องทำาผ่านทาง Web Proxy ที่อยู่ภายในเครือข่ายเท่านั้น
  • ต้องการมีระบบ Domain Name Server สำาหรับเครือข่ายภายใน

รูปแบบที่เลือก (ณ ที่นี้)
รูปแบบการออกแบบเครือข่ายสามารถจะเลือกได้หลายรูปแบบ แต่ในที่นี้ผู้เขียนขอเลือกรูปแบบดังรูปข้างล่าง

หลักการทำงาน
ในที่นี้ผู้เขียนได้ทดลองกับ Router Cisco 1721 และ Server ใช้เป็น Fedora Core 4 ร่วมกับ RedHat 9.0 โดยได้จัดแบ่งเครือข่ายเป็น 3 กลุ่ม คือ

  • External Network เป็นส่วนเครือข่ายที่ติดต่อกับ Internet โดยตรง ซึ่งส่วนนี้จะใช้ Private IP จำนวน 2 IP (/30) นั่นคือสำหรับ Ethernet ของ Router กับ eth0 ของ Linux Firewall และเพื่อที่จะให้เครือข่ายภายนอกสามารถติดต่อเข้าไปหา Server ขององค์กรได้ จึงต้องมีการทำ Static Route ไปยังเครือข่าย 202.146.55.128/29 ผ่านไปยัง eth0 ของ Linux Firewall
  • DMZ Network เป็นส่วนเครือข่ายสำหรับ Server ชนิดต่าง ๆ ซึ่งในที่นี้กำหนดให้ Server มี IP Address เป็น Public IP ซึ่งเครือข่ายจากข้างนอกสามารถติดต่อเข้ามายัง Web Server ขององค์กรได้ แต่จะต้องผ่านระบบป้องกันโดยตัว Linux Firewall
  • Internal Network เป็นเครือข่ายสำหรับเครื่อง Client ขององค์กรซึ่งใช้ Private IP โดยเครือข่ายส่วนนี้สามารถกำหนดได้ว่าจะอนุญาตให้ติดต่อไปยังภายนอกโดยตรงได้หรือไม่  เช่นการติดต่อไปยัง Web Server ข้างนอกอาจจะบังคับให้ต้องใช้งานผ่าน Web Proxy ที่อยู่ในวง DMZ ซึ่งเครือข่ายในส่วน Internal สามารถติดต่อไปยัง DMZ ได้ด้วยการอนุญาตให้มีการ Forward Packet บน Linux Firewall
วิธีการ
  • ต้องมีการทำ Static Route บนตัว Router ไปยังเครือข่าย DMZ ที่มี Address เป็น 203.146.55.128/29 ผ่านไปยัง eth0 ของ Linux Firewall ซึ่งถ้าเป็น Cisco Router สามารถทำ Static Route ได้ด้วยคำสั่ง :
    ip route 203.146.55.128 255.255.255.248 192.168.0.2
  • การอนุญาตให้มีการ Forward Packet บน Linux Firewall ทำได้ 2 วิธีคือ
    • กำหนดค่า net.ipv4.ip_forwarding = 1 ในไฟล์ /etc/sysctl.conf หรือ
    • รันคำสั่ง echo 1 > /proc/sys/net/ipv4/ip_forward
  • ในกรณีทำ Transparent Proxy ต้องรันคำสั่ง iptables บน Linux Firewall ดังนี้ :
    iptables –t nat –A PREROUTING –p TCP –i eth2 –s 192.168.1.0/24 –d ! 203.146.55.131 –dport 80 –j DNAT –to-dest 203.146.55.132:3128
    ซึ่งหมายถึงว่าเครื่องคอมพิวเตอร์ในวง Internal ที่มีการเรียกใช้งาน Web จะถูกบังคับให้ไปใช้ Web Proxy (Squid ทำงานที่พอร์ต 3128) บนเครื่อง 203.146.55.132 โดยอัตโนมัติซึ่ง script คำสั่งพื้นฐานที่ผู้เีขียนได้ทดลองบนเครื่อง Linux Firewall เป็นดังนี้ :

    iptables -F
    iptables -t nat -F
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A PREROUTING -p TCP -i eth2 -s 192.168.1.0/24 -d ! 203.146.55.131--dport 80 -j DNAT --to-dest 203.146.55.132:3128
  • ในการทำ Transparent Proxy ต้องมีการกำหนดค่า DNS ที่เครื่อง Client ให้สามารถใช้งานได้ เพราะถ้าเครื่อง Client ไม่สามารถสอบถาม DNS ได้ จะส่งผลให้เครื่อง Client ไม่สามารถเรียกใช้งาน Web ได้ เพราะคำสั่ง iptables ที่ใช้ในการทำ Transparent Proxy ดังที่กล่าวมาไม่สามารถตรวจสอบ IP Address ตามกฎได้ (ถ้าเป็นการใช้งาน Web Proxy แบบที่ผู้ใช้กำหนดค่าของ Web Proxy เอง ไม่จำเป็นต้องกำหนด DNS Server ก็ได้) และในการคอนฟิก Squid (/etc/squid/squid.conf) บนเครื่อง Web Proxy เพื่อทำ Transparent Proxy จะต้องมีการกำหนดค่าต่อไปนี้ :
    httpd_accel_port 80
    httpd_accel_host virtual
    httpd_accel_with_proxy on
    httpd_accel_host_header on
  • ในกรณีที่ต้องการให้เครือข่าย Internet Network สามารถออกใช้งาน Internet ได้โดยไม่ต้องผ่าน Web Proxy จะต้องมีการทำ NAT ทั้งที่ Linux Firewall และ Router
  • สำหรับการสร้างกฎ Firewall ด้วย iptables ช่วงนี้ผู้เขียนไม่ค่อยจะมีความชำนาญซะแล้ว ต้องขออภัยด้วยครับ

จบครับ