วิธีเปิด Port บน Linux Server ครบทุกเครื่องมือ iptables, firewalld, UFW
記事一覧へ戻る

วิธีเปิด Port บน Linux Server ครบทุกเครื่องมือ iptables, firewalld, UFW

คู่มือเปิด port Linux แบบละเอียดทุกขั้นตอน ครอบคลุม iptables firewalld UFW พร้อมวิธีทดสอบและข้อควรระวังด้านความปลอดภัย

Network--更新: April 29, 2026

วิธีเปิด Port บน Linux Server แบบละเอียดทุกขั้นตอน

การเปิด port บน Linux คือการตั้งค่า firewall ให้อนุญาตการเชื่อมต่อเข้ามายัง port ที่ต้องการ สามารถทำได้ผ่านเครื่องมือ 3 ตัวหลัก ได้แก่ iptables, firewalld และ ufw ขึ้นอยู่กับ Linux distribution ที่ใช้ บทความนี้จะอธิบายวิธีเปิด port ครบทุกเครื่องมือพร้อมข้อควรระวังด้านความปลอดภัย

ทำความเข้าใจเรื่อง Port และ Firewall

Port คือหมายเลขที่ใช้ระบุ service หรือ application ที่ทำงานอยู่บนเซิร์ฟเวอร์ เช่น port 80 สำหรับ HTTP, port 443 สำหรับ HTTPS, port 22 สำหรับ SSH โดยปกติ firewall ของ Linux จะบล็อกการเชื่อมต่อเข้ามาทุก port ยกเว้นที่อนุญาตไว้

สำหรับผู้ที่ใช้บริการ VPS หรือ Dedicated Server การตั้งค่า firewall ที่ถูกต้องเป็นพื้นฐานสำคัญของการรักษาความปลอดภัยของเซิร์ฟเวอร์

ตรวจสอบ Port ที่เปิดอยู่ก่อน

ก่อนจะเปิด port ใหม่ ควรตรวจสอบก่อนว่ามี port ไหนเปิดอยู่แล้ว ใช้คำสั่ง ss ดังนี้

sudo ss -tulnp

ตัวอย่างผลลัพธ์:

State  Recv-Q Send-Q Local Address:Port  Peer Address:Port  Process
LISTEN 0      128    0.0.0.0:22           0.0.0.0:*          users:((sshd,pid=1234,fd=3))
LISTEN 0      511    0.0.0.0:80           0.0.0.0:*          users:((nginx,pid=5678,fd=6))
LISTEN 0      511    0.0.0.0:443          0.0.0.0:*          users:((nginx,pid=5678,fd=7))

หากต้องการตรวจสอบ port เฉพาะ เช่น port 3306:

sudo ss -tulnp | grep 3306

เปิด Port ด้วย iptables

iptables เป็น firewall พื้นฐานที่มีอยู่ในทุก Linux distribution

เปิด port TCP

sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

เปิด port สำหรับ IP เฉพาะ

sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 3306 -j ACCEPT

เปิดช่วง port

sudo iptables -A INPUT -p tcp --dport 8000:8100 -j ACCEPT

บันทึกกฎ iptables

กฎที่เพิ่มด้วย iptables จะหายไปเมื่อรีบูต ต้องบันทึกไว้

บน CentOS หรือ RHEL:

sudo service iptables save

บน Ubuntu หรือ Debian:

sudo apt install iptables-persistent
sudo netfilter-persistent save

ดูกฎทั้งหมดที่ตั้งค่าไว้:

sudo iptables -L -n -v

เปิด Port ด้วย firewalld

firewalld เป็น firewall manager ที่มาพร้อมกับ CentOS 7 ขึ้นไป และ Fedora ใช้งานง่ายกว่า iptables เพราะมีระบบ zone

เปิด port แบบถาวร

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

เปิด service แทนการระบุ port

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

ตรวจสอบ port ที่เปิดอยู่

sudo firewall-cmd --zone=public --list-ports
sudo firewall-cmd --zone=public --list-services

เปิด Port ด้วย UFW

UFW (Uncomplicated Firewall) เป็น firewall ที่ออกแบบมาให้ใช้งานง่าย มาพร้อมกับ Ubuntu

