Author: wiboon.w

  • อยากรู้ว่า Windows 10 Firewall Inbound Rules เปิดหรือปิด SMBv1, SMBv2 หรือไม่

    อยากรู้ว่า Windows 10 Firewall Inbound Rules เปิดหรือปิด SMBv1, SMBv2 หรือไม่

    ทดสอบจากเครื่อง Linux ที่ตั้งอยู่ใน network เดียวกัน ทำ nmap ค้นหา SMB (TCP Port 445) ไปที่เครื่อง Windows IP 192.168.x.yy

     

    ครั้งที่ 1
    รายการ File and Printer Sharing (SMB-In) ใน Firewall Inbound Rules เมื่อตั้งค่า Enabled = No
    ผลลัพธ์
    $ nmap -A -T4 -Pn -p445 192.168.x.yy
    Starting Nmap 7.01 ( https://nmap.org ) at 2017-05-15 13:52 ICT
    Nmap scan report for 192.168.x.yy
    Host is up.
    PORT STATE SERVICE VERSION
    445/tcp filtered microsoft-ds
    Nmap done: 1 IP address (1 host up) scanned in 2.39 seconds

    ครั้งที่ 2
    รายการ File and Printer Sharing (SMB-In) ใน Firewall Inbound Rules เมื่อตั้งค่า Enabled = Yes
    ผลลัพธ์
    $ nmap -A -T4 -Pn -p445 192.168.x.yy
    Starting Nmap 7.01 ( https://nmap.org ) at 2017-05-15 13:55 ICT
    Nmap scan report for 192.168.x.yy
    Host is up (0.00048s latency).
    PORT STATE SERVICE VERSION
    445/tcp open microsoft-ds Microsoft Windows 10 microsoft-ds
    Service Info: OS: Windows 10; CPE: cpe:/o:microsoft:windows_10
    Host script results:
    | smb-security-mode:
    | account_used: guest
    | authentication_level: user
    | challenge_response: supported
    |_ message_signing: disabled (dangerous, but default)
    |_smbv2-enabled: Server supports SMBv2 protocol
    Nmap done: 1 IP address (1 host up) scanned in 47.82 seconds

    ครั้งที่ 3
    รายการ File and Printer Sharing (SMB-In) ใน Firewall Inbound Rules เมื่อตั้งค่า Enabled = Yes
    และ
    ได้ปิด SMBv1 ตามคำแนะนำ เรื่อง “วิธีปิด SMBv1 เพื่อป้องกันตัวเองจากมัลแวร์เรียกค่าไถ่ WannaCry (ทำเถอะ ไม่ถึง 5 นาที)” https://www.blognone.com/node/92410
    ผลลัพธ์
    $ nmap -A -T4 -Pn -p445 192.168.x.yy
    Starting Nmap 7.01 ( https://nmap.org ) at 2017-05-15 13:55 ICT
    Nmap scan report for 192.168.x.yy
    Host is up (0.00051s latency).
    PORT STATE SERVICE VERSION
    445/tcp open microsoft-ds?
    Host script results:
    |_smbv2-enabled: Server supports SMBv2 protocol
    Nmap done: 1 IP address (1 host up) scanned in 47.87 seconds
    จากผลลัพธ์ในครั้งที่ 3 จะมีเพียง SMBv2

    สรุปว่า รายการ File and Printer Sharing (SMB-In) ใน Windows 10 Firewall Inbound Rules นั้นหากตรวจดูพบว่าคอลัมน์ Enabled มีค่า No ก็คือ ไม่ได้อนุญาตการเข้าถึง

    ในตัวอย่างนี้ก็คือไม่อนุญาตการเข้าถึง SMB (TCP Port 445) ซึ่งเป็นช่องทางเข้าโจมตีจาก Ransomware ที่ชื่อ WannaCrypt (บางทีเรียกย่อ ๆ ว่า WannaCry)

  • COMODO Certificates บรรทัดที่หายไปใน Google Chrome บน Ubuntu

    ผมทำ Zeroshell Firewall สำหรับเป็น network authentication หลังจากผม setup ส่วนที่เกี่ยวกับ Certificate ที่จะใช้กับ https ผมได้ import COMODO Certificates (ที่มหาวิทยาลัยใช้บริการ)

    เมื่อทดสอบการใช้งาน เข้าโปรแกรม Firefox บน Ubuntu เมื่อผู้ใช้ใส่ URL เพื่อไปเว็บไซต์ใด ๆ จะพบกับหน้า network authentication และ https ถูกต้อง (เป็นสีเขียว) แต่เมื่อเปิดด้วย Google Chrome จะพบว่า https จะไม่ถูกต้อง (เป็นขีด / สีแดง) ทำไมจึงเป็นเช่นนั้น

    เปิดเข้าไปดูรายการ Certificates ที่อยู่ใน Browser Firefox เทียบกับ Google Chrome ก็พบว่ามีความแตกต่างต่างกันที่บรรทัด คือ COMODO RSA Domain Validation Secure Server CA ดังนี้

    รูปข้างล่างนี้เป็นรายการ Certificates ของ COMODO ใน Firefox บน Ubuntu 16.04 ซึ่ง มี บรรทัดที่ว่านี้

    รูปข้างล่างนี้เป็นรายการ Certificates ของ Comodo ใน Google Chrome บน Ubuntu 16.04 ซึ่ง ไม่มี

    รูปข้างล่างนี้เป็นรายการ Certificates ของ COMODO ใน Google Chrome for Windows 10 ซึ่ง มี บรรทัดดังกล่าวอยู่ในแท็บ Intermediate Certification Authorities ซึ่งผมพบว่ารายการมันจะเกิดขึ้นหลังจากเคยไปเว็บไซต์ใด ๆ ที่ติดตั้ง COMODO Certs ไว้

    ผมก็ไป export “COMODO RSA Domain Validation Secure Server CA” จาก Firefox แล้วนำไป import ใน Google Chrome บน Ubuntu 16.04 เพื่อทดสอบว่ามันเกี่ยวกันมั้ย มันเกี่ยวกันจริง ๆ ด้วย แต่ผมไม่รู้ว่าทำไมจึงเป็นเช่นนั้น จึงต้องการจะบันทึกไว้ เผื่อใครที่รู้จะมาช่วยอธิบาย

    ในหน้า Login นั้น สัญลักษณ์ https แสดงเป็นสีเขียว ถูกต้องได้ ตามรูป

    ใครรู้มาเฉลยที

    เพิ่มเติมท่อนข้างล่างนี้เมื่อ 11 พ.ค. 60 ครับ

    ตอนนี้ผมได้คำตอบมาอัปเดตแล้วครับ จากที่ได้ความช่วยเหลือจากคุณพรพิทักษ์ สันติภาพถาวร ผู้ดูแล PSU CERTS เราพบว่าในหน้าคอนฟิกของ Zeroshell นั้น ในเมนู Captive Portal X.509 Authentication นั้นหลังจากเรา import #1 Trusted CA จากไฟล์ STAR_psu_ac_th.ca-bundle ดังรูป

    แล้วเราจะได้บรรทัด COMODO RSA Domain Validation Secure Server CA เพิ่มขึ้นมา ดังรูป

    และ #2 Imported Certificates and Keys ด้วยไฟล์ STAR_psu_ac_th.crt และ STAR_psu_ac_th_nopass.key ดังรูป

    แล้วเราจะได้บรรทัด OU=Domain Control Validated, OU=PositiveSSL Wildcard, CN=*.psu.ac.th มาดังรูป

    จากนั้น เราจะต้องไปคลิกตัวเลือก Authentication เพื่อ เลือก Allow the X.509 login with the certificates signed by the following Trusted CAs: ด้วย COMODO RSA Domain Validation Secure Server CA ดังรูป

    สรุปว่าผมยังตั้งค่าไม่ครบถ้วนนั่นเอง คือ ขาดการตั้งค่าเรื่อง Authentication นี่เองว่าให้อนุญาตการ login ด้วย certificate ที่ signed โดย Trusted CAs ที่เรา import เข้าไปนั่นเอง

    ขอให้บทความนี้มีประโยชน์ สร้างความเข้าใจ และ เป็นการบันทึกไว้ว่า หากเรานำ PSU CERTs ไปติดตั้งทำเป็น Captive Portal ในระดับคณะ ก็สามารถทำได้โดยอาจจะนำบทความนี้ไปเป็นตัวอย่างประกอบครับ

  • pGina fork 3.2.4.1 configuration

    ในตอนที่แล้วได้พูดถึงว่า pGina fork คืออะไรไปแล้ว ในครั้งนี้จะพูดถึงการตั้งค่าสำหรับทำเป็น Windows Authentication ในเครื่องคอมที่เป็น Windows 10 ผมได้ทำ screen capture มาเฉพาะที่ผมได้ใช้งาน ซึ่งก็คือ Local Machine, RADIUS plugin, Single User plugin และ LDAP plugin ครับ ตามดูกันมานะครับ

    หน้าแรกคือแท็บ General จะแสดงให้เห็นว่าโปรแกรมพร้อมทำงาน ให้ดูที่ข้อความที่แสดงเป็นสีเขียวใต้ข้อความ pGina Service status

    และตัวเลือกที่ผมเลือกใช้คือ Use original username to unlock computer (เพราะว่าผมจะใช้ Single User plugin ร่วมด้วย)

    แท็บถัดไปคือ แท็บ Plugin Selection อันแรกที่จะใช้คือ Local Machine คือ user ที่สร้างขึ้นภายใน Windows นั่นเอง สังเกตจะมีตัวเลือกที่ Authentication และ Gateway

    แก้ไขรูปภาพ Local Machine Plugin ต้อง ติ๊ก Notification ด้วย จึงจะมีผลกับ option Remove account and profile after logout

    จากนั้นให้คลิกปุ่ม Configure จะได้ค่าดีฟอลต์ ดังรูปข้างล่างนี้

    ผมจะใช้ค่าตัวเลือก Remove account and profile after logout when account does not exist prior to logon เพื่อที่ไม่ต้องเก็บ user profile ที่เป็น user จาก user database ภายนอก เช่น จาก RADIUS server เป็นต้น และ หากต้องการให้ user นั้นมีสิทธิมากกว่า User ทั่วไป ก็ตั้ง Mandatory Group เช่น ตั้งเป็น Administrators เป็นต้น

    ต่อไปก็มาถึง RADIUS plugin เลือก Authentication และ Notification จากนั้นคลิกปุ่ม Configure

    จะได้ค่าดีฟอลต์ ดังรูป

    ผมจะเลือกใช้และใส่ค่าต่าง ๆ เหล่านี้ครับ

    เลือก Enable Authentication เพื่อสอบถาม username/password

    เลือก Enable Accounting เพื่อส่งข้อมูลบันทึกค่า Acct-Status-Type ไปยัง RADIUS Server

    แล้วระบุ Server IP และ Shared Secret ที่จะต้องตรงกันกับที่ระบุอยู่ใน config ที่ RADIUS server เช่น FreeRADIUS จะอยู่ในไฟล์ /etc/freeradius/clients.conf เป็นต้น

    (13 ก.ค. 2561) เลือก Called-Station-ID ด้วย หากต้องการเลข MAC Address เก็บด้วยนอกจากเก็บ IP

    (10 ก.ค. 2561) พบว่าจำเป็นต้องเลือก Accounting Options หัวข้อ Send Interim Updates เพื่อให้มีการส่งค่า accounting ได้ (โดยใช้ค่า Send update every 900 seconds ตามที่เป็นค่า default)

    แล้วระบุ IP Address Suggestion เช่น 192.168.1. หมายถึงระบุว่าจะใช้ข้อมูลของ network นี้ เพราะว่าในเครื่องอาจมีการติดตั้งซอฟต์แวร์ที่จำลอง network interface เพิ่มขึ้นมาอีกอัน เป็นต้น

    ส่วนค่าอื่น ๆ ปล่อยไว้ตามเดิม

    ต่อไปก็เป็น Single User plugin ที่เราจะใช้เพื่อให้เป็น Windows User Profile หลักของ user ทุกคนที่มาจาก RADIUS plugin หรือ LDAP plugin จะทำให้เมื่อเป็น User ที่ไม่เคยเข้าใช้เครื่องนี้มาก่อน จะเข้าได้อย่างรวดเร็วกว่าการที่จะให้ Windows สร้าง new user profile

    ให้คลิกที่ Gateway แล้วคลิกปุ่ม Configure จะได้ค่าดีฟอลต์ ดังรูป

    ให้ใส่ Username ที่ได้สร้างไว้ใน Windows ตัวอย่างเช่น ผมสร้าง user ชื่อ labuser ไว้ มี password คือ 123456 เป็นต้น ตรงค่า Domain ไม่ได้แก้ไข แล้วไปลอกตัวเลข RADIUS plugin (หากใช้) หรือ LDAP plugin (หากใช้) มาใส่ โดยให้คลิกเลือก Only substute if any แล้วคลิกช่องว่าง เพื่อวางตัวเลข ดังรูป

    ถัดไปคือแท็บ Plugin Order ผมไม่ได้แก้ไขใด ๆ คงค่าเดิมไว้

    ตอนนี้ก็ได้เวลาทดสอบด้วยแท็บ Simulation

    ทดสอบใส่ username และ password มันจะตรวจสอบ ทุก ๆ plugin ที่มี แล้วแสดงค่าสุดท้าย(ในช่องด้านขวา) Final User Data ที่ใช้ในการเข้าใช้ Windows หากได้ผลลัพธ์แบบนี้ ก็ถือได้ว่า ถูกต้อง

    หรือแบบนี้ก็ถูกต้อง แม้ว่าจะมีข้อความบนแถบสีแดงในบรรทัด Local Machine plugin และเป็นค่า False ก็แสดงว่า user คนนี้ไม่เคยเข้าใช้เครื่องนี้มาก่อน 

    แต่หากเราจะเลือกใช้ LDAP plugin แทน RADIUS plugin ก็กลับไปที่แท็บ Plugin Selection แล้วเลือก LDAP plugin และคลิกเลือก Authentication อย่างเดียว จากนั้นคลิกปุ่ม Configure จะได้ค่าดีฟอลต์ ดังรูป

    ที่ผมทดสอบใช้งานกับ LDAPS ที่ติดตั้งไว้ที่เครื่อง Microsoft AD ผมใส่ค่าในช่องต่าง ๆ ดังรูป

    LDAP Host(s) ใส่ได้มากกว่า 1 ชื่อ เว้นช่องว่างระหว่างชื่อ

    LDAP Post ใช้ 636 และเลือก Use SSL

    สำหรับ Search DN และ Search Password จะได้จากผู้ดูแล Microsoft AD ของหน่วยงานให้กับเรามาครับ

    ไม่เลือก Allow Empty Passwords

    เลือก Search for DN และใส่ค่าในช่อง Search Filter และ Search Context(s) ตามข้อมูลที่ได้รับจากผู้ดูแล Microsoft AD ของท่าน

    แล้วหากต้องการใช้ Single User plugin ด้วยก็ให้นำ UID ของ LDAP plugin (ดูที่แท็บ Plugin Selection ที่คอลัมน์ขวาสุดของรายการ LDAP plugin) ไปคีย์ใส่ในช่องว่างใน Single User plugin ด้วย

    นอกจากนี้ เราจะต้องใช้โปรแกรมประเภท System Restore เพื่อคืนค่ากลับเหมือนเดิม เมื่อ User ได้ Logout/Shutdown ไปแล้ว เพื่อป้องกันมิให้ระบบ Windows เปลี่ยนแปลงจากการใช้งานของ User คนก่อนหน้า

    คิดว่าคงจะได้นำไปใช้งานกันนะครับ

    เพิ่มเติมเนื้อหา

    คัดลอกเนื้อหามาจากเพจเดิม เรื่อง การตั้งค่า pGina และ FreeRADIUS เพื่อส่งค่า RADIUS Accounting ไปยัง Firewall ของมหาวิทยาลัย

    FreeRADIUS Version 2.2.8 แก้ไขไฟล์ /etc/freeradius/proxy.conf อาจด้วยคำสั่ง vi หรือ nano ตามชอบ

    FreeRADIUS Version 3.0.16 แก้ไขไฟล์ /etc/freeradius/3.0/proxy.conf

    เพื่อให้มีค่า realm NULL (ประมาณบรรทัดที่ 672) ที่กำหนดค่า Accounting Port เพียงอย่างเดียวส่งไปยังเครื่อง Firewall

    pgina06
    รูปก่อนแก้ไข

    pgina07
    รูปหลังแก้ไข

    ในรูปตัวอย่างเครื่อง Firewall คือ radius.hatyai.psu.ac.th และต้องรู้ค่า secret ที่ตั้งเพื่อใช้สำหรับเครื่อง FreeRADIUS และ Firewall ในที่นี้คือ yoursecret (อันนี้ต้องมีการติดต่อกับ network administrator ของมหาวิทยาลัยเพื่อร่วมกันตั้งค่านี้)

    และแก้ไขอีกแฟ้มคือ

    FreeRADIUS Version 2.2.8 แก้ไขที่แฟ้ม /etc/freeradius/sites-available/default
    FreeRADIUS Version 3.0.16 แก้ไขที่แฟ้ม /etc/freeradius/3.0/sites-available/default

    ประมาณบรรทัดที่ 325 Pre-accounting ใน module ชื่อ preacct

    preacct {
                   preprocess
                   เพิ่ม
    }

    หากยังไม่มีบรรทัดเหล่านี้ ให้เพิ่มด้วยต่อท้ายบรรทัด preprocess

    # append update for pGina no attribute Framed-IP-Address
    if (NAS-IP-Address != 127.0.0.1) {
           update request {
                 Framed-IP-Address = "%{NAS-IP-Address}"
           }
    }

    แล้ว restart FreeRADIUS ใหม่

    pgina08
    sudo service freeradius stop
    sudo service freeradius start

    จากนั้นรอให้ทางฝั่งผู้ดูแล Firewall ตั้งค่าโปรแกรมที่ดึงข้อมูลที่ FreeRADIUS ของเราส่งไปนำไปใส่ใน Firewall Rule อนุญาตเครื่องไคลเอ็นต์ไม่ต้อง login ซ้ำ

  • pGina fork Open Source Windows Authentication

    เราใช้งาน pGina for Windows เวอร์ชั่น 3.1.8.0 มาสักระยะหนึ่งแล้ว คิดว่าแอดมินดูแลห้องคอมคงจะรู้จักกันดีว่าเป็นโปรแกรมสำหรับให้ผู้ใช้งานใส่ username และ password ของ user database ภายนอกได้ เวอร์ชั่นนี้ก็ยังคงใช้งานได้ดีอยู่ครับ แต่ตอนนี้หากเราจะให้ pGina ส่ง RADIUS Accounting ไปยัง RADIUS Server จะทำได้ไม่สมบูรณ์

    ผมค้นหาอยู่ว่าจะมีเวอร์ชั่นที่ใหม่กว่ามั้ย ก็พบว่าปัจจุบันนี้ เว็บไซต์เดิม pGina นั้นจะมีถึงเพียงแค่เวอร์ชั่นเก่า

    แต่มีคนนำไปทำเพิ่มเติมจาก project เดิม เรียกว่าการ fork project จึงเกิดเป็นเว็บไซต์อีกอันคือ pGina fork

     ซึ่งเวอร์ชั่นปัจจุบันที่ผมทดสอบแล้วว่าใช้งานกับ Windows 10 ได้ คือเวอร์ชั่น 3.2.4.1 แม้ว่าจะมีเวอร์ชั่นล่าสุดกว่านี้ (3.9.9.7) แต่ Windows 10 มันแจ้งเตือนว่าเป็นเวอร์ชั่นที่ไม่ได้ระบุ Publisher ที่แน่ชัด Windows 10 จึงเตือนให้อย่าติดตั้ง ผมก็ไม่แน่ใจว่าเพราะเหตุใด 

    สรุปว่า pGina fork ก็คือ pGina ที่มีคนนำไปพัฒนาต่อโดยการ fork จาก project เดิม และมาเป็น project อีกอันที่นี่ http://mutonufoai.github.io/pgina/ หรือ ที่นี่ก็ได้ https://github.com/MutonUfoAI/pgina/

    ดาวน์โหลดเวอร์ชั่น 3.2.4.1 ได้ที่นี่ https://github.com/MutonUfoAI/pgina/releases/download/3.2.4.1/pGinaSetup-3.2.4.1.exe

    ในตอนถัดไปจะมาพูดถึง pGina fork 3.2.4.1 configuration ครับ

     

  • ตั้งค่า 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)

  • บาง plugin ก็ไม่อัปเดตขึ้นตาม WordPress

    plugin ชื่อ member access (member-access.1.1.6.zip) ทำให้ในขณะนี้ไม่สามารถเพิ่มบทความที่ให้เฉพาะสมาชิกอ่านได้เท่านั้น แต่ต้องเปิดเป็น public ได้อย่างเดียว มิฉะนั้นในหน้าแรก (Home) จะไม่เป็นหน้าว่าง ๆ ต้อง login จึงเห็นบทความทุกเรื่องได้

     

     

  • แก้ไข wordpress post แล้ว update ไม่ได้ แอดมินต้องแก้ไขอย่างไร

    หลังจากย้าย WordPress site ไปลง ubuntu 16.04.1 ก็ได้เตรียมติดตั้งโปรแกรมต่าง ๆ แต่แล้วเมื่อลองจะแก้ไขบล็อก กลับทำไม่ได้ ขึ้นข้อความว่า

    “The sysadmin.psu.ac.th page isn’t working
    sysadmin.psu.ac.th is currently unable to handle this request.
    HTTP ERROR 500”

    เกิดอะไรขึ้นหล่ะ แล้วเราจะต้องทำอย่างไร

    ค้นหาเจอเว็บนี้ ที่บอกเราว่า ให้ลองเปิด DEBUG
    https://wordpress.org/support/topic/http-error-500-internal-server-error-whole-blog-is-down

    “So to understand where the reason of 500 error is I suggest go to wp-config.php in the root of your website and add there two lines:
    define(‘WP_DEBUG’, true);
    @ini_set(‘display_errors’, 1);
    After that you can see exactly place which linked with 500 error.
    After fixing I suggest return it how it was by default (only one line)
    define(‘WP_DEBUG’, false);”

    เมื่อใช้คำสั่งตรวจสอบ error.log ครั้งแรก ไม่เห็นอะไรเพิ่มเติม แต่พบ error 404 ของ plugin ที่ชื่อ WP Like Button ก็ลองปิด plugin นี้ดูเราจึงจะพบ error ก็เห็น error ต่าง ๆ ได้จากคำสั่งข้างล่างนี้

    tail -f /var/log/apache2/error.log

    Fatal error: Uncaught Error: Class ‘DomDocument’ not found in /var/www/wordpress/wp-content/plugins/google-sitemap-plugin/google-sitemap-plugin.php:144

    ค้นหาต่อว่าทำไมจึงขาด DomDocument ก็เจอเว็บนี้
    https://blog.namran.net/2009/03/10/php-fatal-error-class-domdocument-not-found-in-blabla/
    แนะนำว่า

    “the solution turn out to be yum install php-xml”

    ตรวจสอบดู เออนะ ไม่มี php-xml จริง ๆ ด้วย ด้วยคำสั่งนี้
    dpkg -l | grep php-xml
    dpkg -l | grep php7.0-xml

     

    ทีนี้เราก็ติดตั้ง php-xml ด้วยคำสั่ง
    sudo apt install php-xml
    จะได้
    libxslt1.1 php-xml php7.0-xml

    ทำให้สามารถใช้งานได้ปรกติแล้ว ซึ่งในกระบวนการ post และ ppdate post นั้น ได้แก้ไข post ให้แล้ว เพียงแต่ว่ามันไปทำต่อที่ google-sitemap-plugin ไม่สำเร็จจึงแสดงเป็น error ออกมา

    ขอบคุณเพื่อน ๆ ที่ช่วยกันแก้ไขเรื่องนี้ด้วยกันด้วยครับ

  • Technical Talk หัวข้อ Open Source: Smart Computer Lab

    smartcomputerlab-wunca33 ได้ไปร่วมงาน WUNCA ครั้งที่ 33 ที่จัดที่จุฬาลงกรณ์มหาวิทยาลัยเมื่อ 13-15 กรกฎาคม 2559 และได้บรรยายในส่วน Technical Talk หัวข้อ Open Source: Smart Computer Lab จึงอยากนำมาเล่าสู่เพื่อน ๆ ฟัง เผื่อว่าเพื่อน ๆ จะช่วยแนะนำบอกต่อว่า มีระบบจัดการห้องบริการคอมพิวเตอร์ที่ดีน่าใช้ชื่อ PSU12-Sritrang Server

    IMG_0131

    เอกสารประกอบการบรรยาย

    [pdf-embedder url=”https://sysadmin.psu.ac.th/wp-content/uploads/2016/07/open-source-smart-computer-lab.pdf”]

     

    Link to Youtube video

    • วิดีโอชุดแนะนำ Open Source: Smart Computer Lab
      Short URL: https://goo.gl/1ly7c1
    • วิดีโอชุดแนะนำการติดตั้งและใช้งาน Server สำหรับทำ Cloning PC และ Control PC
      Short URL: https://goo.gl/SLheTL

     

    แผ่นพับแนะนำ PSU12-Sritrang Server สำหรับห้องบริการคอมพิวเตอร์ เพื่อบอกว่าระบบนี้ทำอะไรได้บ้าง คลิกเปิดอ่านแผ่นพับ

     

    หวังว่าคงจะได้รับข่าวดีนะครับ ขอบคุณครับ

     

  • วิธีลดขนาดไฟล์ photo ให้เล็กลงก่อนอัปโหลดขึ้นเว็บไซต์

    ภาพถ่ายที่ได้จากสมาร์ทโฟนที่มีขนาดไฟล์ใหญ่เป็น 1-2 MB แล้วทำให้มันมีขนาดไฟล์เล็กลงได้ด้วย tool อะไรบ้าง เพื่อนำภาพไปแขวนบนเว็บไซต์ของเราที่ไม่มีความสามารถในการช่วยบีบอัดขนาดไฟล์ให้อัตโนมัติในขณะที่อัปโหลดภาพ

    เราคงจะข้ามการพูดถึงโปรแกรม Photoshop ไปไม่ได้ นั้นเป็นสิ่งที่ใครก็ตามที่มีเงินซื้อโปรแกรมมาใช้ แต่หากต้องการหา tool ที่ใช้งานได้โดยไม่มีค่าใช้จ่าย จะมีมั้ยนะ

    ผมค้นใน google search เจอเว็บนี้ https://tinypng.com/ เป็นการนำภาพถ่ายของเราไปบีบอัดด้วย online tool ไม่ต้องติดตั้งโปรแกรมใด ๆ (เพียงแต่หากกังวลเรื่องไม่อยากให้รูปไปถูกเก็บไว้ที่เซิร์ฟเวอร์ของเขา ก็อย่าใช้ครับ) ในเนื้อหาเว็บนี้บอกไว้ว่า ภาพถ่ายที่ได้จากการบีบอัดเมื่อนำไปวางบนเว็บไซต์ มันใช้ได้หมดทุกเบราว์เซอร์ ยกเว้น IE6 ซึ่งเก่ามากแล้ว

    และทางเลือกที่จะติดตั้งโปรแกรมเพิ่มบน Windows ครับ ขอแนะนำติดตั้งโปรแกรม GIMP for Windows (https://www.gimp.org/windows/) ทำดังนี้

    reduce-2016-06-28 14_59_42
    ขั้นตอน
    1.เปิดไฟล์เดิม
    2.แล้วเลือก export as… ตั้งชื่อไฟล์ตามต้องการ
    3.แล้วคลิก export จากนั้นมันจะมี dialog ถามให้กำหนด quality

    reduce-2016-06-28 15_01_14
    4.จากเดิม 91% ผมลองลดลงไปถึง 41% ภาพถ่ายขนาดเท่าเดิม (กว้างxยาว) แต่ขนาดไฟล์ลดลงจาก 2.1 MB เป็น 601.7KB

    reduce-2016-06-28 15_14_31

     

    นอกจากนี้ ก็อาจเลือกใช้

    ขอบคุณเพื่อน ๆ ที่ช่วยกันแนะนำมา และขอบคุณล่วงหน้าถ้าจะกรุณา comment มาครับ