ลองเล่น Network กับ DN42

ซื้อ router Mikrotik มาใช้ที่บ้านได้สักพัก ผมเห็นฟีเจอร์ BGP ผมก็สงสัยมาสักพักว่าจะไปเล่นกับใครดี เลยลองหาข้อมูลดูพบว่ามี network DN42 อยู่ ก็เลยลองขอเข้าไปร่วมดู

DN42

DN42 คือการจำลองการทำงานของ internet ของจริง ซ้อนลงไปบน internet ของจริงอีกทีโดยใช้ VPN

ไอเดียคือแบบนี้ครับ

  • ในโลกจริงถ้าผมจะเชื่อมต่อกับหน่วยงานอื่น ผมต้องลาก Fiber เข้าไปหาหน่วยงานนั้นๆ เรียกว่า Peering
  • บางทีหน่วยงานนั้นจะ forward ผมหาหน่วยงานอื่นๆ ได้อีก แบบนี้เรียกว่า Transit
  • พอมี Transit แล้วเราก็สามารถติดต่อหาหน่วยงานอื่นๆ ได้ทั่วโลกโดยส่งต่อกันไปเป็นทอดๆ นี่คือการทำงานของ internet
  • การจะเชื่อมต่อได้นั้นนอกจากจะต้องลากสายหากันแล้ว เรายังจะต้องจดทะเบียนเพื่อให้ทราบข้อมูลของเรา และขอ IP Address ของเราด้วย

ทีนี้ในฝั่งของ DN42 จะเป็นแบบนี้

  • เราจะเชื่อมต่อหาใครเราก็ไปขอ Peering กับเค้า แต่เราไม่ต้องลากสาย แค่ใช้ VPN
  • โดยทั่วไปแล้วทุกคนใน DN42 จะเป็น Transit ด้วย
  • เช่นเดียวกัน DN42 จะมีฐานข้อมูลผู้ใช้งานและการออก IP ด้วย โดยแทนที่จะใช้ IP ทั้งหมด ก็จะใช้ IP ในกลุ่ม 172.20.0.0/14 ที่เป็น private IP เท่านั้น

ซึ่งการจะเข้าร่วม DN42 นั้นทำได้ง่ายๆ ตามเอกสาร Getting started

กรอกเอกสาร

ขั้นแรกสุดคือการกรอกเอกสารก่อนที่เว็บ NixNodes IO โดยกด Create object และสร้างของต่างๆ ดังนี้

mntner

mntner เป็นข้อมูลผู้ถือครองวัตถุอื่นๆ ตรงนี้ให้กรอกข้อมูลดังนี้

  • mntner: กรอกชื่อแล้วตามด้วย -MNT เช่น WHS-MNT
  • sha512-pw: กรอกรหัสผ่านเป็น plaintext
  • admin-c และ tech-c: ชื่อผู้ติดต่อ ตรงนี้เราติดไว้ก่อนโดยใส่ DUMMY-DN42
  • mnt-by: กรอกให้เหมือนกับ mntner (และอย่างอื่นๆ ที่เราจะสร้างต่อไปจะมีให้กรอก mnt-by ทั้งหมด ต้องกรอกให้เหมือน mntner เช่นเดียวกัน)

พอเซฟเสร็จแล้วทางขวามือจะเห็นว่ามีช่องให้กรอกรหัสผ่าน ให้กรอกรหัสลงไปแล้วกดปุ่ม + เพื่อบันทึกรหัส จะได้แก้ไขข้อมูลได้

person

person คือข้อมูลบุคคล

  • nic-hdl: กรอกชื่อแล้วตามด้วย -DN42 เช่น WHS-DN42
  • person: กรอกอะไรก็ได้ อาจจะเป็นชื่อจริงหรือ username
  • email: กรอกอีเมลลงไป บางคนอาจจะจด email พิเศษที่ไว้ติดต่อเรื่อง DN42 โดยเฉพาะ
  • mnt-by: อย่าลืมเซตให้เหมือน mntner
  • กดปุ่ม + แล้วสามารถเพิ่ม field อื่นๆ ได้อีก เช่น pgp-id, www, contact