เปิด port

sudo ufw allow 8080/tcp

เปิด port สำหรับ IP เฉพาะ

sudo ufw allow from 192.168.1.100 to any port 3306 proto tcp

ตรวจสอบสถานะ

sudo ufw status verbose

ตัวอย่างผลลัพธ์:

Status: active
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
8080/tcp                   ALLOW       Anywhere
3306/tcp                   ALLOW       192.168.1.100

ทดสอบว่า Port เปิดสำเร็จหรือไม่

หลังจากเปิด port แล้ว ควรทดสอบจากเครื่องอื่น:

nc -zv 203.0.113.10 8080

หรือใช้ nmap สแกน:

nmap -p 8080 203.0.113.10

ถ้าเชื่อมต่อได้แสดงว่า port เปิดสำเร็จ ถ้าไม่ได้ให้ตรวจสอบว่ามี service กำลัง listen อยู่ที่ port นั้นหรือไม่ และ firewall rule ถูกต้องหรือไม่

ข้อควรระวังในการเปิด Port

การเปิด port ทุกครั้งหมายความว่าเพิ่มช่องทางที่ผู้ไม่ประสงค์ดีอาจใช้โจมตีเซิร์ฟเวอร์ได้ ควรเปิดเฉพาะ port ที่จำเป็น และจำกัด source IP ถ้าเป็นไปได้

ไม่ควรเปิด port ของ database เช่น 3306 (MySQL) หรือ 5432 (PostgreSQL) ให้เข้าถึงได้จากทุก IP ควรจำกัดเฉพาะ IP ที่ต้องการเท่านั้น

สำหรับผู้ที่ใช้บริการ Hosting ที่มี control panel มักจะมี firewall GUI ให้ตั้งค่าได้สะดวก ไม่ต้องใช้ command line

คำถามที่พบบ่อย

เปิด port แล้วทำไมยังเชื่อมต่อไม่ได้?

สาเหตุที่พบบ่อยคือไม่มี service กำลัง listen อยู่ที่ port นั้น ลองตรวจสอบด้วย:

sudo ss -tlnp | grep <port>

นอกจากนี้อาจมี firewall อื่นบล็อกอยู่ เช่น cloud provider firewall (Security Group)

iptables กับ ufw ใช้ตัวไหนดีกว่า?

ufw เหมาะสำหรับผู้เริ่มต้นเพราะใช้งานง่ายกว่า ส่วน iptables เหมาะสำหรับผู้ที่ต้องการควบคุมรายละเอียดมากขึ้น ทั้งสองทำงานบน netfilter เหมือนกัน

เปิด port ช่วง 1-65535 ทั้งหมดได้ไหม?

ทำได้แต่ไม่แนะนำอย่างยิ่ง เพราะจะเปิดช่องโหว่ให้ถูกโจมตีได้ง่าย ควรเปิดเฉพาะ port ที่ใช้งานจริงเท่านั้น

เปิด port แล้วต้อง restart server ไหม?

ไม่ต้อง การเปิด port ผ่าน firewall มีผลทันที ไม่จำเป็นต้อง restart server แต่สำหรับ firewalld ต้อง reload ด้วยคำสั่ง:

sudo firewall-cmd --reload

ตั้งค่า Firewall ได้ง่ายกับ DriteStudio

การเปิด port บน Linux สามารถทำได้ผ่าน iptables, firewalld หรือ ufw ขึ้นอยู่กับ distribution ที่ใช้ สิ่งสำคัญคือเปิดเฉพาะ port ที่จำเป็นและจำกัดการเข้าถึงให้มากที่สุด หากคุณต้องการ VPS หรือ Dedicated Server ที่ตั้งค่า firewall มาให้พร้อมใช้งาน ติดต่อ DriteStudio วันนี้เพื่อรับเซิร์ฟเวอร์ที่ปลอดภัยและพร้อมใช้งานทันที

D

DriteStudio

タイで VPS、Webホスティング、コロケーションを提供するデジタルインフラ事業者

Craft Intertech (Thailand) Co., Ltd. が運営