วันศุกร์ที่ 15 เมษายน พ.ศ. 2559

[Mikrotik] วิธีการ forward port ด้วย dst-nat และ การใช้ cloud ddns

วันนี้ผมจะมานำเสนอวิธีการ forward port ด้วย dst-nat และ การใช้ cloud ddns บนอุปกรณ์ Mikrotik ในการสาธิตนี้ผมจะใช้วิธี forward เข้าหา http service ของตัว Mikrotik จึงจะมีขั้นตอนที่เพิ่มขึ้นมาแต่หากจะ forward ไปหาเครื่องอื่นๆ สามารถข้ามไปทำขั้นตอนที่ 4 ได้เลยครับ

ขั้นตอนที่ 1 : สร้าง Interface bridge ขึ้นมาโดยกดที่ Bridge แล้วกดที่ +


ให้ใส่ชื่อของ Interface bridge ที่ช่อง Name ดังรูป


เมื่อตั้งชื่อเสร็จแล้วให้เลือกที่ STP แล้วทำการปิดการทำงานของ STP โดยเลือก Protocol Mode เป็น none ซึ่งขั้นตอนนี้ปกติไม่ต้องทำก็ได้ครับ ผมใส่มาไว้ทำความคุ้นเคยกับมันไว้ ว่างๆ ผมจะแยกเป็นบทความเฉพาะ STP อีกครั้ง


จากนั้นกด OK จะได้ Interface bridge เพิ่มขึ้นมาดังรูป


ขั้นตอนที่ 2 : ตั้งค่า IP ให้กับ Interface bridge โดยคลิกที่ Menu IP > Address แล้วกด + จากนั้นใส่ IP ที่ต้องการลงไป ในตัวอย่างผมใส่ 192.168.0.1/32 เพราะผมต้องการใช้งานเพียง IP 192.168.0.1 เพียง IP เดียวเพื่อรองรับการ forward port


ขั้นตอนที่ 3 : เปิด Service www ของ Mikrotik โดยไปที่ Menu IP > Services จากนั้นเลือกที่ www แล้วกดเครื่องหมายถูกด้านบน


ขั้นตอนที่ 4 : จะเป็นขั้นตอนการเริ่มทำ forward port ด้วย dst-nat ให้ไปที่ Menu IP > Firewall > NAT จากนั้นกด +


ใน Tab General เลือก Chain เป็น dstnat จากนั้นกำหนดค่าต่างๆ ตาม Port ที่ต้องการ forward โดย Dst. Port และ In. Interface จะเป็น Port และ Interface ที่ใช้เข้ามาจากภายนอก ในส่วนของ Port จากข้างนอกเราจะกำหนดให้ตรงหรือไม่ตรงกับ Port ของเครื่องปลายทางก็ได้ ตามแต่เราต้องการใช้งาน


จากนั้นเลือกมาที่ Tab Action ให้เลือก Action เป็น dst-nat จากนั้นให้กำหนด To Addresses ไปที่ IP ของเครื่องที่เราต้องการจะทำการ forward และ To Ports ไปที่ Port Service ที่ต้องการจะ forward บทเครื่องที่กำหนด IP ไว้ จากนั้นกด OK


ขั้นตอนที่ 5 : การนำ Cloud ของ Mikrotik มาใช้งาน ตัว Mikrotik นั้นมี Feature DDNS เป็นของตัวเองโดยใช้ชื่อ Feature ว่า Cloud โดยวิธีการเปิดใช้งานนั้นเพียงแค่ไปที่ Menu IP > Cloud จากนั้นกดถูกที่ DDNS Enable และ Update Time จากนั้นกด OK เราก็จะได้ DDNS url มาใช้งานแบบฟรีๆ โดย url จะอยู่ที่ DNS Name สามารถ Copy ไปใช้ได้เลย


ขั้นตอนที่ 6 : การทดสอบ โดยการนำ DDNS url มา และ ตามด้วย :[Port ที่เรา Set ไว้ที่ Tab General ต้องสร้าง dst-nat] ก็จะได้ผลลัพท์ออกมาเป็นแบบนี้ แต่หากคุณทำการ forward service อย่างอื่นก็คงต้องทดสอบตามกระบวนการวิธีการทำงานของ Service นั้นๆ ครับ


