Basic Linux Router Lab
ทดลองโดยอดิศร  ขาวสังข์
เขียนเมื่อ 6/12/2548

Lab ต้นฉบับ

บทนำ
ได้มีโอกาสทดลอง Lab เรื่อง Linux Router เห็นว่าน่าจะมีประโยชน์บ้างก็เลยได้นำไว้ที่นี่ครับ  การทดลองครั้งนี้ใช้เครื่อง PC จำนวน 3 เครื่องครับ โดยเครื่องหนึ่งทำหน้าที่เป็น Router มีการ์ดแลน 3 การ์ด อีกสองเครื่องเป็น Client ทั้งสองเครื่องมีการแลน์เครื่องละหนึ่งการ์ด และเครื่องทุกเครื่องลง OS ที่เ็ป็น Linux Ubuntu แต่ใครที่ใช้ Distribution อื่น ๆ ก็สามารถใช้ได้เช่นกันครับ หลักการเหมือนกัน

Objective

  1. Syntax and semantic of IP addresses
  2. Concept of subnet, subnet mask and subneting
  3. Configure the IP addresses of PCs
  4. Use of the simple PING tool

ขั้นตอนการทำ

  1. ทำการเชื่อมต่ออุปกรณ์ PC1, PC2 และ Router ดังรูป :


  2. Boot เครื่องทั้งสามเป็น Linux OS
  3. ใช้เคเบิ้ลเชื่อมต่อเครือข่ายตามรูปให้ถูกต้อง
  4. กำหนด IP Address ของเครือข่ายดังต่อไปนี้

    PC IP Address Subnet Mask
    PC1 192.168.23.2 255.255.255.0
    PC2 192.168.24.2 255.255.255.0
    Router (eth1) 192.168.23.1 255.255.255.0
    Router (eth2) 192.168.24.1 255.255.255.0

ซึ่ง IP Address จะเป็นดังรูปข้างล่าง



Network Configuration for PC1 and PC2

  1. Logging into your system.
  2. Enter IP Address Information
    1. เซ็ต IP Address, Subnet Mask Address และ Broadcast Address ให้กับ PC 1 และ PC2 ด้วยคำสั่งดังนี้ :

      PC1

      หมายเหตุ
      PC1 ใช้ eth1 เพราะ eth0 มีปัญหา

      PC2


    2. ตรวจสอบการเปลี่ยนแปลงด้วยการใช้คำสั่ง /sbin/ifconfig ดังนี้ :

      PC1


      PC2


  3. Enter routing information
    1. ให้พิมพ์คำสั่ง /sbin/route เพื่อดูค่า Routing table ของ PC1 และ PC2 ให้ตรวจสอบดูว่าตรงกัน Network address หรือไม่ ดังรูป

      PC1


      PC2


      จากรูปข้างบนทั้งสองเห็นว่าสองตรงกับ Network address ของทั้ง PC1 และ PC2 แล้ว

    1. ในกรณีที่ routing table ไม่ตรงกัน Network address ของ PC1 และ PC2 ให้ใช้คำสั่งเพื่อเพิ่ม routing table ดังต่อนี้ (ในที่นี้ไม่ต้องใช้คำสั่งนี้เพราะค่า routing table ถูกต้องแล้ว)
      sudo /sbin/route add -net <Network Address>netmask <Subnet Mask> dev <network interface

Network Configuration for Linux Router

  1. เซ็ตค่า IP Address ของ eth1 และ eth2 ให้กับ Router โดยใช้คำสั่ง /sbin/ifconfig ดังรูปข้างล่าง (IP Address ของ eth0 ไม่ได้กำหนดเพราะรับจาก DHCP Server)