พอเซฟแล้วให้กลับไปแก้ mntner เมื่อกี้ (ใช้ช่อง search ขวาบน) โดยระบุ admin-c, tech-c ให้ตรงกับ nic-hdl

autnum

autnum จะกำหนดเลข AS (Autonomous system) ของเรา ซึ่งเท่าที่เห็นใช้กัน บางเครือข่ายจะใช้ AS เลขเดียวทั่วโลกเลย แต่บางเครือข่ายก็จะมีหลาย AS ตามจุดที่ใช้งาน สำหรับของผมจะใช้ AS เดียวทั้งหมด

  • autnum: กรอกว่า AS แล้วตามด้วยเลขอะไรก็ได้ในช่วง 4242420000-4242423999 ที่ไม่ซ้ำกับคนอื่น (ดูได้ที่เว็บนี้) สำหรับผมใช้ AS4242421842 ตาม IP เครื่องนี้คือ 103.246.18.42 จะได้ไม่ต้องจำหลายเลข
  • as-name: กรอกอะไรก็ได้
  • admin-c, tech-c: กรอกตาม nic-hdl ของ person
  • mnt-by: เซตให้เหมือน mntner

inetnum

ถัดมาหลังจากมีเลข AS แล้วเราก็จะขอ IP address ใช้กัน โดยกรอก inetnum

  • inetnum: กรอก IP block ในช่วง 172.20.0.0/14 โดยดูได้จากเว็บนี้ว่าบล็อคไหนใช้ไปแล้ว (ไม่ควรใช้เกิน /27) โดยให้กรอกเป็นช่วง IP แรกถึงสุดท้ายแบบในภาพ
  • netname: กรอกอะไรก็ได้
  • nserver: ระบุ nameserver สำหรับ reverse DNS ถ้ายังไม่มีใส่ชื่อ DNS มั่วๆ ไปก่อน
  • admin-c, tech-c, mnt-by: เหมือนเดิม
  • status: ระบุ ASSIGNED
  • bgp-status: ในภาพจะเห็นว่ามีอยู่ แต่อันนี้ไม่ต้องกรอกเองเพราะระบบจะอัพเดตเอง

route

และเมื่อขอ IP แล้วก็ต้องขอสิทธิ์ในการประกาศ route ด้วย

  • route: กรอก IP block เดิมไป แต่เป็นแบบ CIDR
  • origin: กรอก AS เราลงไป (ที่ขอใน autnum)
  • mnt-by: กรอกเหมือน mntner

Peering

ขั้นตอนต่อมาเริ่มสนุกแล้วครับนั่นคือการ Peering กับคนอื่น อันนี้เราต้องไปตามหาคนที่เราจะ peer ด้วยก่อน จะ peer กับผมก็ได้ หรือใช้เว็บ PeerFinder ก็ได้ โดยในเว็บจะให้เรากรอก public IP ของเรา (ไม่ใช่ IP ใน DN42) แล้ว server ของคนที่เข้าร่วมโครงการนี้จะ ping หา IP เราดูว่าของใครใกล้สุด

เสร็จแล้วเราก็ต้องไปตามหาคนนั้นๆ ครับ จะไปตามหาใน IRC ก็ได้ หรือจะเมลไปก็ได้ ซึ่งอย่างผมตอนนี้จะ peer อยู่ 2 ที่ คือ

  • icez hosting provider ผมเอง อันนี้ผมหลังไมค์ทักเค้าไปบอกว่าจะ peer ซึ่งเค้าขอ OpenVPN แต่ผมไม่สะดวกใช้ (เพราะมี IPsec กลับบ้านอยู่แล้วไม่อยากเซตเพิ่ม) ก็เลยว่าไหนๆ เราอยู่ใน switch ตัวเดียวกันละ เปิด BGP แลก route กันตรงๆ เลยน่าจะได้ ไม่ต้อง VPN ก็ได้คงไม่มีใครแอบดัก
  • Tech9Computers อันนี้ผมเมลไปหาเค้าบอกว่าขอ peer ด้วย แล้วก็แนบ IPSec PSK ไป (PGP Encrypt แล้ว) เค้าก็ตอบมาเลยว่ายินดี peer ด้วย แต่ตอน peer จริงๆ ผมเซต IPSec/GRE ไม่ถูก เลยเข้า IRC ไปถามเค้า