หากท่านใดขี้เกียจในการคลิก Menu ผมแถม Script ให้ด้วยแล้วกันครับ เอาไปปรับแต่งกันเอาเองนะครับ
/interface bridge
add name=br-loopback protocol-mode=none
/ip address
add address=192.168.0.1 interface=br-loopback network=192.168.0.1
/ip cloud
set ddns-enabled=yes
/ip firewall nat
add action=dst-nat chain=dstnat dst-port=8080 in-interface=pppoe-sinet1 \
    protocol=tcp to-addresses=192.168.0.1 to-ports=80
/ip service
set www disabled=no

[Linux] การแบ่ง Partition แบบ LVM บน Debian

วันนี้ผมจะมาแนะนำเรื่องการแบ่ง Partition โดยใช้ LVM บน Linux Distribution Debian ซึ่งวิธีเดียวกันนี้สามารถนำไปประยุกต์ใช้กับ Ubuntu ได้ด้วย ส่วนขั้นตอนนั้นจะถือว่าซับซ้อนกว่าการแบ่ง Partition บน Microsoft Windows พอสมควร แต่ข้อดีคือให้ความเป็นระเบียบในการจัดเก็บข้อมูลมากกว่า จากบทความนี้ทุกท่านสามารถนำไปประยุกต์ใช้ตามเหมาะสมได้เลยครับ เพราะหากแบ่งไปใช้งานกับ Service ที่แตกต่าง ก็อาจจะต้องแบ่งเนื้อที่ๆ แตกต่างกันออกไปครับ ส่วนขั้นตอนนั้นมีดังนี้ครับ

ขั้นตอนที่ 1 : ทำการติดตั้งมาจนถึงขั้นตอนการแบ่ง Partition disks แล้วเลือกไปที่ Configure the Logical Volume Manager


จากนั้นจะมีการถามขึ้นมาว่าจะทำการ Configure LVM หรือไม่ ให้ตอบ Yes ไปเลย


ขั้นตอนที่ 2 : ทำการสร้าง Volume Group โดยกดไปที่ Create volume group

Volume Group กล่าวคือ เป็นการสร้างกลุ่มเพื่อรวมเนื้อที่ของ Physical Group หลายๆ กลุ่มเข้าด้วยกันให้กลายเป็นก้อนขนาดใหญ่ก้อนเดียว


ทำการใส้ชื่อ volume group จากนั้นกด Continue


จากนั้นเลือก Physical Group เพื่อรวมเข้าให้เป็น Volume group เดียวกัน


จากนั้นจะให้ยืนยันการตั้งค่า Volume group เพื่อที่จะเริ่มสร้าง Volume group ให้เลือก Yes เป็นอันเสร็จสิ้นขั้นตอนการสร้าง Volume group


ขั้นตอนที่ 3 : สร้าง Logical volume โดยกล่าวคือการนำ Volume group มาแบ่งย่อยๆ ให้กลายเป็น Group ย่อยๆ อีกทีหนึ่งเหมือนกับการแบ่ง Drive บน Microsoft Windows นั้นเอง แต่ต่างกันตรงที่ Logical volume นั้นจะแยกตามการใช้งานซึ่ง จะแบ่งหน้าที่ตาม Mount Point โดยมีรายละเอียดดังนี้

          / - the root file system
          /boot - static files of the boot loader
          /home - user home directories
          /tmp - temporary files
          /usr - static data
          /var - variable data
          /srv - data for services provided by this system
          /opt - add-on application software packages
          /usr/local - local hierarchy
          Enter manually

นอกจากนั้นยังมีในส่วนของ swap ที่จะนำมาใช้ในกรณีที่ ram ไม่มีพื้นที่พอใช้งาน ควรทำการสร้างไว้โดยใช้เนื้อที่เป็น 2 เท่าของ ram แต่ทั้งนี้ หาก server ของคุณเริ่มมีการใช้งาน swap ก็หมายความว่าคุณควรจะเพิ่ม ram ให้กับ server ได้แล้ว เพราะ swap นั้นทำงานบน harddisk ซึ่งช้ากว่า ram มาก ทำให้ server ของคุณให้บริการได้ช้าลงไปด้วย

เลือกไปที่ Create logical volume


จากนั้นเลือก Volume group ที่จะนำมาทำการแบ่งเป็น Logical volume


ทำการตั้งชื่อ Logical volume โดยแนะนำให้ตั้งชื่อตามหน้าที่ของ Logical volume เพื่อไม่ให้เกิดการสับสน ตัวอย่างเช่น swap ดังรูปด้านล่าง



