Wednesday, January 28, 2009

setup OpenVPN กับ Endian Firewall ง่ายอย่างที่เขาว่าจริงๆ

จากที่ได้ลองผิดลองถูกอยู่ระยะหนึ่ง ก็พอจะทำให้เราเข้าใจการ set OpenVPN บน endian firewall ขึ้นมาบ้าง วันนี้จึงขอบันทึกไว้เพื่ออ้างอิงในภายหลัง

รูปแบบของเน็ตเวิร์กและการเชื่อมต่อ

Endian เป็น gateway มี ZyXel เป็น ADSL เซตแบบ bridge mode เพื่อให้ตัว endian ทำหน้าที่คอนโทรล network ทุกอย่าง ZyXel ทำหน้าที่เป็น ADSL Modem หมุนเข้า internet เท่านั้น และได้เป็น dynamic IP address จาก True มา หมายเลข IP จะเปลี่ยนแปลงทุกครั้งที่่ต่อเข้าใหม่ ซึ่งใช้ dyndns เป็น domain เน็ตเวิร์กภายในหลัง endian ต่อผ่าน GREEN interface มี server samba อยู่ หมายเลข IP คือ 192.168.0.22 admin อยู่ที่บ้านและต้องการ manage เซิร์ฟเวอร์เครื่องนี้ผ่าน notebook ซึ่งใช้ vista โดยจะใช้ vpn เป็นท่อเชื่อมต่อเข้ามา ซึ่งชาวบ้านเขาเรียกการเชื่อมต่อแบบนี้ว่า Host-to-Net Virtual Private Network (Roadwarrior)


ขั้นตอนการ setup ประกอบด้วย

1. set ค่า OpenVPN server ที่ Endian Firewall ให้เรียร้อยทั้งส่วน server และ add user
2. set ค่า VPN client ที่ฝั่ง vista โดยใช้ OpenVPN GUI


1.1 set OpenVPN ที่ฝั่ง Endian โดยคลิกหัวข้อ VPN
** OpenVPNserver
*** Server configuration



Global settings

OpenVPN server enabled: ต้องเลือกก่อนเลย เพื่อรัน OpenVPN Server
Dymanic IP pool start address: 192.168.0.10
Dynamic IP pool end address: 192.168.0.99


การใส่ Dymanic IP pool นั้นต้องใส่หมายเลข IP ของ GREEN interface และกำหนดช่วง IP ให้เหมาะสม เนื่องจากว่า openvpn server จะสร้างแลนชื่อ tap ซึ่งเป็น bridge กับ green interface ฉะนั้นจึงเป็นหมายเลขเดียวกัน โดยปกติหากเราใช้ endian ให้แจกหมายเลข IP ด้วยตัว green จะเป็นตัวแจกหมายเลข IP ให้กับระบบ ฉะนั้นควรจัดกลุ่มหมายเลขให้เหมาะสม ตามแบบของเราคือ ให้ green แจกตั้งแต่ 100 - 250 ส่วนต่ำกว่าร้อยลงมากำหนดให้ VPN เป็นต้น


จากนั้น คลิกปุ่ม Save and restart ซึ่งจะรัน openvpn server และสร้างแลนชื่อ tap ขึ้นมารองรับ

OpenVPN ควรจะรันได้แล้วให้ตรวจสอบสถานะดู

1.2 สร้าง Accounts ในการเชื่อมต่อแบบ VPN

- ต่อเลยที่ Accouts
Username : it3ps
Password: xxxxxxxx
Verify password:

จากนั้นคลิก Save

แบบธรรมดาที่สุด set เพียงเท่านี้ก่อน






3. อย่าลืม set Endian ให้เป็น Dyndns ด้วย
-> Service -> Dynamic DNS set ตามค่าที่เราลงทะเบียนไว้กับ dyndns นั่นแหละ
ตัวนี้สำคัญที่เราจะเอาไปใส่เป็นค่าของ remote สำหรับ VPN client

4. Download CA certificate จากหน้า setup VPN ของ endian มาเก็บไว้ก่อน เพื่อจะนำไปติดตั้งต่อไปที่เครื่อง client ซึ่งจะได้ไฟล์นามสกุล .cer

ขั้นตอน set ที่ฝั่ง client windows vista ด้วย OpenVPN GUI


1. ดาวน์โหลดไฟล์ จาก http://openvpn.se/download.html

Installation Package (Both 32-bit and 64-bit TAP driver included):
openvpn-2.0.9-gui-1.0.3-install.exe