ขั้นตอนการ peering ก็ดูได้จากในเว็บครับ หลักๆ จะมี 2 ส่วนคือ

  1. Setup VPN ตรงนี้แล้วแต่จะตกลงกันว่าจะใช้ VPN โปรแกรมไหน ใช้ได้ทุกโปรแกรมเลยไม่ว่าจะเป็น OpenVPN, Tinc, Wireguard, IPSec/L2TP, IPSec/GRE
  2. พอ VPN ติดแล้วเราจะแลกเปลี่ยน route กันด้วย BGP

Setup BGP

สำหรับการ setup BGP นั้นมี 2 โปรแกรมที่นิยมคือ Bird กับ Quagga ซึ่งผมใช้ Bird อยู่ ขั้นตอนติดตั้งคร่าวๆ ก็ดูได้จากเว็บ DN42 เช่นกัน และ config ต่างๆ ก็ใช้จากในเว็บได้เลย

และที่แนะนำคือควรจะติด community tag ไว้ด้วยครับ เพื่อให้เครื่องอื่นๆ สามารถวางแผน routing ได้ ดูจากหน้าเว็บ DN42 อีกเช่นเคย ตัวอย่างเช่นในเคสผม

  • Peering ผมกับ Tech9Computers ping ประมาณ 30 และ bandwidth น่าจะสัก 1Mbps (กะประมาณเอา), ใช้ IPSec/GRE ฉะนั้นน่าจะ encrypt เนียวดี ก็จะเลือกใส่ community string
    protocol bgp Tech9 from dnpeers {
    neighbor 172.23.220.64 as 4242421588;
    import where dn42_import_filter(4,22,34);
    export where dn42_export_filter(4,22,34);
    };
    

    โดย 4 ระบุ ping, 22 ระบุ bandwidth และ 34 ระบุ encryption

  • Peering ผมกับ Icez ping ไม่ถึง 1ms, bandwidth น่าจะ 100Mbps (เพราะอยู่ใน switch เดียวกัน เผลอๆ จะเป็น Gigabit), ไม่ได้ encrypt ก็จะใช้ dn42_import_filter(1,24,31)

ตรงนี้พอ Bird ทำงานแล้วเราสั่ง ip route ดูก็จะเห็นว่าได้ route ของ DN42 เต็มไปหมด ซึ่งปัญหาที่ผมเจอคือ Bird เข้าใจผิดเรื่อง route เพราะ DN42 ใช้ช่วงทับกับ Docker ตรงนี้ก็แก้ไขได้โดย restart เครื่อง เพื่อให้ Bird เห็น interface ของ DN42 VPN ก่อน Docker จะติด

ที่แนะนำให้ลองเล่นคือ ถ้ามี peering หลายอันแนะนำให้ลองปิด BGP ไปข้างนึงดูครับ (birdc disable "Tech9" ก็ได้) จะเห็นว่า routing table จะเปลี่ยนไปใช้อีก peering นึงอัตโนมัติเลย ตรงนี้คือเหตุผลที่ทำไมอินเทอร์เน็ตเป็นระบบ self-healing

Setup DNS

หลังจากเรา peering กับ DN42 ได้แล้วเราอาจจะทดสอบโดยขอ ping IP ฝั่งคนที่เรา peer ด้วย หรือ DNS Server 172.23.0.53 ถ้าใช้ได้ก็ยินดีต้อนรับสู่ DN42 ครับ

แต่ยังไม่จบ เพราะเราเข้าเว็บใน DN42 ไม่ได้เนื่องจากยังไม่ได้ setup DNS ซึ่งวิธีง่ายสุดก็คือเปลี่ยน DNS ในเครื่องเราไปใช้ 172.23.0.53 เลย แต่จะไม่ค่อยปลอดภัยเท่าไร ควรจะใช้เฉพาะกับเว็บใน DN42 เท่านั้น ซึ่งจะใช้ domain name .dn42 วิธีการตรงนี้ขึ้นอยู่กับ DNS Resolver ที่ใช้อยู่ สามารถดูได้จาก เว็บ DN42