จากนั้นกำหนดขนาดพื้นที่ให้แก่ Logical volume ในส่วนของ swap นั้นควรกำหนดให้มีค่าเป็น 2 เท่าของ ram เช่นเครื่อง server ใช้ ram 2 GB swap ควรมีขนาดเป็น 4 GB เป็นต้น


จากนั้นให้ทำการสร้าง Logical volume จนครบตามต้องการ แล้วให้เลือกที่ Finish


ขั้นตอนที่ 4 : ทำการกำหนด Partitions type และ Mount point ให้กับ Logical volume ทุก Partition โดยวิธีการคือเลือกไปที่ Logical volume ที่จะทำการกำหนด ตัวอย่างดังรูปจะเป็นการกำหนดให้กับ Logical volume ที่จะกำหนดให้เป็น root


เมื่อกดจะเข้าสู่ Partition settings ให้ทำการเลือก Use as: แล้วเปลี่ยน Partition type


ซึ่งจะมีให้เลือกดังรูปด้านล่าง โดยส่วนของการเก็บข้อมูลควรเลือกเป็น Ext4 Journaling file system ส่วนของ swap ให้เลือกเป็น swap area


จากนั้นเลือก Mount point ที่ต้องการ ให้ตรงกับ Logical volume ที่สร้าง จากนั้นให้กด Done setting up the partition

ให้ทำการตั้งค่าจนเสร็จเรียบร้อยทุก Logical volume ตัวอย่างดังรูป


เมื่อทำการตรวจสอบเรียบร้อยแล้วให้เลือก Finish partitioning and write changes to disk


จะมีข้อมูลรายละเอียดทั้งหมดที่ตั้งค่า และ ให้ทำการยืนยันที่จะดำเนินการ ให้ทำการตอบ Yes เป็นอันเสร็จสิ้นขั้นตอน


หลังจากนี้ก็ดำเนินการติดตั้งระบบปฏิบัติการต่อจนเสร็จสิ้นได้เลยครับ

Credit :
- https://wiki.archlinux.org/index.php/partitioning#.2Fboot
- https://spalinux.com/2008/05/use_lvm_to_manage_disk_part1
- คุณสุรนุช สัพโส นักวิชาการคอมพิวเตอร์ สำนักเทคโนโลยีสารสนเทศ มหาวิทยาลัยขอนแก่น

วันพุธที่ 13 เมษายน พ.ศ. 2559

[Linux] การตั้งค่า IP Address บน Debian/Ubuntu

ในวันนี้ผมจะมาแนะนำเกี่ยวกับ Basic เบื้องต้นอย่างหนึ่งของ Linux ครับนั้นคือการตั้งค่า IP Address และ DNS นั้นเอง ถึงจะเป็นแค่เพียงพื้นฐานแต่มีความสำคัญอย่างยิ่งสำหรับการใช้งานเลยทีเดียว ในส่วนของบทความนี้ผมจะอ้างอิง Linux Distribution Debian และ Ubuntu เป็นหลักครับ สำหรับขั้นตอนการตั้งค่านั้นมีขั้นตอนดังนี้ครับ

ขั้นตอนที่ 1 : การตั้งค่า IP Address ก่อนการตั้งค่านั้นจะต้องเข้าเป็นสิทธ์ Root ก่อนเสมอ ไม่เช่นนั้นจะไม่สามารถแก้ไขไฟล์ได้ โดยการแก้ไขไฟล์ก็สามารถใช้งาน vi , vim หรือ nano แล้วแต่ถนัด

การตั้งค่า IP Address นั้นทั้งหมดจะถูกใส่ไว้ที่ไฟล์ interfaces ใน directory /etc/network หากต้องการแก้ไขสามารถเข้าไปแก้ที่ไฟล์ดังกล่าวได้เลย

ตัวอย่างคำสั่ง
                      nano /etc/network/interfaces

โดยค่าเริ่มต้นนั้น interface eth0 จะถูกกำหนดไว้ให้เป็น dhcp แต่ใน server ปกติแล้วจะใช้การ fix ip ซะมากกว่า


โดยในการ fix ip นั้นให้แก้ไขค่า eth0 ให้เป็นดังนี้
                     auto eth0
                     iface eth0 inet static
                                 address x.x.x.x ; ip address ที่ต้องการ
                                 netmask x.x.x.x ; subnet mask ของเครือข่าย
                                 gateway x.x.x.x ; ip gateway ของเครือข่ายที่จะใช้งาน
ตัวอย่างการใช้งานดังรูปด้านล่าง

