การทำ NAT บน Linux เบื้องต้น SNAT DNAT Masquerade พร้อมวิธีตั้งค่า iptables
Back to articles

การทำ NAT บน Linux เบื้องต้น SNAT DNAT Masquerade พร้อมวิธีตั้งค่า iptables

NAT บน Linux คืออะไร? เรียนรู้ SNAT DNAT Masquerade และวิธีตั้งค่าด้วย iptables

Linux--Updated: May 6, 2026

การทำ NAT (Network Address Translation) เป็นพื้นฐานสำคัญสำหรับผู้ดูแลเซิร์ฟเวอร์ Linux โดยเฉพาะเมื่อต้องจัดการเครือข่ายภายในให้เข้าถึงอินเทอร์เน็ตได้ผ่าน IP เดียว บทความนี้อธิบายหลักการ NAT แบบเข้าใจง่ายพร้อมคำสั่งจริงที่ใช้ตั้งค่าบน Linux ได้ทันที

NAT คืออะไร ทำไมผู้ดูแลเซิร์ฟเวอร์ต้องรู้

NAT คือกระบวนการแปลง IP address จากเครือข่ายหนึ่งไปอีกเครือข่ายหนึ่ง ใช้มากที่สุดเมื่อเครื่องหลายเครื่องในเครือข่ายภายในต้องการออกอินเทอร์เน็ตผ่าน public IP เดียว

ลองนึกภาพคอนโดที่ทุกห้องใช้อินเทอร์เน็ตผ่านเราเตอร์ตัวเดียว เราเตอร์แปลง IP ภายในของแต่ละห้องเป็น IP ของคอนโดตัวเดียวแล้วส่งออกข้างนอก นี่คือ NAT ที่เราใช้กันทุกวัน

ประเภทของ NAT ที่ต้องรู้จัก

SNAT (Source NAT)

SNAT เปลี่ยน source IP ของ packet ขาออก ใช้เมื่อเครื่องในเครือข่ายภายในต้องการเข้าถึงอินเทอร์เน็ต เป็นรูปแบบที่พบบ่อยที่สุดในทุกองค์กร

DNAT (Destination NAT)

DNAT เปลี่ยน destination IP ของ packet ขาเข้า ใช้สำหรับ port forwarding เช่น ส่ง traffic ที่เข้ามาที่ port 80 ไปยังเว็บเซิร์ฟเวอร์ภายใน เหมาะกับการเปิดบริการให้เข้าถึงจากภายนอก

Masquerade

คล้าย SNAT แต่เหมาะกับ IP ที่เปลี่ยนแปลงได้ (dynamic IP) ระบบจะใช้ IP ปัจจุบันของ interface ขาออกโดยอัตโนมัติ สะดวกกว่า SNAT ในกรณีที่ IP ไม่คงที่

วิธีตั้งค่า NAT บน Linux ด้วย iptables

ขั้นตอนที่ 1: เปิด IP Forwarding

# เปิด IP forwarding ทันที
sudo sysctl -w net.ipv4.ip_forward=1

# ตั้งค่าถาวรใน /etc/sysctl.conf
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

ขั้นตอนที่ 2: ตั้งค่า MASQUERADE (สำหรับ Dynamic IP)

# ให้เครื่องในเครือข่าย 192.168.1.0/24 ออกเน็ตผ่าน eth0
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

# อนุญาต forwarding สำหรับ established connections
sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -s 192.168.1.0/24 -o eth0 -j ACCEPT

ขั้นตอนที่ 3: ตั้งค่า SNAT (สำหรับ Static IP)

# ใช้ SNAT เมื่อ public IP คงที่ เช่น 203.0.113.10
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 203.0.113.10

ขั้นตอนที่ 4: ตั้งค่า DNAT (Port Forwarding)

# Forward port 80 จากภายนอกไปยังเว็บเซิร์ฟเวอร์ภายใน 192.168.1.100
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80

# Forward port 443 (HTTPS)
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 192.168.1.100:443

# อนุญาต forward traffic ไปยังเครื่องปลายทาง
sudo iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT
sudo iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 443 -j ACCEPT

ขั้นตอนที่ 5: บันทึก Rule ให้คงอยู่หลัง Reboot