ตัวอย่างเช่นในบ้านผมใช้ Mikrotik ซึ่งมันปรับอะไรไม่ได้ แต่มีอีกเครื่องหนึ่งคือ UniFi ที่รัน OpenWRT ผมก็ติดตั้ง dnsmasq เข้าไป แล้วใช้ config ตามเค้าคือ

config dnsmasq
        option boguspriv '0'
        option rebind_protection '1'
        list rebind_domain 'dn42'
        list server '/dn42/172.23.0.53'
        list server '/20.172.in-addr.arpa/172.23.0.53'
        list server '/22.172.in-addr.arpa/172.23.0.53'
        list server '/23.172.in-addr.arpa/172.23.0.53'

ก็จะเป็นการระบุว่า โดเมน dn42 ให้ตอบเป็น IP local ได้ (rebind_domain) และโดเมน dn42 ให้ใช้ DNS ที่ 172.23.0.53 รวมถึง 20-23.172.in-addr.arpa ด้วย ซึ่งเป็น reverse DNS ของ DN42

เสร็จแล้วทดสอบโดยลองเข้าเว็บ whatismyip.dn42 ถ้าเข้าได้เป็นอันเสร็จสิ้น

ต่อเน็ตที่บ้านให้ใช้ DN42

ทีนี้ที่บ้านผม VPN เข้ากับ server อยู่แล้ว ก็เลยจะ config ให้ใช้ DN42 ได้ด้วย ซึ่งก็ไม่ยากเท่าไร เพราะเราใช้ BGP แลกเปลี่ยน route ในบ้านอยู่แล้ว พอต่อเข้า DN42 ปุ๊บ router ที่บ้านก็จะได้ route DN42 ไปพร้อมๆ กันเลย ก็จะเหลือแค่เซต iptables ให้ forward route ให้

ก่อนอื่นก็คือจะต้องตัดแบ่ง subnet DN42 ของเราให้ไปที่บ้านก่อน ซึ่งผมก็จะใช้ Visual subnet calculator ช่วยตัด (เพิ่งมาเจอ tool นี้หลังเรียน datacom ไปแล้ว เสียดาย) และทำ Google Docs จดไว้ว่าแจก IP อะไรไปแล้วบ้าง

ทีนี้ IP block ที่มีมันไม่ได้พอแจกทุกเครื่องในบ้าน (และเราก็ไม่อยากให้ทุกเครื่องมี IP จริง) เราเลยต้อง NAT ครับ โดยผมจะ NAT ที่ Mikrotik ซึ่งมี IP DN42 เช่นกัน

/ip firewall nat add action=src-nat chain=srcnat dst-address=!10.50.50.1 out-interface=\
    l2tp-out1 src-address=!172.20.18.128/27 to-addresses=172.20.18.137

ก็แปลว่าถ้าเครื่องที่ส่งไม่อยู่ใน subnet DN42 ของผมและจะออกไปทาง VPN ให้ NAT เป็น IP ของ router ให้หมด

ทีนี้เครื่องส่วนตัวผมจะ allocate DN42 IP ไว้ให้เลย และให้ connect เข้ามาได้ด้วย ทีแรกผมใช้วิธีให้มันมี 2 IP คือ DHCP + DN42 Static IP ซึ่งพังง่ายมาก เพราะระบบไม่ได้ออกแบบมาให้มี DHCP + Static พร้อมกัน ตอนหลังเลยเปลี่ยนแผนใหม่ว่าใช้ NAT ดีกว่า

/ip firewall nat
add add action=src-nat chain=srcnat dst-address=!10.50.50.1 out-interface=\
    l2tp-out1 src-address=192.168.2.32 to-addresses=\
    172.20.18.138
add action=dst-nat chain=dstnat dst-address=172.20.18.138 in-interface=\
    l2tp-out1 to-addresses=192.168.2.32

ก็แปลว่าถ้า source เป็น 192.168.2.32 ให้ rewrite ต้นทางเป็น 172.20.18.138 และถ้าเข้ามาหา 172.20.18.138 ก็ให้เปลี่ยนปลายทางเป็น 192.168.2.32 ตรงนี้ถ้าเซต Firewall rule ไว้ ก็ต้องแก้ด้วยเพราะมันจะใช้ IP ปลายทางที่แก้แล้วมาเช็คเงื่อนไขของ Firewall