เพิ่มเติม : กรณีมีมากกว่า 1 interfaces ให้ทำการตั้งค่าต่อเป็น eth1 , eth2 ต่อเลยครับ แต่ในส่วนของ gateway ให้ใส่เบอร์ที่ต้องการใช้ออกเน็ตเท่านั้น ส่วนเบอร์อื่นให้ทำการ static route เอา ซึ่งจะเขียนในบทความต่อๆ ไป


ขั้นตอนที่ 2 : การตั้งค่า dns server โดย config ของ dns server นั้นจะอยู่ที่ไฟล์ /etc/resolv.conf ให้ทำการเข้าไปแก้ไขและใช้คำสั่งดังนี้
                            nameserver x.x.x.x ; ip dns ที่ต้องการใช้งาน
ตัวอย่างการใช้งานดังรูปด้านล่าง


ขั้นตอนที่ 3 : reset interfaces เพื่อใช้งานการตั้งค่าใหม่ โดยในภาพตัวอย่างเป็นการ down ทีละ interfaces ครับซึ่งจะปลอดภัยมากกว่าการสั่ง reset ทั้งหมด ซึ่งหากเราเข้ามาแก้ด้วย ssh อาจจะทำให้เราหลุดจาก server ได้ โดยคำสั่งในการ reset interfaces ดังนี้ครับ

                         ifdown eth0 ; ทำการ down interface eth0
                         ifup eth0 ; ทำการ up interface eth0

จากนั้นตรวจสอบการทำงานโดยใช้คำสั่ง
                         ifconfig

หากปรากฎผลลัพธ์ดังรูป ได้เป็น ip ที่เราต้องการก็ถือว่าการตั้งค่าเสร็จสิ้นครับ


ขั้นตอนที่ 4 : อันนี้แถมครับ ลองใช้โปรแกรม putty ssh เข้าไปที่ขา eth0 ครับ ทั้งนี้ต้องแน่ใจว่ามีการเปิด service ssh ไว้แล้วบน server ครับ

การใช้งาน putty ก็ไม่ยากครับ ใส่ ip ไปที่ช่อง hostname เลย ในส่วนของ port ก็ใส่ port 22 ซึ่งเป็น port เริ่มต้นของ ssh อยู่แล้ว จากนั้นก็กด open เพื่อเชื่อมต่อได้เลยครับ

link download putty : http://www.putty.org/


จะมี pop-up security alert ให้กด yes ไปเลยครับ


หากไม่มีอะไรผิดพลาดจะเข้ามาสู่หน้า login ใส่ username password ก็จะสามารถเข้ามาสู่ server ได้เลยครับ ทั้งนี้ในส่วนของ debian จะมีการกำหนดไม่ให้ user root login ผ่าน ssh ได้ เป็นค่า default ครับหากมีความจำเป็นให้ไปทำการปรับตั้งค่าเอาครับ แต่ส่วนตัวผมเห็นว่าคงไม่ปลอดภัย จึงควรสร้าง user แล้วให้ใช้คำสั่ง su เข้าเป็น root จะดีกว่าครับ


วันอังคารที่ 12 เมษายน พ.ศ. 2559

[Radius] การติดตั้ง freeradius โดยใช้ฐานข้อมูล mysql บน Debian ตอนที่ 1

วันนี้ผมจะมานำเสนอวิธีการติดตั้ง freeradius ซึ่งจะนำมาใช้ในการควบคุมระบบ User ของสำนักงานหรือองค์กรของท่านครับ โดยวิธีการติดตั้งนั้นมีขั้นตอนไม่ยากดังนี้ครับ

ขั้นตอนที่ 1 : ทำการติดตั้ง mysql เพื่อใช้ไว้เก็บข้อมูลโดยใช้คำสั่ง
               
                     apt-get install mysql-server

จะมีหน้าต่างถามขึ้นมาว่าจะดำเนินการต่อหรือไม่ ให้ตอบ Y เพื่อทำการติดตั้ง


เมื่อติดตั้งไปสักพักจะมีหน้าต่างมาให้ใส่ password ของ root mysql ให้ใส่ password ที่ต้องการลงไป


ต่อมาจะมีการถามยืนยัน password ให้ใส่ password เข้าไปอีกครั้ง


หากติดตั้งเรียบร้อยไม่มีปัญหา จะได้ผลลัพธ์ตามภาพด้านล่าง


ขั้นตอนที่ 2 : ทำการติดตั้ง freeradius ที่จะใช้กับฐานข้อมูล mysql ด้วยคำสั่ง

                     apt-get install freeradius freeradius-utils freeradius-mysql