# บันทึก rule ปัจจุบัน
sudo iptables-save > /etc/iptables/rules.v4

# หรือติดตั้ง iptables-persistent (Debian/Ubuntu)
sudo apt install iptables-persistent
sudo netfilter-persistent save

สำหรับผู้ที่ใช้ VPS ของ DriteStudio การตั้งค่า NAT มีประโยชน์เมื่อต้องสร้างเครือข่ายภายในระหว่าง VPS หลายเครื่อง หรือทำ port forwarding สำหรับบริการต่าง ๆ

ตัวอย่าง NAT ด้วย nftables (ทางเลือกใหม่)

nftables เป็นตัวแทน iptables ในอนาคต มี syntax ที่สะอาดกว่า:

# สร้าง table และ chain สำหรับ NAT
sudo nft add table ip nat
sudo nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }
sudo nft add chain ip nat prerouting { type nat hook prerouting priority -100 \; }

# MASQUERADE สำหรับเครือข่ายภายใน
sudo nft add rule ip nat postrouting oifname "eth0" ip saddr 192.168.1.0/24 masquerade

# DNAT สำหรับ port forwarding
sudo nft add rule ip nat prerouting iifname "eth0" tcp dport 80 dnat to 192.168.1.100:80

# ดู rule ทั้งหมด
sudo nft list ruleset

ตรวจสอบและ Debug NAT

# ดู NAT rule ทั้งหมด
sudo iptables -t nat -L -n -v

# ดู connection tracking
sudo conntrack -L

# ตรวจสอบว่า IP forwarding เปิดอยู่
cat /proc/sys/net/ipv4/ip_forward

ข้อควรระวังที่ต้องรู้

การตั้งค่า NAT ผิดอาจทำให้เครือข่ายใช้งานไม่ได้ ควรทดสอบ rule ก่อนบันทึกถาวร ตรวจสอบ firewall rule ให้ไม่ขัดกัน และเก็บ backup ของ iptables rule เดิมไว้เสมอ ควรระวังเรื่อง IP ชนกัน การตั้ง subnet ที่ซ้ำกับเครือข่ายภายนอก และการลืมเปิด IP forwarding

หากต้องการ ความปลอดภัยเพิ่มเติม บริการ Security ของ DriteStudio ช่วยดูแลด้านเครือข่ายและ firewall ให้คุณได้อย่างมืออาชีพ

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

SNAT กับ Masquerade ต่างกันอย่างไร

SNAT ระบุ source IP คงที่ เหมาะกับ static IP ส่วน Masquerade ใช้ IP ปัจจุบันของ interface โดยอัตโนมัติ เหมาะกับ dynamic IP

iptables กับ nftables ตัวไหนดีกว่า

nftables เป็นตัวแทน iptables ในอนาคต มีไวยากรณ์ที่สะอาดกว่าและประสิทธิภาพดีกว่า แต่ iptables ยังใช้ได้ทั่วไปและมีเอกสารมากกว่า

ตั้งค่า NAT แล้ว rule หายหลัง reboot ทำอย่างไร

ใช้คำสั่งบันทึกและโหลด rule:

# บันทึก
sudo iptables-save > /etc/iptables/rules.v4
# โหลดกลับ
sudo iptables-restore < /etc/iptables/rules.v4

หรือติดตั้ง iptables-persistent เพื่อให้ rule คงอยู่อัตโนมัติ

NAT มีผลต่อ performance ของเครือข่ายไหม

มีบ้างเล็กน้อยเพราะต้องแปลง IP ทุก packet แต่ในทางปฏิบัติแทบไม่สังเกตเห็นบนเซิร์ฟเวอร์สมัยใหม่

หากต้องการ VPS สำหรับทดสอบการตั้งค่าเครือข่ายหรือรันเซิร์ฟเวอร์จริง DriteStudio มีบริการ VPS, Hosting, Dedicated Server และ Colocation ที่พร้อมรองรับทุกความต้องการ ติดต่อทีมงานได้เลยวันนี้

Share article:
View more articles
D

DriteStudio | ไดรท์สตูดิโอ

Digital infrastructure provider for VPS, web hosting, and colocation in Thailand

Operated by Craft Intertech (Thailand) Co., Ltd.