Network Connectivity Test

  1. Logging into your system

  2. ที่ PC1 ให้พิมพ์คำสั่งดังนี้ :

    ping <Router’s eth1 IP Address> ได้ผลลัพท์ดังรูปซึ่งสามารถ ping ได้



    และให้พิมพ์คำสั่งดังนี้ :
    ping <Router’s eth2 IP Address> แล้วได้ผลลัพท์ดังรูปซึ่งไม่สามารถ ping ได้


    ที่ยัง ping ไม่ได้เพราะยังไม่ได้มีการ enable IP Forwarding บน Router

  3. ที่ PC2 ให้พิมพ์คำสั่งดังนี้ :
    ping <Router’s et12 IP Address> ได้ผลลัพท์ดังรูปซึ่งสามารถ ping ได้




    และให้พิมพ์คำสั่งดังนี้ :
    ping <Router’s eth1 IP Address> แล้วได้ผลลัพท์ดังรูปซึ่งไม่สามารถ ping ได้


    ที่ยัง ping ไม่ได้เพราะยังไม่ได้มีการ enable IP Forwarding บนตัว Router

  4. ที่ PC1 และ PC2 ให้กำหนดค่า IP Address ที่เป็น default gateway โดยใช้คำสั่ง
    sudo /sbin/route add default gw <Default Gateway>
    ดังรูปข้างล่าง

    PC1


    PC2


  5. ขั้นตอนสุดท้ายให้ทำการ enable IP Forwarding ที่ถูกควบคุมโดยไฟล์ /proc/sys/net/ipv4/ip_forward
    ค่าที่เป็น 0 หมายถึง disabling IP forwarding และค่าที่เป็น 1 หมายถึง enabling IP forwarding.
    1. ที่เราเตอร์ให้เข้าไปยังไดเร็คทอรี่ /proc/sys/net/ipv4 แล้วใช้คำสั่ง cat ip_forward ซึ่งจะได้ค่าเป็น 0 (disable) ดังรูป
    2. ให้พิมพ์คำสั่ง echo 1 > ip_forward เพื่อ enabling IP forwarding แต่เจอปัญหา permission denied ก็สามารถใช้คำสั่งต่อไปนี้แทน :
      sudo sysctl –w net.ipv4.ip_forward=1
      และเมื่อตรวจดูค่าอีกครั้งด้วยคำสั่ง cat ip_forward จะได้ค่าเป็น 1 (enable) ดังรูป


  1. ให้ตรวจสอบการ ping อีกครั้งหนึ่งซึ่งที่ PC1 สามารถ ping ไปยัง eth2 ของ Router ได้ และ PC2 สามารถ ping ไปยัง eth1 ของ Router ได้ดังรูป และจากเครื่อง PC1 และ PC2 สามารถ ping ถึงซึ่งกันและกันได้

    PC1 สามารถ ping ไปยัง eth2 ของ Router ได้



    PC2 สามารถ ping ไปยัง eth1 ของ Router ได้

    หมายเหตุ รูปการ ping ระหว่าง PC1 กับ PC2 ไม่ได้ capture ไว้ ขออภัยด้วย

  2. ให้ศึกษา IP command จาก manpage และตอบคำถามต่อไปนี้
    1. What is the ip command that equivalent to the command in step 6a?
      Ans : sudo ip addr add 192.168.23.2/24 brd 192.168.23.255 dev eth0
      or sudo ip addr add 192.168.23.2/24 brd + dev eth0
    2. What is the ip command that equivalent to the command in step 7b?
      Ans : sudo ip route add 192.168.23.0/24 dev eth0

Subnetting

  1. สมมุติว่าคุณเป็น Network Administrator ได้รับ network number สำหรับกลุ่มของคุณเป็น 192.168.n.0 (where n is your router’s PC number) โดยเครือข่ายของคุณมี 2 Ethernet segments และให้ตอบคำถามต่อไปนี้ :
    หมายเหตุ ในที่นี้สมมุติมีเครือข่ายเป็น 192.168.1.0/24 และไม่ใช้ zero subnet (ip subnet zero)
    1. Network Address แต่ละ Segment เป็นอะไร
      Ans : 192.168.1.64/26 และ 192.168.1.128/26
      (Zero subnet, และ Broadcast subnet ที่ไม่ใช้คือ 192.168.1.0/26 และ 192.168.1.192/26 ตามลำดับ
    2. Network mask เป็นอะไร ?
      Ans : ของเดิมเป็น 255.255.255.0 เมื่อแบ่ง subnet แล้วเป็น 255.255.255.192
    3. จำนวนบิตน้อยที่สุดที่ยืมจาก host portion มาทำ subnet number เป็นเท่าเป็นเท่าไร ทำไม ?
      Ans : 2 bit เพาะต้องให้ได้จำนวนเครือข่ายรวมทั้งหมด 4 เครือข่าย ( นับ zero subnet และ broadcast subnet ด้วย) ดังนั้น 2 n จำนวน n เป็นจำนวนของ bit ซึ่งค่าที่น้อยที่สุดเมื่อยกกำลังแล้วได้ผลลัพท์ไม่น้อยกว่า 4 คือ 2 bit (2 2 =4)
        1. Subnet Mask ใหม่เป็นอะไร ?
          Ans : 255.255.255.192
        2. Subnet Address ทั้งหมดที่เป็นไปได้คืออะไร ?
          Ans : 192.168.1.0/26, 192.168.1.64/26,192.168.1.128/26 และ 192.168.1.192/26
        3. จำนวน host ในแต่ละ subnet ที่ไม่นับกรณีที่เป็นบิต 0 ทั้งหมด (all zeros host) และไม่นับกรณีที่เป็นบิต 1 ทั้งหมด (all ones host) เป็นเท่าไร ?
          Ans : 62 hosts
        4. Broadcast Address ของแต่ละ subnet เป็นอะไร
          Ans :
          1. Subnet ที่ 1 (zero subnet) 192.168.1.63
          2. Subnet ที่ 2 192.168.1.127
          3. Subnet ที่ 3 192.168.1.191
          4. Subnet ที่ 1 (Broascast Subnet) 192.168.1.2

จบครับ