Tag: iproute2

  • ตั้งค่า iproute2 ให้ ubuntu server ที่มี 2 interfaces

    ผมมี server สำหรับห้องบริการคอมพิวเตอร์ ที่ทำหน้าที่จ่าย dhcp IP และ cloning Windows และใช้ pGina for Windows ในการ Login ก่อนเข้าใช้เครื่อง

    เริ่มแรก server ก็มีการ์ดแลนเพียง 1 ใบ สำหรับห้องบริการคอมพิวเตอร์ห้องที่ 1 (eth0) ต่อมามีความต้องการให้ห้องบริการคอมพิวเตอร์ห้องที่ 2 ซึ่งจะเป็นอีก network ใช้ server ตัวเดียวกันนี้ด้วย จึงเพิ่มการ์ดแลนอีก 1 ใบ (eth1) ทำให้ตอนนี้มี eth0 และ eth1

    ipmultihomed

    ปัญหาคือ เมื่อ Windows ในห้องคอมฯ ห้องที่ 2 ตั้งค่า pGina RADIUS plugin ชี้ไปยัง IP ของ eth0 (192.168.99.20) ก็ทำงานไม่ได้ แต่ถ้าตั้งค่าชี้ไปยัง IP ของ eth1 (192.168.99.251) อย่างนี้ใช้งานได้ หรือใช้คำสั่ง ping 192.168.99.20 อย่างนี้ก็ไม่ได้ เช่นกัน

    จึงค้นหาคำตอบ google search อยู่หลายวัน มีบทความที่ให้คำตอบใกล้เคียงที่สุด แต่ผมก็ต้องมาแต่ง config ใหม่ จนสำเร็จ โดยหลักใหญ่ ๆ คือ เครื่อง server ที่มีการ์ดแลน 2 การ์ดนี้จะเรียกว่า multi-homed server จำเป็นจะต้องตั้งค่าเพิ่มโดยใช้ iproute2 ซึ่งมีให้แล้วบน ubuntu server ที่ผมทดสอบนี้คือ ubuntu server 16.04 ครับ คือ ปรกติแล้วเครื่อง 1 เครื่อง จะมี default gateway เพียง 1 เท่านั้น เราจะใช้ iproute2 เพื่อแยกให้มี gateway สำหรับ IP ของ eth0 และ eth1 เพิ่มขึ้น

    เรามาดูตัวอย่างกันครับ

    เครื่องที่ทดสอบ มี 2 subnets (อันนี้ที่ต้องใช้ /25 เพราะผมไม่มี net class C ถึง 2 net จึงไปขอความช่วยเหลือทีมเครือข่ายให้ช่วยแบ่งครึ่ง net class C ให้ครับ)
    1. net 192.168.99.0/25
    IP 192.168.99.1 – 192.168.99.126 broadcast 192.168.99.127 gateway 192.168.99.1
    2. net 192.168.99.128/25
    IP 192.168.99.129 – 192.168.99.254 broadcast 192.168.99.255 gateway 192.168.99.129

     

    1. ตรวจสอบ network interfaces ได้ผลลัพธ์ดังนี้

    root@ubuntu:~# ifconfig
    eth0 Link encap:Ethernet HWaddr 00:4d:60:1e:fb:ab
     inet addr:192.168.99.20 Bcast:192.168.99.127 Mask:255.255.255.128
    
    eth1 Link encap:Ethernet HWaddr 00:04:a5:fd:a4:9c
     inet addr:192.168.99.251 Bcast:192.168.99.255 Mask:255.255.255.128
    
    lo Link encap:Local Loopback
     inet addr:127.0.0.1 Mask:255.0.0.0

     

    2. เพิ่ม 2 บรรทัดนี้ต่อท้ายในไฟล์ /etc/iproute2/rt_tables (ผมตั้งชื่อ routing table 1 ว่า rt1 และ routing table 2 ว่า rt2)

    1 rt1
    2 rt2

    ผลลัพธ์ได้ดังนี้

    root@ubuntu:~# cat /etc/iproute2/rt_tables
    #
    # reserved values
    #
    255 local
    254 main
    253 default
    0 unspec
    #
    # local
    #
    #1 inr.ruhep
    1 rt1
    2 rt2

     

    3. เพิ่ม 4 บรรทัดนี้สำหรับ eth0

    post-up ip route add 192.168.99.0/25 dev eth0 src 192.168.99.20 table rt1
    post-up ip route add default via 192.168.99.1 dev eth0 table rt1
    post-up ip rule add from 192.168.99.20/32 table rt1
    post-up ip rule add to 192.168.99.20/32 table rt1

     

    4. และเพิ่ม 4 บรรทัดนี้สำหรับ eth1
    post-up ip route add 192.168.99.128/25 dev eth1 src 192.168.99.251 table rt2
    post-up ip route add default via 192.168.99.129 dev eth1 table rt2
    post-up ip rule add from 192.168.99.251/32 table rt2
    post-up ip rule add to 192.168.99.251/32 table rt2

     

    จากข้อ 3 และ ข้อ 4 ผลลัพธ์ได้ดังนี้

    root@ubuntu:~# cat /etc/network/interfaces
    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet static
    address 192.168.99.20
    netmask 255.255.255.128
    gateway 192.168.99.1
    dns-nameservers 192.100.77.10 192.100.77.11
    post-up ip route add 192.168.99.0/25 dev eth0 src 192.168.99.20 table rt1
    post-up ip route add default via 192.168.99.1 dev eth0 table rt1
    post-up ip rule add from 192.168.99.20/32 table rt1
    post-up ip rule add to 192.168.99.20/32 table rt1
    
    auto eth1
    iface eth1 inet static
    address 192.168.99.251
    netmask 255.255.255.128
    post-up ip route add 192.168.99.128/25 dev eth1 src 192.168.99.251 table rt2
    post-up ip route add default via 192.168.99.129 dev eth1 table rt2
    post-up ip rule add from 192.168.99.251/32 table rt2
    post-up ip rule add to 192.168.99.251/32 table rt2

     

    5. ทำการ restart server
    แค่นี้ครับ

     

    References:

    1. Two Default Gateways on One System

    (URL https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System)
    2. Linux iproute2 multiple default gateways

    (URL https://www.iodigitalsec.com/2014/10/05/linux-iproute2-multiple-default-gateways/)

    3. Number of IP Addresses and Multihoming

    (URL http://www.tcpipguide.com/free/t_NumberofIPAddressesandMultihoming.htm)