ได้มาแล้วก็ติดตั้งในแบบฉบับของ windows คือ next ไฟล์จะถูกเก็บไว้ที่
c:\Program File\Openvpn

2. สร้างไฟล์ต่าง ๆ ประกอบด้วย certificated และ client.opvn
- ให้ copy ไฟล์ .cer ที่เราดาวน์โหลดมาจาก endian ไปเก็บไว้ที่ c:\Program file\Openvpn\config
- สร้างไฟล์ client.opvn โดย copy มาจาก sample-config และปรับปรุงแก้ไข option ต่าง ๆ ดังนี้
(ผมใช้วิธีเขียนใหม่ทั้งไฟล์โดยใช้ notepad )

client
dev tap
proto udp
remote it3ps.gotdns.com
resolv-retry infinite
nobind
persist-key
persist-tun
ca efwps.cer
auth-user-pass
comp-lzo

ที่สำคัญมากคือ remote ใส่ชื่อ dyndns ที่เรา set ให้กับ endian ของเรา
ca ให้ระบุชื่อไฟล์ .cer ที่ดาวน์โหลดมากจาก endian

3. ให้ดับเบิลคลิกเปิดไฟล์ OpenVPN GUI จะขึ้นไอคอนที่ taskbar คลิกขวาที่ไอคอนเพื่อเปิด popup เมนูขึ้นมา



ให้คลิก Connect จะปรากฏ หน้าต่างสำหรับกรอก username ให้ใส่ตามที่ set ไว้ในโหมด Account ที่ endian

เพียงเท่านี้ก็สามารถเชื่อมต่อแบบ VPN ได้แล้ว


เรื่องราวเพิ่มเติม

OpenVPN บน Endian Firewall บทสรุปเพิ่มเติม

Saturday, January 24, 2009

ดาวน์โหลด video files จาก You Tube ง่ายๆด้วย youtube-dl

เชิญติดตามได้จากที่นี่

http://www.nuxified.org/blog/download_youtube_video_files_with_youtube_dl

Thursday, January 22, 2009

MyDNS not start

เรื่องก็คือว่า เราได้ติดตั้ง mydns ที่ office ใช้งานได้ปกติ เมื่อติดตั้ง mydns ในสภาพแวดล้อมอย่างเดียวกันนี้อีกที่ home ปรากฏว่าพอรัน mydns มัฟ้องว่ารันไม่ได้ และไม่มี log โชว์ให้เห็นเพื่อจะวิเคราะห์ได้ จึงลองรันคำสั่ง mydns ตรง ๆ เลยด้วย

/usr/sbin/mydns

จึงได้เห็น Error ข้างล่างนี้

Error connecting to MySQL server at localhost: Access denied for user 'root'@'localhost' (using passowrd: YES) (error=0)

ซึ่งก็พอสันนิษฐานได้ว่าโปรแกรม mydns ติดต่อฐานข้อมูลด้วย user root ไม่ได้ อาจจะ user name หรือ password ไม่ถูกต้องก็ได้ ซึ่งไฟล์ที่ควรจะพิจารณาคือ

/etc/mydns.conf
db-host = localhost
db-user = root
db-password = tawich2514
database = mydns

เรื่องที่เกี่ยวข้อง :

สร้าง DNS server ด้วย MyDNS และ MyDNSConfig ด้วย CentOS

Wednesday, January 21, 2009

DNS and Mail Server

DNS (Domain Name Service) กับเมล์เซิร์ฟเวอร์

DNS เป็นบริการพื้นฐานในระบบเครือข่าย ทำหน้าที่แปลงชื่อโฮสต์ไปเป็นหมายเลขไอพีแอดเดรส และในทางกลับกันแปลงหมายเลขไอพีแอดเดรสไปเป็นชื่อโฮสต์เรียกว่า "Naming Resolution" ไฟล์ที่เกี่ยวข้องในการแปลงชื่อโฮสต์และหมายเลขไอพีแอดเดรสของ DNS มีอยู่ 2 ไฟล์คือ forward zone และ reverse zone เราเรียกโซนที่แปลงจากชื่อไปเป็นไอพีแอดเดรสว่า forward zone และส่วนที่แปลงไอพีแอดเดรสไปเป้นชื่อจะถูกเรียกว่า reverse zone

เรคอร์ดใน DNS

เรคอร์ดที่ทำหน้าที่ติดต่อกับระบบเมล์เซิร์ฟเวอร์ในโซนไฟล์คือบรรทัดที่มีคำว่า MX ซึ่งเราเรียกว่า MX record เรคคอร์ดที่ควรทราบใน DNS มีดังนี้