ระบบจะถามว่าจะดำเนินการต่อหรือไม่ ให้ตอบ Y เพื่อติดตั้งครับ


หากติดตั้งเรียบร้อยจะได้ผลลัพธ์ตามภาพด้านล่าง คือไม่มี Error ใดๆ ครับ


ขั้นตอนที่ 3 : สร้างฐานข้อมูลให้ freeradius ด้วยคำสั่งดังนี้
                     mysql -u root -p                 ; ใช้เพื่อ login เข้า mysql โดย user root ให้ทำการใส่ password เพื่อเข้าได้เลยครับ
                     CREATE DATABASE radius;             ; ใช้เพื่อสร้างฐานข้อมูลชื่อว่า radius
เมื่อดำเนินการเรียบร้อยให้ออกจาก mysql command โดยใช้คำสั่ง exit ครับ


จากนั้นทำการเพิ่มตารางของ radius เข้าไปที่ database โดยใช้คำสั่งดังนี้

               mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql
               mysql -u root -p radius < /etc/freeradius/sql/mysql/nas.sql

โดยเมื่อใช้คำสั่งแต่ละคำสั่งจะมีการถาม password root ให้ทำการใส่แล้วกด enter ได้เลยครับ


ขั้นตอนที่ 4 : ปรับ file config ของ freeradius เพื่อเรียกใช้งาน database ที่เราสร้าง โดยการเข้าไปแก้ไข file sql.conf ซึ่งจะอยู่ที่ /etc/freeradius/sql.conf
จากนั้นแก้บันทัดดังนี้
                      login = "[user database ของ radius ถ้ายังไม่ได้สร้างใส่ root ไปก่อนก็ได้]"
                      password = "[password database ของ radius ถ้าหากใช้ root ก็ใส่ password root]"

ตัวอย่างเช่น
                      login = "root"
                      password = "12345678"


จากนั้นเลื่อนหาคำสั่ง readclients = yes
โดยแก้จาก #readclients = yes เป็น readclients = yes เอาเครื่องหมาย # ออกเพื่อเปิดการใช้งาน


จากนั้นเปลี่ยนไปแก้ไข file radiusd.conf โดยไฟล์จะอยู่ที่ /etc/freeradius/radiusd.conf
ทำการแก้ไขจาก #$INCLUDE sql.conf เป็น $INCLUDE sql.conf เอา # ออก เพื่อให้เปิดใช้งานคำสั่งเรียกใช้ไฟล์ sql.conf จากนั้นทำการบันทึกไฟล์


ขั้นตอนที่ 5 : แก้ไขไฟล์ /etc/freeradius/sites-available/default แก้ไขโดยการนำ # ออกจากหน้าคำสั่ง sql

โดยต้องแก้ใน 4 function หลักดังนี้
- authorize
- accounting
- session
- post-auth

ขั้นตอนที่ 6 : หลังจากแก้ไขไฟล์และบันทึกแล้ว ให้ทำการ restart service freeradius ด้วยคำสั่ง
                     service freeradius restart
                     และ ทดสอบสถานะการทำงานด้วยคำสั่ง
                     service freeradius status


ขั้นตอนที่ 7 : ทำการสร้าง User ทดสอบบน Mysql database โดยใช้คำสั่ง
mysql -u root -p
use radius; 
 INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('rad', 'User-Password', 'radpass');
ในตัวอย่างคำสั่งจะเพิ่ม User ชื่อ rad โดยมี Password เป็น radpass หากท่านต้องการทดสอบด้วย User อื่นสามารถแก้ได้เลยครับ


ขั้นตอนที่ 8 : ทำการทดสอบการทำงานของ freeradius โดยการใช้คำสั่งดังนี้
                     radtest rad radpass localhost 0 testing123
หากไม่มีอะไรผิดพลาดจะได้ผลลัพธ์ดังรูป


ก็เรียบร้อยแล้วนะครับสำหรับขั้นตอนการติดตั้ง freeradius โดยใช้ฐานข้อมูล mysql ในบทความหน้าเรามาดูเรื่องของการบริหารจัดการฐานข้อมูล radius และ การนำ radius ไปใช้งานกันครับ

Credit :
- http://www.phuketadmin.org/index.php?topic=7211.0
- http://wiki.freeradius.org/guide/Basic-configuration-HOWTO
- http://andrewpakpahan.blogspot.com/2012/08/installing-and-configuring-freeradius.html