วันพุธที่ 28 กันยายน พ.ศ. 2559

กำหนดค่าโฮสต์ไฟร์วอล shorewall + libvirt-bin ผสมผสานทำงานร่วมกันอย่างมีประสิทธิภาพ

กลับมาพบกันอีกครั้งหนึ่งในรอบสัปดาห์ ช่วงนี้ผู้เขียนมีงานต้องขึ้นระบบใหม่ และมีการเตรียมตัวสำหรับการปรับปรุงระบบเดิมของบริษัทฯให้มีประสิทธิภาพเพิ่มมากขึ้น



โดยโจทย์ในวันนี้จะเป็นการนำซอฟต์แวร์ไฟร์วอล(shorewall)และการเปิดปิดเซอร์วิส libvirt-bin ของเครื่องเกสต์(guest) เข้ามารวมกันก่อนอื่นต้องท้าวความกันสักหน่อย

shorewall เป็นซอฟต์แวร์ไฟร์วอลแบบสเตจฟลู(statefull) จะใช้วิธีการกำหนดค่าผ่านเทอร์มินอล จากนั้นจะแปลงค่าคอนฟิกต่าง ๆ ไปเป็น iptables ที่มีประสิทธิภาพและมีความยืดหยุ่นสูง ง่ายและสะดวกต่อการใข้งาน
libvirt-bin เป็นโปรแกรมที่ระบบเวอร์ชวลแมชชีน(kvm) ใช้ในการกำหนดค่า iptables ต่าง ๆ ของเครื่องโฮสต์(host) เพื่อให้มีการติดต่อกันระหว่าง host กับ guest เป็นไปได้อย่างมีประสิทธิภาพ ปัญหาของการที่ไม่มีการเปิด iptables เพื่อเชื่อมต่อกันก็คือ เครื่องเกสต์ไม่สามารถออกอินเทอร์เน็ตได้ เป็นต้น

ในเครื่องโฮสต์ควรจะมีไฟร์วอลเพียงระบบเดียว แต่การรัน shorewall เพียงอย่างเดียวเพื่อคอนฟิคค่าให้รองรับการใช้งานเวอร์ชวลแมชชีนสำหรับผู้เขียนอาจจะต้องใช้เวลาค่อนข้างมาก อีกทั้งเครื่องทดสอบก็เป็นอุปกรณ์โปรดักชั่น จึงไม่มีเวลาลองผิดลองถูกได้มากนัก เงื่อนไขของเราต้องแข่งกับเวลา ดังนั้นการนำไฟร์วอลทั้งสองแบบมารวมกัน(integrated) ย่อมทำได้ง่ายและรวดเร็วกว่า

สำหรับ การกำหนดค่าของ shorewall สามารถดูได้จากเนื่้อหา http://www.s-techthai.com/2016/09/shorewall-ubuntu-server.html

ส่วนที่เหลือเป็นกฎเกณฑ์ของ libvirt-bin ที่สร้างเป็นสคริปไฟล์ใช้สำหรับรันเพิ่มหลังจากที่ได้ทำการสตาร์ทshorewall ไปเรียบร้อยแล้ว

 #!/bin/bash
iptables -t nat -I PREROUTING -p tcp -d 1.2.3.4 --dport 80 -j DNAT --to-destination 192.168.122.2:80
iptables -t nat -I PREROUTING -p tcp -d 1.2.3.4 --dport 222 -j DNAT --to-destination 192.168.122.2:22

iptables -t nat -I POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
iptables -t nat -I POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
iptables -t nat -I POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
 
iptables -t nat -I POSTROUTING -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN
iptables -t nat -I POSTROUTING -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN

iptables -I FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
iptables -I FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
iptables -I FORWARD -i virbr0 -o virbr0 -j ACCEPT
iptables -I FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
iptables -I FORWARD -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -I INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
iptables -I INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
iptables -I INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT

iptables -I OUTPUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT


 ส่วนขั้นตอนการสตาร์ทสคริปก็ใช้เทคนิคตามแต่ที่ถนัดกันละครับ ที่สำคัญต้องสตาร์ทเซอร์วิสนี้หลังจากที่สตาร์ทshorewall ไปแล้วเท่านั้น สำหรับผู้เขียนเองสตาร์ทแมนนวลไปก่อน เพราะปกติเครื่องโฮสต์ที่บริษัทออนไลน์มามากกว่า 180 วันก็ยังไม่มีปัญหาใด ๆ

เนื้อหาดี ๆ ทั้งหมดนี้ได้รับการสนับสนุนจากเวบไซต์ thailandgpstracker.com ของบริษัท ไทยพรอสเพอรัส ไอที จำกัด ผู้นำด้านการให้บริการระบบจีพีเอสติดตามรถยนต์ สมบูรณ์แบบ ที่สำคัญระบบของเราไม่ได้ถูกจำหน่ายและให้บริการเฉพาะเจ้าของ(proprietary)หรือแย่กว่านั้นก็คือรีแบรนด์(reband)กลบเกลื่อนร่องรอยที่แท้จริงของอุปกรณ์ มีทำกันมากทีเดียวในบ้านเรา 


ไม่มีความคิดเห็น:

แสดงความคิดเห็น