NS record (Name Server record) เป็นการระบุว่าเครื่องใดทำหน้าที่เป็นเนมเซิร์ฟเวอร์หรือ DNS server
A record (Address record) มีหน้าที่แปลงชื่อไปเป็นไอพีแอดเดรส
PTR record (Pointer record) มีหน้าที่แปลงไอพีแอดเดรสไปเป็นชื่อ
MX record (Mail Exchanger record)

การส่งเมล์ ผู้ส่งอีเมล์จะระบุถึงผู้รับในอีเมล์ โดยอีเมล์แอดเดรสของผู้รับหรือผู้ส่งจะประกอบด้วยชื่อและโดเมน เครื่อง server ของผู้ส่งจะค้นหาเมล์เซิร์ฟเวอร์ของผู้รับโดยสอบถามจาก DNS server ของตนเอง และ DNS จะค้นหาต่อไปยัง DNS server ที่รับผิดชอบโดเมนของผู้รับ และจะตอบกลับมาว่าเครื่องเซิร์ฟเวอร์ตัวใดจะทำหน้าที่รับอีเมล์ที่เป็นโดเมนของผู้รับ ซึ่งนั่นก็คือเครื่องเซิร์ฟเวอร์ที่อยู่หลังบรรทัด MX record การระบุค่าใน MX record จะต้องมีการระบุความสำคัญของเครื่องเซิร์ฟเวอร์ที่จะทำการรับเมล์ไว้ด้วย เราเรียกค่าความสำคัญนี้ว่า Priority หรือ Perference Number เช่น

adminlinux.com IN MX 10 mail.adminlinux.com
adminlinux.com IN MX 20 mail01.adminlinux.com

จากตัวอย่างมีเซิร์ฟเวอร์ที่ทำหน้าที่รับอีเมล์สำหรับโดเมน adminlinux.com อยู่ 2 ตัวคือ mail.adminlinux.com และ mail01.adminlinux.com ในเวลาปกติเมื่อมีการส่งอีเมล์มายังโดเมน adminlinux.com ในกรณีที่ mail.adminlinux.com ไม่สามารถทำงานได้ mail01.adminlinux.com จะทำหน้าที่รับอีเมล์แทน และจะเก็บอีเมล์ไว้ในคิวจนกว่า mail.adminlinux.com จะกลับขึ้นมาทำงาน การทำงานในลักษณะนี้เราเรียกว่า MX backup

เงื่อนไขในการกำหนด MX record

- ชื่อที่ตามหลัง MX ต้องเป็นโฮสต์เนม ไม่ใช่หมายเลขไอพี
- ชื่อที่ตามหลัง MX ต้องไม่เป็น CNAME
- โฮสต์เนมที่ใช้ใน MX record ต้องถูกระบุใน A record ด้วย
- MX record ต้องมีการใส่ค่า Priority ลำดับความสำคัญด้วย

CNAME in DSN Record

server เครื่องหนึ่ง ๆ อาจจะทำหน้าที่หลายๆอย่างเช่น เป็น www ด้วย เป็น ftp ด้วยและเป็น mail ด้วย เช่นนี้ การกำหนดชื่อและหลายเลข IP ก็จะต้องทำหลายบรรทัด หากเปลี่ยนหมายเลข IP server ก็ต้องเปลี่ยนชื่อใน dns ให้ตรงกับ IP ใหม่
ในกรณีนี้จะเห็นประโยชน์ของ CNAME Record ขึ้นมาทันตาเห็น

ตัวอย่าง domain linuxadmin.com

www.linuxadmin.com. IN A 192.168.0.9
ftp.linuxadmin.com. IN A 192.168.0.9
mail.linuxadmin.com IN A 192.168.0.9
ns1.linuxadmin.com IN A 192.168.0.9

ถ้าใช้ CNAME ช่วยจะเปลี่ยนแปลงไป

server1.linuxadmin.com. IN A 192.168.0.9
www IN CNAME server1.linuxadmin.com
ftp IN CNAME server1.linuxadmin.com
mail IN CNAME server1.linuxadmin.com
ns1 IN CNAME server1.linuxadmin.com

หรือ แบบสั้น
server1 IN A 192.168.0.9
www IN CNAME server1
etc...

ลองตรวจสอบ CNAME ดูด้วยคำสั่ง dig

dig @nameserver a www.linuxadmin.com

ควรจะปรากฏในช่อง ANSWER SECTION:
www.linuxadmin.com. 86400 IN CNAME server1.linuxadmin.com.
;;

บันทึกไว้ เพราะวันนี้มีปัญหากับ CNAME ในการ set MyDNS เหลือเกิน

