How to : วิธีนำ ระบบ Firewall ของ ClarkConnect 4.3 ติดตั้งลงใน CentOS 5.3
Ton-Or — 23 August, 2009 - 12:00
หลังติดตั้ง CentOSและ เชื่อมต่อ PPPoE ทั้งสองเส้นแล้วหากยังไม่ได้ติดตั้งติดตามที่นี่ก่อน
ตอนที่ 1 พื้นฐานการติดตั้ง CentOS
How to : การติดตั้ง CentOS 5.3 เพื่อรองรับ ระบบ multiwan
ตอนที่ 2 การต่อ ADSL
How to : การ Setup PPPoE แบบ Bridge mode บน CentOS 5.3
ส่วนบทความนี้เป็นตอนที่ 3 ตอนสุดท้ายสนุกสนานกับการแยกเส้น ด้วย Firewall ของ ClarkConnect
เริ่มกันเลยครับ หลัง CentOS 5.3 สามารถใช้งาน ADSL ได้แล้ว ณ ตอนนี้เครื่อง Client จะยังไม่สามารถออก Network ข้างนอกได้เลย จะไม่เหมือน ClarkConnect ติดตั้งเสร็จ Connect ADSL ได้เครื่อง Client สามารถใช้งาน ADSL ได้ทันที
ไม่ต้องรีบครับใจเย็นๆ หากติดตั้ง ClarkConnectอยู่แล้วเช่นเดิมครับ ข้ามไป เก็บ list file ด้านล่างสุดจาก ClarkConnect เอามาทับสามารถใช้งานได้ เช่นกันครับ
Update CentOS กันก่อน
หาก ADSL ที่ใช้ ออกต่างประเทศช้าแก้ Mirror ในไทยก่อนครับ
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.orgwget http://linux.blog.in.th/system/files/CentOS-Base.repo
ผมตั้งค่าไว้ให้แล้ว ใช้ mirror จาก www.mirror.in.th ครับ
Update Centos ด้วยคำสั่ง yum
yum -y update
เสร็จแล้ว ติดตั้งส่วนที่จำเป็นสำหรับ scripts syswatch ก่อนครับ
yum install -y perl-libwww-perl
yum install -y perl-Crypt-SSLeay
ติดตั้งอันนี้ไว้ด้วยก็ดีครับ เพราะต่อไปได้ใช้แน่ๆ Development Tools หากไม่ได้เลือกตอนลงครั้งแรก สามารถติดตั้งส่วนนี้ได้โดย
yum -y groupinstall "Development Tools"
ติดตั้ง Core file สำหรับ Service firewall เวลาเราสั่ง service firewall restart ใน ClarkConnect นั่นหล่ะ แต่ CentOS ปกติแล้วมันไม่มีเราเลยเอามาใส่
wget http://linux.blog.in.th/system/files/cc-firewall-4.2-50.i386.rpm
rpm -ivh cc-firewall-4.2-50.i386.rpm
file ที่ up ให้ทำการแก้ไขมาแล้วนะครับจะใช้ rpm ของเดิม จาก ClarkConnect มาลงเลยไม่ได้
wget http://linux.blog.in.th/system/files/cc-syswatch-4.2-10.i386.rpm
rpm -ivh cc-syswatch-4.2-10.i386.rpm
wget http://linux.blog.in.th/system/files/firewall-1.3.5-1.i386.rpm
rpm -ivh firewall-1.3.5-1.i386.rpm
cd /sbin
ln -sf iptables iptables-bin
ลืมอีกส่วนไป - -""
wget http://linux.blog.in.th/system/files/iproute2.tar.gz
tar zxvf iproute2.tar.gzmv *.rt_config /etc/iproute2
หลังติดตั้ง Core file สำหรับระบบ firewall ของ Clark Connect แล้วต้องแก้ไข file หลักดังนี้ครับ
nano /etc/firewall
และแก้ไขบรรทัดสำคัญๆ ดังนี้
MODE="gateway"
EXTIF="ppp0 ppp1"
LANIF="eth1"
BANDWIDTH_QOS="off"
MULTIPATH="on"
MULTIPATH_WEIGHTS="ppp1|1 ppp0|1"
ส่วนที่เป็นสีแดง นั้นห้ามเปลี่ยน
ส่วนที่เป็นสีส้ม ปรับเปลี่ยนให้ตรงตามการใช้งานและจำนวน ppp ที่ท่านมี
Qos ยังต้อง off ไว้ก่อน เพราะ iptables และ kernel เดิม ของ CentOS นั้น ยังไม่ได้ทำการ patch ส่วนนี้เข้าไป
และในส่วนของ RULES ต้องมี mark สำคัญอย่างน้อยสองอัน คือ 0x10000001 Incoming กับ 0x10000008
RULES="\
ssh||0x10000001|6||22| \7001-TCP||0x10000008|6|192.168.2.101|7001|7001 \7001-UDP||0x10000008|17|192.168.2.101|7001|7001 \"# vim: ts=4 syntax=sh
กรณี Incoming port
ssh||0x10000001|6||22|
อธิบาย กรณี Incoming port
ชื่อ rule คือ ssh ตั้งเป็นอะไรก็ได้ตามที่เราเข้าใจอ้างอิงสากลไว้ด้วยก็ดีเผื่อคนอื่นสานงานต่อได้ไม่สับสน เช่น port 22 คือ ssh
0x10000001คือ mark สำหรับ การทำงานของ Incomming
6 คือตัวเลขระบุ protocal 6 คือ TCP 17 คือ UDP
22 คือ port ที่เราเปิด service ใช้งานไว้
กรณี Port Forwarding
7001-TCP||0x10000008|6|192.168.2.101|7001|7001 \
7001-TCP||0x10000008|17|192.168.2.101|7001|7001 \
อธิบาย กรณี Port Forwarding
ชื่อ rule คือ 7001-TCP ตั้งเป็นอะไรก็ได้
0x10000008 คือ mark สำหรับ การทำงานของ Port Forwarding
6 คือตัวเลขระบุ protocal 6 คือ TCP 17 คือ UDP
192.168.2.101 คือ ip เครื่องลูกที่เราต้องการทำ Port Forward
7001 ตัวแรกคือ port ที่ Client เปิดไว้
7001 ตัวหลังคือ port ภายนอกจะติดต่อเข้ามา
เช่น เรามี VDO server ip 192.168.2.1 และ 192.168.2.2 เปิด port 80 อยู่ 2 เครื่อง เราจะสั่ง Forward Port แบบนี้ ไม่ได้เด็ดขาด
ตัวอย่างที่ผิดคือแบบนี้
7001-TCP||0x10000008|6|192.168.2.1|80|80 \
7001-TCP||0x10000008|6|192.168.2.2|80|80 \
วิธีสั่งที่ถูกต้องคือ
7001-TCP ||0x10000008|6|192.168.2.1|80|801 \
7001-TCP||0x10000008|6|192.168.2.2|80|802 \
เวลา เราจะเข้า ดูจาก ข้างนอกก็เข้าทาง por 801 และ 802 ครับ เช่น ตอนนั้น เราได้ ip 222.222.222.222
จะเข้าดู กล้องตัวที่ 1 ก็เข้าทาง
http://222.222.222.222:801
กล้องตัวที่สองก็
http://222.222.222.222:802
ตรวจสอบ file config ของ syswatch
nano /etc/syswatch
conntype=pppoe # เชื่อต่อ Internet ด้วย mode pppoe หรือ ADSL
servtype=gateway # แจ้งว่า Server ตัวนี้ทำงานเป็น Gateway
heartbeat=10
retries=5
interval=60
failedinterval=15
firewall="/etc/rc.d/init.d/firewall restart >/dev/null"
ping_servers=203.146.237.237,203.146.140.26 #เปลี่ยนเป็น ip ของ DSN ที่ท่านใช้หรือไม่เปลี่ยนก็ได้ครับ
ping_servers=203.146.237.237,203.146.140.26
เวลา syswatch ทำการ check ว่า ADSL หลุดหรือไม่หลุดนั้น มันจะ ping ทีหละเส้น ไปที่ 2 ip นั้นว่า ping ได้ไหม ถ้าใช้ของเดิมที่เป็น ต่างประเทศ ถ้า network ออกนอกเน่าวันไหน มันจะคิดว่า ADSL หลุดจะต่อใหม่ ตลอด
ปิดการทำงานของ ipv6
chkconfig ip6tables off
แล้ว restart 1 รอบ หรือจะใช้วิธีอื่นๆ ลองดูจากที่นี่
ถึงตรงนี้สั่ง service firewall restart ได้แล้วครับ ยังไม่ต้องนำ firewall ค่ายต่างๆ มาใส่ให้ check rule ก่อนว่า ip rule ขึ้นครบไหม ตรวจสอบโดย
ip rule
0: from all lookup local
50: from all lookup 50
100: from all fwmark 0x8000 lookup 100
101: from all fwmark 0x8001 lookup 101
200: from 125.27.180.xxx lookup 200
201: from 117.47.56.xxx lookup 201
250: from all lookup 250
32766: from all lookup main32767: from all lookup default
ถ้าขึ้นแบบนี้ และพร้อมทั้งเครื่องลูกสามารถใช้งาน Internet ได้แล้วเท่ากับว่าเสร็จเรื่องการ ติดตั้งระบบ firewall ของ ClarkConnect บน CentOS-5.3 แล้วครับ
ที่เหลือก็นำ firewall ของแต่หละค่ายมาใส่ใน file /etc/rc.d/rc.firewall.local ตามวิธีติดตั้งของท่านๆ นั้นๆ ครับ
ข้อดี
- สามารถนำ Firewall ของแต่หละค่าย มาใช้ได้เลย สามารถแยกเส้นเกมส์ net ได้ทันทีบน CentOS ไม่ต้องค่อยมาทำ scripts ใหม่ ip rule add route add ต่างๆ นาๆ
- CentOS สามารถปรับปรุงเพิ่มเติมส่วนอื่นๆ ได้ง่ายกว่า บน ClarkConnect ผ่าน คำสั่ง yum
- ฟรีตลอดการ
ข้อเสีย
- ยังไม่มีระบบ web interface แต่สามารถดึงของ ClarkConnect มาปรับแต่งแล้วใส่ได้เช่นกัน ศึกษาดูเพราะจุดประสงค์ของ web นี้อยู่ที่กลุ่ม develop ไม่ได้อยู่ที่ end user ผมเปิดประตูให้แล้วก้าวกันต่อไปดูครับ
- kernel และ iptables ยังไม่รองรับ qos, layer7 บทความก่อนหน้าเขียนวิธีทำพวกนี้ไว้แล้วลองกดหาดูครับ
คำถาม : มันดีกว่า ubuntu debian หรือ ตัวอื่นๆ ไหม
ตอบ : ทั้งสองอย่างมันก็ทำงานได้เหมือนกันมันอยู่ว่าคุณถนัดตัวไหน ไม่ว่าจะใครคุยว่าตัวนั้นเร็วกว่าตัวนี้ ให้เอา hardware มาเท่าๆ กัน คนมีความรู้ของ OS ที่ลงเท่าๆ กัน ทำเสร็จการใช้งาน มันก็เหมือนกัน มันอยู่ที่ความถนัดของแต่หละ คนบน OS ที่เขาใช้มากกว่าครับ
Core file หาก copy มาจาก ClarkConnect บางอันเป็น file บางอันเป็นแค่ floder นะครับ ไล่ดูจาก ClarkConnect ดีๆ
/sbin/cc-firewall
/etc/logrotate.d/syswatch
/etc/rc.d/init.d/syswatch
/etc/syswatch
/usr/sbin/syswatch
/var/lib/syswatch
/etc/firewall
/etc/rc.d/firewall.lua
/etc/rc.d/init.d/firewall
/etc/rc.d/rc.firewall
/etc/rc.d/rc.firewall.local
/etc/rc.d/rc.firewall.types
/usr/share/system/modules/firewall
/usr/share/system/scripts/firewall-clean
/usr/share/system/scripts/firewall-convert
/usr/share/system/scripts/firewall-convert-3x
/var/lib/firewall
/etc/iproute2/rt_dsfield.rt_config
/etc/iproute2/rt_protos.rt_config
/etc/iproute2/rt_realms.rt_config
/etc/iproute2/rt_scopes.rt_config
/etc/iproute2/rt_tables.rt_config
/sbin/cc-firewall เป็นตัวดึง rule ของ ClarkConnect ทำงานร่วมกับ iptables ตอนนี้ตัวที่แจกและของเดิม จาก ClarkConnect ทำงานคู่กับ iptables 1.3.5 ที่เป็นของ เดิม ที่ติดตั้งอยู่ใน CentOS เท่านั้นหากต้องการ update iptables จะไล่ทำ cc-firewall คู่กับ iptables แต่หละ version ให้ทีหลัง ครับ
/usr/sbin/syswatch ไม่สามารถ copy มาใส่ได้เลย ต้องใช้ตัวที่แก้ไขแล้วเท่านั้น
/etc/syswatch และ /etc/firewall เป็นหัวใจของการ run ครับ หากตั้งค่าไม่ตรงจะไม่สามารถสั่ง service firewall start ได้ และ ip rule ต่างๆ จะไม่ add ให้ ดูวิธีตั้งค่าด้านบน
อธิบายหลักการทำงานของ Scripts ทั้งหมด คร่าวๆ จะเอาละเอียด ต้องไปไล่จาก /etc/init.d/syswatch กับ /etc/init.d/firewall แล้วไล่ไปเลยว่ามันทำงานอย่างไรเรียก file ไหนใช้งานบ้าง บรรทัดต่อบรรทัด
การทำงานของ ของระบบ Firewall ของ ClarkConnect แยกเป็นสองส่วนหลักดังนี้
1. service syswatch ทำหน้าที่เป็น Network Monitor ทำหน้าที่ตรวจสอบ ADSL แต่หละเส้น โดยอ่านค่า จาก /etc/firewall ว่ามี EXTIF อะไรใส่ไว้บ้าง และ LANIF คืออะไร หลังตรวจสอบได้แล้ว syswatch จะเก็บค่า ip ของแต่หละ interface ไปใส่ไว้ใน /var/lib/syswatch/ และทำหน้าที่สั่ง service firewall restart
2. service firewall ทำหน้าที่จัดการ add rule route ต่างๆ และสั่งการทำงานของ iptables โดย อ่านค่า จาก /etc/firewall, /etc/rc.d/rc.firewall.local, file ที่อยู่ใน /var/lib/syswatch และอื่นๆ ต้องไล่ดู
อธิบายหลักการทำงานคร่าวๆ
/etc/init.d/firewall จะไปเรียก scripts และทำการ add rul route ต่างๆ และสร้าง file ที่จำเป็นสำหรับ syswatch ใน /var/lib/syswatch syswatch จะเอาค่าจากตรงนี้ไปทำการ check สาย ว่าแต่หละสายต่ออยู่ไหม
หากเข้าใจถึงตรงนี้ จะทราบว่า แม้เราไม่ลง syswatch แต่เราสร้าง file อย่างถูกรูปแบบไว้ใน /var/lib/syswatch และ สั่ง service firewall restart ก็สามารถ แยกเส้นได้เหมือนกัน
ตอนนี้ syswatch และ firewall อาจจะยังมีบัก เพราะผมไล่ทำแบบรีบๆ ไม่รู้ว่าผิดพลาดไปตรงไหน สำหรับท่านที่ ถนัด perl รบกวนช่วย check ให้ด้วย ว่ามีส่วนไหนเกินหรือขาดไป หรือจะเขียน ตัว check status ADSL มาใหม่ก็ยังได้ ไม่จำเป็นต้องใช้ syswatch
ดังนั้นหากต้องการนำไปติดตั้ง OS อื่นๆ ubuntu debian สามารถนำวิธีที่ว่าไปใช้ได้เลย แต่อาจจะต้องใช้ copy เป็น file หาก ไม่สามารถเอา rpm ไปลงได้
หากต้องการใช้งาน แบบ fix ip แก้เป็น
MODE="gateway"
EXTIF="eth0 eth2"
LANIF="eth1"
BANDWIDTH_QOS="off"
MULTIPATH="on"
MULTIPATH_WEIGHTS="eth0|1 eth2|1"
และแก้ file /etc/syswatch จาก conntype=gateway เป็น conntype=static หรือถ้าตั้ง eth0 และ eth2 เป็น dhcp รับ ip มาจาก router ก็แก้เป็น conntype=dhcp
ตัวอย่างคือ eth0 และ eth2 ต่อออก network ภายนอก eth1 ต่อเข้าวง lan
Note : Link Source ClarkConnect
http://download.clarkconnect.com/community/sources/4.x/
Credit
http://www.mirror.in.th
http://www.clarkconnect.com
http://www.g-loaded.eu/2008/05/12/how-to-disable-ipv6-in-fedora-and-centos/
| Attachment | Size |
|---|---|
| CentOS-Base.repo | 2.32 KB |
| cc-firewall-4.2-50.i386.rpm | 32.13 KB |
| cc-syswatch-4.2-10.i386.rpm | 17.33 KB |
| firewall-1.3.5-1.i386.rpm | 146.37 KB |
| iproute2.tar.gz | 701 bytes |
- 16078 reads