อื่นๆ ที่ควรลอง

พอเราเชื่อมต่อกับ DN42 แล้วก็ลองอย่างอื่นๆ ได้อีกครับ เช่น

  • เพิ่ม peering point ใน AS เรา
  • ทำ DNS Server และจดโดเมน DN42 (เว็บผมเข้าได้ที่ whs.dn42 แต่ตอนนี้ยังไม่มีอะไร)
  • เซต reverse DNS ตรงนี้ผมไม่เคยเซต DNS Server เอง (domain ทั้งหมดที่ถือใช้ hosted DNS หมด อย่าง whs.in.th อยู่บน Google Cloud) พอใช้ DN42 มันไม่มีทางเลี่ยงแล้วก็เลยต้องเซตเอง แต่สำหรับเว็บจริงคงยังไม่ใช้เพราะติดเรื่อง DNSSEC key อีกด้วย
  • ลอง Anycast (ไว้มีหลายๆ node จะลอง)
  • ติดตั้ง Looking glass (เช่นของ weiti หรือผมชอบใช้ของ peer ผม tech9computers)
  • ให้บริการ service ต่างๆ ใน DN42 (สามารถดูบริการต่างๆ ได้ที่หน้า Internal services ซึ่งหน้านี้เข้าจากด้านนอก DN42 ไม่ได้
    • แอบบอกว่ามี chan.dn42 ด้วยล่ะ

Take Control of Your Home Networking

สัปดาห์ที่ผ่านมาลองปรับอุปกรณ์ Network ในบ้านเล่นครับ เลยอยากมาลองเล่าให้ฟัง

อุปกรณ์ network เดิม

อุปกรณ์ในบ้านผมที่ต่อเน็ตได้มีเกือบ 15 ชิ้นแล้วครับ และ router ทรูเองก็ปล่อยสัญญาณไม่ถึงชั้นบ้านบางจุด ก็เลยมีอีกตัววางไว้ที่บันได (แต่ไม่ได้เดินสายขึ้นไปเลยอยู่ที่ชั้น 1 นี่แหละ)

ปัญหาคือ port LAN หลัง router ผมมันเต็มแล้ว เวลาจะ print ผมก็เลยต้องสลับสายอย่างอื่นออกชั่วคราว ตอนหลังก็เลยว่าจะจัดการระบบใหม่ครับ และอีกปัญหาหนึ่งเคยเขียนไปแล้วสองปีก่อน แต่จะมาเปิด PC ทำ routing อีกก็จะเปลืองไฟเกินไป

จัดบ้าน!

ปัญหาที่ไม่เห็นใน network map คืออุปกรณ์มันสายรุงรังมากครับ ผมกับแม่เลยตัดสินใจว่าจะรื้อที่ว่างอุปกรณ์ network ใหม่หมดเลย โดยเปลี่ยนจากโต๊ะคอมพิวเตอร์เป็นชั้นวางของแทน แล้วซื้อตู้ rack มาวาง อุปกรณ์ก็เลยจะเป็นระเบียบขึ้นเยอะมากกกก

และในฝั่ง network เองผมก็อยากจะลองเล่นของ enterprise สักหน่อย ก็เลยลองจัดมาดังนี้ครับ

  • TP-Link SG-1008 Rack mounted Gigabit Switch 1,600 บาท (ซื้อมาปุ๊บวันที่ของมาส่ง King IT ประกาศเลิกขาย TP-Link เลย ซึ่งกล่องที่ผมได้เป็นของ King IT)
  • Mikrotik RB750Gr3 (hEX) 2,790 บาท
  • Ubiquiti UniFi AP-AC-LITE 4,050 บาท

(จริงๆ ไม่ค่อยอยากซื้อของที่มีปัญหา GPL Compliance สักเท่าไร แต่เหมือนว่าอุปกรณ์ network แทบทุกเจ้าก็มีปัญหาเรื่อง GPL Compliance หมดล่ะ)

Enterprise มั้ยล่ะ…

อุปกรณ์ network ก็มีตัวเลือกหลายอย่างครับ บางคนอาจจะบอกว่าใช้ของ Asus ก็ได้ หรือ AIS ก็ขาย D-Link 8 เสาอยู่ แต่ความแตกต่างที่ชัดเจนของของเล่น enterprise กับของ consumer คืออุปกรณ์แต่ละตัวมันมีหน้าที่เดียวครับ

  • hEX เป็น router อย่างเดียว (และเป็น switch 5 port)
  • UniFi เป็น access point อย่างเดียว ทำหน้าที่แบบ router ไม่ได้เลย และมีพอร์ทเดียว

ทีนี้ network map อันใหม่จะเป็นแบบนี้ครับ

Bridge mode

ก่อนอื่นพอเรามี router เราก็ไม่ควรจะทำ double NAT ครับ ซึ่งก็ทำได้โดยการเข้าไปแก้ที่ router ทรู แต่รุ่นที่ผมใช้อยู่มันใช้ไม่ได้ ก็เลยต้องติดต่อไปทาง support ซึ่งสองวันเค้าก็มาเปลี่ยนให้เป็น EPC3928D

ลองเล่น hEX

ถัดมาก็ต้อง config router ตัวใหม่ครับ ซึ่ง interface ของ Mikrotik ก็ทำมาให้ไม่ผิดหวังจริงๆ (ลอง Demo เล่นเองได้)

หน้าแรกของ Mikrotik เหมาะกับมือใหม่มากๆ ครับ ซึ่งก็จะคล้ายๆ กับ router ทั่วๆ ไป เซตหน้านี้ปุ๊บก็สามารถเริ่มใช้งานได้เลย (จริงๆ ตามภาพนี่ก็ค่าเริ่มต้นเลยครับ ยกเว้น IP range นะ) แต่ของจริงๆ มันอยู่ที่หน้าอื่นๆ ครับ

หน้า interfaces นี่เจ๋งมากครับ เอาจริงๆ ไม่ต้อง config อะไรเลย (ผมแค่เปลี่ยนชื่อให้รู้ว่าพอร์ทไหนคืออะไรแค่นั้น) แต่ตัวเลขที่เห็นมันขยับเป็น real time ครับ ทำให้รู้ได้เลยว่าใครใช้เน็ตเท่าไรอยู่กันบ้าง และสามารถดูได้ด้วยว่า port ไหนที่เชื่อมต่อเป็น Gigabit อยู่บ้าง

จุดที่พอจะเล่นหน้านี้ได้คือ Master port ครับ ซึ่งใน default setup จะให้ port 3-5 ชี้ master port ไปที่ port 2 (port 1 เป็น WAN) โดยในคู่มืออธิบายว่า port ที่เป็น slave จะทำบางอย่างไม่ได้ (เช่น firewall) แต่มันจะใช้ hardware switching ทำให้ packet วิ่งได้อย่างรวดเร็ว ซึ่งถ้าเราไปดูในหน้า bridge ที่มันสร้างให้ก็จะเห็นว่า bridge เชื่อมแค่ port เดียว เหตุผลที่เค้าเซต bridge ให้ด้วยคือเพื่อใช้ RSTP ป้องกัน loop ครับ

ของเล่นถัดมาคือ DHCP Lease ครับ ตรงนี้เราจะเห็นเลยว่ามีอุปกรณ์อะไรในบ้านที่ต่ออยู่บ้าง (ซึ่งปกติ router ทั่วไปก็มีหมดแหละ) และทำ static IP ให้แต่ละตัวได้ (อันนี้ router บางรุ่นมี แต่ที่ผมใช้อยู่เดิมไม่มี)

อันที่น่าปรับคือผมปรับให้ DHCP เป็น authoritative คือค่าปกติ DHCP server จะรอประมาณ 2 วินาที (เผื่อมี DHCP server อื่น) แต่พอปรับเป็น yes แล้วจะทำให้ไม่ต้องรอ

DNS นี่ไม่มีอะไรให้ปรับเท่าไรครับ (ผมปรับ DNS เอาของทรูออกเป็นของ Google แทนแค่นั้น) แต่จะบอกว่าจากที่เคยใช้มาการมี local DNS caching ทำให้เน็ตเร็วขึ้นอย่างเห็นได้ชัดเลยครับ อาจจะวัดด้วย speedtest ไม่ได้ แต่เข้าเว็บทั่วๆ ไปจะเห็นเลย

Firewall

มาถึงของเล่นเด็ดเลยคือ firewall ครับ ผมมั่นใจว่า consumer router ไม่มี firewall ระดับนี้แน่ๆ คือเขียนกฎได้เต็มที่เลย ทีนี้ firewall ของ Mikrotik ก็มีเรื่องน่าสนใจเยอะครับ

เรื่องแรกคือจะเห็นว่ามีหลายแท็บมากๆ แท็บ NAT ปกติไม่ต้องไปยุ่ง เพราะมันจะเซตให้แล้ว แต่ที่น่าเล่นคือ Filter Rules กับ Mangle ครับ

Filter Rules คือ Firewall ทั่วๆ ไปนี่แหละ ซึ่งปกติแล้วมันจะมีกฎนึงให้คือ fasttrack forward (ในภาพคือแถวที่ 2) อันนี้แนะนำให้ปิดไปก่อนครับ โดยกฎนี้แปลว่า connection ที่ connect ติดแล้วจะข้าม firewall ไปเลย ซึ่งจะทำให้ทำ QoS ไม่ติด แต่ข้อดีคือมันจะเร็วขึ้น

กฎที่เหลือที่ผมเขียนเพิ่มก็จะมี block ไม่ให้เข้าหน้า router (แต่ปิดไปก่อน) และ block อุปกรณ์ IoT ไม่ให้ต่อเน็ตได้เพื่อความปลอดภัย

สำหรับหน้า Mangle ไว้ mark packet ที่วิ่งผ่านไปผ่านมาสำหรับการทำ QoS ครับ โดยกฎที่ผมใช้ก็คือ

  • TCP ACK packet size 40 ให้ mark packet ไว้ในกลุ่ม tcp
  • Packet ที่ออกจาก IP ของ TV ให้ mark packet ไว้ในกลุ่ม tv
  • Packet ที่ต่อ UDP port 53 ให้ mark packet ไว้ในกลุ่ม dns
  • Connection TCP port 80, 443 ให้ mark connection ไว้ในกลุ่ม http
  • Connection TCP port 22 ให้ mark connection ไว้ในกลุ่ม ssh
  • Connection TCP port 1935 (rtmp) ให้ mark connection ไว้ในกลุ่ม streaming
  • Connection UDP port 500, 4500 ให้ mark connection ไว้ในกลุ่ม voip (พอร์ทนี้สำหรับ 4G Voice over WiFi ครับ)
  • Connection UDP port 6250,5062,5060,12000-64000,3478,3479 ให้ mark connection ไว้ในกลุ่ม gaming (สำหรับเกม Overwatch)
  • Connection TCP port 1119,3724,6113 ให้ mark connection ไว้ในกลุ่ม gaming (สำหรับเกม Overwatch)
  • Connection UDP port 27015-28999,27005 ให้ mark connection ไว้ในกลุ่ม gaming (สำหรับเกม Dota 2)

สำหรับ connection mark แนะนำให้ตั้ง connection state = new ไว้ด้วยครับ เพื่อลด load ทั้งนี้ RouterOS สามารถ track connection ของ UDP ได้ด้วยครับแม้มันจะเป็น connectionless โดยนิยามของ new คือเมื่อมีการส่ง packet แรกออกมาจากฝั่งใดฝั่งหนึ่ง

สำหรับ connection mark และ packet mark จะต่างกันแบบนี้ครับ

  • Connection mark จะ mark ที่ connection ซึ่งเราสามารถดูได้ที่ tab connections ด้านบนเลย เราเลยทำครั้งเดียวตอน connect ก็พอ ไม่ต้องทำบ่อยๆ
  • Packet mark จะ mark ที่ packet ซึ่งต้องทำทุก packet ก็เลยจะต้องมีกฎเอา connection mark มาแปะที่ packet markอีกทีนึง เนื่องจาก QoS จะอ่านที่ packet mark เท่านั้น และถ้าเอากฎ connection mark มาทำใน packet mark เลยก็จะช้า

Queues

หน้าสุดท้ายที่จะปรับคือ Queue Trees ครับ ตรงนี้จะใช้ packet mark ที่เราสร้างไว้ก่อนหน้านี้มาจัดลำดับ ซึ่งที่ผมจัดก็คือ

  • 1 – DNS + TCP ความสำคัญสูงสุด
  • 2 – Gaming (ใน Firewall จะมีอีกกฎนึงว่า gaming ให้ fasttrack connection เลยเพื่อลด ping ตรงนี้เลยไม่ค่อยได้ใช้)
  • 3 – VoIP
  • 4 – SSH + TV ผมหวังว่า TV จะไม่กินเน็ตเยอะนะ
  • 5 – HTTP (จากกฎเมื่อกี้จะรวม HTTPS ด้วย)
  • 8 – Streaming + อื่นๆ (Streaming นี่หลักๆ เขียนไว้ดักสตรีมออกครับ ไม่เกี่ยวกับดู video streaming เท่าไร ยกเว้น MyLive ที่ใช้ RTMP อยู่)

แต่ตอนนี้ก็ยังไม่เห็นผลของ QoS เท่าไรครับ เพราะไม่ได้ใช้เน็ตหนักขนาดที่ bandwidth ไม่พอขนาดนั้น

UniFi

ถัดมาลอง UniFi กันบ้างครับ ตัวนี้ Ars Technica อวยไว้พอสมควร และด้วยความเป็น enterprise มันจึงไม่มีหน้า web admin ให้เซตใดๆ ทั้งนั้น วิธีการติดตั้ง UniFi คือต้องโหลดโปรแกรม UniFi มาครับ แล้วเข้าที่หน้าเว็บของมัน ซึ่งก็ทำได้สวยเลย

พอเปิดมามันจะขึ้นให้ Adopt device ครับ (มันจะหาอุปกรณ์เจอเอง ปกติจะ IP 192.168.1.20) ซึ่งตอนแรกๆ ผมก็มีปัญหากับ subnet นิดหน่อย งมๆ ด้วยการ factory reset อยู่หลายทีเหมือนกัน

บน UniFi จะต่างกับ router ทั่วไปคือไม่ค่อยมีตัวเลือกให้ปรับเท่าไรครับ จะมีที่เกี่ยวข้องกับ Wireless อย่างเดียวมากกว่า เช่นปรับความแรง, channel และสามารถดู wireless client ได้ด้วย จะต่างกับ consumer router คือจะเห็น data transfer ด้วย (แต่เหมือนจะนับเฉพาะถ้าเรายังเปิดโปรแกรม UniFi ที่เครื่องเราอยู่)

New furniture

ความน่ารักของ UniFi คือไฟมันสวยมาก ลืมภาพ router ไฟกระพริบๆ ได้เลย เพราะ UniFi จะขึ้นไฟสีฟ้าตลอดเวลา ยิ่งพอปิดไฟนอนแล้วจะเหมือนมีไฟหรี่ๆ บอกตำแหน่งของบันไดชั้นล่างเลย

อีกอย่างนึงคือมันเป็น Power over Ethernet (PoE) ครับ นั่นแปลว่าไม่ต้องวาง adapter เกะกะแล้ว (ในภาพนั่นปลั๊กพัดลมกับหลอดไฟ) ผมสามารถเอา PoE injector ที่แถมมาในกล่องเสียบไว้ที่ข้าง switch แล้วเดินสายแลนมาได้เลย แถมพออยู่ข้าง switch ก็สามารถต่อกับ UPS ได้ด้วย

สำหรับ site survey router ตัวนี้ยังรู้สึกว่าสัญญาณไม่ต่างกับเดิมครับ (คงเพราะมันเป็นตัวล่างสุดด้วยล่ะ) และไอเดียของ Ubiquiti ไม่ใช่การใส่เสาเยอะๆ แรงๆ แต่เป็นการกระจาย access point หลายๆ ตัว ที่สามารถ manage รวมกัน

สรุปแล้ว network ใหม่ก็ทำให้มองเห็น network ได้มากกว่าเดิมเยอะครับ ดูได้เลยว่าใครใช้ bandwidth มากน้อยขนาดไหน (และ protocol ไหน) แถมยัง control ด้วย firewall ได้ด้วย