Tuesday, January 20, 2009

Extrack Rar with Linux

ไฟล์ที่มีนามสกุล .rar หากเป็นวินโดวส์ก็เปิดด้วยโปรแกรม winrar แบบชิวชิวอยู่แล้ว แต่ถ้าเป็นลีนุกซ์นี่ซิ ปวดหัวเหมือนกัน เพราะโปรแกรม tar อันทรงพลังเราก็ใช้เป็นแค่ขยายไฟล์ .tar.gz เท่านั้น ก็ลองสืบค้นจากอินเทอร์เน็ตดูว่าพอจะมีโปรแกรมบนลีนุกซ์ตัวไหนบ้างที่เปิด rar ได้ ก็พบโปรแกรม rar และ unrar จาก www.rarlab.com จึงขอลองดูซิว่าของเขาจะแน่แค่ไหน...

1. ก่อนอื่นเลยก็ดาวน์โหลดโปรแกรมมาก่อน โดยเราเลือกเอาแบบไฟล์ tar.gz ด้วย wget ดังนี้

wget http://www.rarlab.com/rar/rarlinux-3.6.0.tar.gz
เรียบร้อยขนาดของไฟล์ 752,997 (735K)

2. จากนั้นคลายไฟล์ออกมา tar xvfz rarlinux-3.6.0.tar.gz
3. ได้ไดเรกทอรีชื่อว่า rar มีไฟล์ที่สำคัญคือ rar และ unrar ก็ลองดูว่าไฟล์ที่แตกออกมาแล้วจะใช้งานได้หรือไม่โดยตรวจ
สอบไลบรารี่ ด้วยคำสั่ง
- ldd rar และ ldd unrar

4. ทดสอบขยายไฟล์ .rar
- ในไดเรกทอรี rar /.rar e linuxdoc.rar
Option e -> คือขยายไฟล์ไว้ ณ ตำแหน่งปัจจุบัน
/.rar l linuxdoc.rar
Option l -> คือตรวจดูว่าในไฟล์ linuxdoc.rar มีไฟล์อะไรอยู่บ้าง
หากจะตรวจดูว่าคำสั่ง rar มี option อะไรบ้างก็นี่เลย ./rar --help

หลังจากทดสอบและใช้คำสั่ง rar ในไดเรกทอรี่ที่ขยายไฟล์ไฟล์ได้แล้ว ถึงคราวใช้งานจริง ๆ ให้ก็อบปี้ไฟล์ rar และ unrar
ไปไว้ในเดเรกทอรี /sbin หรือ /usr/bin ที่เป็น path สำหรับเรียใช้โปรแกรมต่อไป...
เอวัง...

สร้าง DNS server ด้วย MyDNS และ MyDNSConfig ด้วย CentOS

เดือนนี้ได้มีโอกาสจัดทำเครื่อง mail server ให้กับบริษัทแห่งหนึ่ง เพื่อใช้เป็นช่องทางหนึ่งของการสื่อสารภายใน วัตถุประสงค์เพื่อลดการใช้กระดาษ และใช้เทคโนโลยีทางด้านเน็ตเวิร์กให้เกิดประโยชน์สูงสุด แน่นอนเครือง server ใช้ PC เก่า ๆ ธรรมดาๆ
และใช้ os เป็น CentOS โดยมีเครื่องปรุงที่สำคัญคือ mydns,mydnsconfig,mysql,dovecot,postfix เพื่อให้บรรลุวัตถุประสงค์ของการเป็นเมล์เซิร์ฟเวอร์ดังกล่าว

องค์ประกอบหนึ่งของเมล์เซิร์ฟเวอร์คือ MX record ใน domain server แต่ไหนแต่ไรมาใน linux เราก็ใช้โปรแกรม BIND เป็นหลัก ซึ่งก็รับประกันได้ในความรวดเร็วและความยืดหยุ่น แต่ไฟล์ที่เกี่ยวข้องมีหลายไฟล์ และยุ่งยากพอสมควร ในที่นี้จึงได้เลือกใช้ mydns เป็น domain ทำหน้าที่ดูแล MX record ดังกล่าว โดยใช้ mydnsconfig เป็นเครื่องมือช่วย set ค่าต่าง ๆ ผ่าน web interface ซึ่งทำได้ง่าย ๆ และเสร็จสิ้นภายใน 30 นาทีเท่านั้นเอง

ขั้นตอนการติดติด mydns ประกอบด้วยสร้างฐานข้อมูลขึ้นมารองรับ สร้าง mydnsconfig และสุดท้ายติดตั้ง dns