ผม start service ไม่ได้ครับ ลงตามขั้นตอนทุกอย่างนะครับ แต่เลือก eth เป็น fix เพราะว่า เส้นหนึ่งได้ ip จริงผ่าน g. อีกเส้น ใช้ adsl ทรู ปกติ แต่ว่า ลองแค่เส้นเดียว จากทรู ก็ไม่สตาร์ท ขึ้น failed ตลอด ทั้งๆที่มี config นิดเดียวเอง ผมต้องตรวจสอบอย่างไรบ้างครับ แต่จริงๆครั้งแรกๆ ที่ลองทำตามตัวอย่างผมใช้ เป็น ppp มัน start ได้ครับ (ลองเส้นเดียว ใน /etc/firewall,/etc/syswatch ก็เพิ่มค่าแค่ ค่าเดียว ลองเลียนแบบ cc ดู )แล้วผม ลองล้างลงใหม่ คราวนี้ ไม่เคย start ได้อีกเลย พี่มีคำแนะนำเบื้องต้นไหมครับ ว่าไล่ตรวจยังไงดี ระบบของผม คือ จะใช้เน็ตสองเส้นนะครับ แล้ว ขา แลน อีกหนึ่งใบ รบกวนด้วยนะครับ
ตรงส่วนของ /etc/firewall ครับ
EXTIF="ppp0 ppp1"
ต้องแก้ ให้ตรงตาม interface เช่น
EXTIF="ppp0 eth1"
และ แถวๆ
MULTIPATH="on"
MULTIPATH_WEIGHTS="ppp1|1 ppp0|1"
แก้ให้ตรงตาม interface
MULTIPATH="on"
MULTIPATH_WEIGHTS="eth1|1 ppp0|1"
ประมาณนี้
ไม่ทราบว่าเอาไปใช้กับ CentOS 5.4 ได้มั้ยผมลองแล้วติดตรง สั่ง ip rule แล้วมีไม่กี่บรรทัดไม่เหมือนของคุณ Ton-Or
ส่วนตัวผมยังไม่ได้ลองแต่ ปกติ มันควรจะได้เลยน่ะครับ
เวลา เอารูปใส่ ตรงคำว่า Input format เลือก Full HTML ครับ หรือจะเลือก Full HTML แล้วใส่ tag รูป html เลยก็ได้ครับ
บร์อดนี้เอารูปขึ้นไง คุณ Ton-Or ดูนี้หน่อย
แก้ไขแล้วนะครับขอบคุณครับ
จากที่อ่านแล้ว หากเราไม่นำ firewall แยกเน็ต แยกเกมส์ของ CC มาใส่เท่ากับว่ามันจะโลหดบาลานใช้มั้ย
ใช่ครับจะเป็นแค่ load balance อย่างเดียวเหมือนกับ cc ครับ
จากที่อ่านแล้ว หากเราไม่เอา firewall แยกเน็ตแยกเกมส์ของ CC มาใส่เท่ากับว่ามัน โหลดบาลานใช้มั้ย ต้องการ โหลดบาลานบน CentOs อย่างเดียว
พึ่งมาดูว่า up mirror Cent ผิดอันนั้นมัน ของ ku จริงๆ ผมใช้อันนี้
CentOS-Base.repo
file /usr/sbin/syswatch
แก้ไข ip 192.168.2.254 และ 192.168.2.112 ด้วยผมลืมแก้ ip nat เป็น ip ภายนอก
แก้ จาก
เป็นประมาณนี้
เห็นแล้วหมั่นใส้ คันไม่คันมือจัง แต่หาเครื่องมาลงมิใด้แฮ่ๆอาการเหมือนจะอยากยาเลย อิอิ