ขั้นตอนสร้างฐานข้อมูล ด้วย MySQL

1. รัน mysql ขึ้นมาก่อน
/etc/init.d/mysqld start

2. login เข้า mysql และสร้างฐานข้อมูล
mysql -u root -p < จะขึ้นให้ใส่พาสเวิร์ด >

CREATE DATABASE mydns;
GRANT SELECT,INSERT,UPDATE,DELETE ON mysql.* TO 'mydns'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT SELECT,INSERT,UPDATE,DELETE ON mysql.* TO 'mydns'@'localhost.localdomain' IDENTIFIED BY 'yourpassword';
FLUSH PRIVILEGES;
quit;

'yourpassword' ให้กำหนดพาสเวิร์ดในที่นี้เราใช้ mydns2008

ขั้นตอน setup MyDNSConfig

1. download
- wget http://mesh.dl.sourceforge.net/sourceforge/mydnsconfig/MyDNSConfig-1.1.0.tar.gz
- tar xvfz MyDNSConfig-1.1.0.tar.gz
- cd MyDNSConfig-1.1.0
- mkdir /usr/share/mydnsconfig
- cp -rf interface/* /usr/share/mydnsconfig/
- ln -s /usr/share/mydnsconfig/web/ /var/www/html/mydnsconfig

2. install MyDNSConfig MySQL จากไฟล์ .sql
mysql -u root -p mydns < install/mydnsconfig.sql

3. ปรับแต่งไฟล์ config ให้ถูกต้อง

- vi /usr/share/mydnsconfig/lib/config.inc.php

/*
Database Settings
*/
$conf["db_type"] = 'mysql';
$conf["db_host"] = 'localhost';
$conf["db_database"] = 'mydns';
$conf["db_user"] = 'root';
$conf["db_password" = 'mydns2008';

Cannot load mcrypt extension (phpMyadmin)

วันนี้ได้ติดตั้ง phpmyadmin บน Centos 4.3 ผ่านขั้นตอนทุกอย่างเสร็จสรรพแล้ว พร้อมที่จะเปิดเข้าใช้ phpmyadmin
ด้วย http://localhost/phpmyadmin กด enter พลันมีข้อความ error ด้านล่างดังนี้

Cannot load mcrypt extension. Please check your PHP configuration ...

ก็ต้องมาหาวิธีแก้กันยกใหญ่หล่ะทีนี้ จากคำตอบที่ได้จากอาจารย์ google พอสรุปได้ ดังนี้

1. ถ้าลง linux เป็น debain หรือ ubuntu ให้ใช้คำสั่ง yum install php-mcrypt CentOS ของเราก็ใช้คำสั่งนี้ได้ แต่ ใสเจีย เสียใจ เพราะไม่ประสบผลสำเร็จ ...
2. ผู้เชี่ยวชาญอีกท่านบอกว่ามันเป็นปัญหาจากไฟล์ php.ini ในโฟลเดอร์ php ให้ดำเนินการแก้ซะให้ถูกต้อง ดังนี้
- เปิดไฟล์ php.ini ด้วย text editor ที่ท่านถนัด
- ค้นหาส่วนที่เขียนว่า ;extension=php_mcrypt.dll
- หาเจอแล้วให้เอาเครื่องหมาย ; ออกก็จะได้ extension=php_mcrypt.dll แบบเน้น ๆ ไม่มี ; นำหน้า
- แล้ว restart server ว่างั้น
ถ้าปัญหายังไม่หายไป ก็ให้ copy ไฟล์ libmcrypt.dll จากโฟลเดอร์ php ไปไว้ที่ windows ซะ
อันนี้คงเป็นอาจารย์จากฝั่ง windows มาแนะนำ ก็ถือว่ารู้ไว้ใช่ว่า หล่ะกัน ของเราคงบายไปก่อน เพราะเป็น linux

3. สำหรับ เคสของนี้ต้องติดตั้ง package เพิ่มเติม ดังนี้
- php-mcrypt-4.3.9-3.2.1.i386.rpm
- ซึ่งไฟล์ข้างบนี้ต้องการ lib ตัวนี้ libmcrypt-2.5.7-1.2.el4.rf.i386.rpm
ให้ติดตั้งตัว libmcrypt ก่อน ตามด้วย php-mcrypt จากนั้น restart webserver ใหม่ error ดังกล่าว
ก็หมดไปโดยปริยาย ไม่ขึ้นมากวนใจอีกต่อไป อิอิ...

Twitter Delicious Facebook Digg Stumbleupon Favorites More