IPGu.net

หา IP ของมึงจาก Terminal

คำสั่งด้านล่างนี้จะแสดง IP สาธารณะ ของคุณ (IP ที่อินเทอร์เน็ตมองเห็น) โดยตรงจาก terminal หรือ command prompt โดยไม่ต้องเปิดเบราว์เซอร์

Linux / macOS

curl — วิธีที่ง่ายที่สุด

curl https://api.ipify.org

คืนค่า IP address เพียงบรรทัดเดียว ไม่มีขึ้นบรรทัดใหม่

# รูปแบบ JSON
curl "https://api.ipify.org?format=json"

curl — parse ด้วย jq

curl -s "https://api.ipify.org?format=json" | jq -r .ip

ต้องติดตั้ง jq ก่อน (brew install jq บน macOS หรือ apt install jq บน Ubuntu)

wget — ทางเลือกแทน curl

wget -qO- https://api.ipify.org

ใช้ได้บน Linux ส่วนใหญ่ที่ไม่ได้ติดตั้ง curl

dig — ผ่าน DNS ไม่ต้องใช้ HTTP

dig +short myip.opendns.com @resolver1.opendns.com

ใช้ OpenDNS เพื่อ resolve IP สาธารณะ รวดเร็วและไม่ต้องพึ่ง HTTP วิธีนี้เหมาะสำหรับ environment ที่ HTTP ถูก block

เช็ค IPv6 โดยเฉพาะ

curl -6 https://api64.ipify.org

ถ้าเครือข่ายคุณรองรับ IPv6 คำสั่งนี้จะคืน IPv6 address

บันทึก IP เป็น environment variable

MY_IP=$(curl -s https://api.ipify.org)
echo "Your public IP: $MY_IP"

มีประโยชน์สำหรับ shell script ที่ต้องการรู้ IP ปัจจุบันเพื่อใช้ต่อ เช่น อัปเดต DNS หรือ whitelist

แสดง interface เครือข่าย (IP ในเครื่อง)

# Linux
ip addr show

# macOS
ifconfig | grep "inet "

IP เหล่านี้คือ IP ส่วนตัวในเครือข่ายท้องถิ่น ไม่ใช่ IP สาธารณะที่อินเทอร์เน็ตมองเห็น

Windows

ipconfig — แสดง IP ทั้งหมด

ipconfig /all

แสดง IP address ของ network adapter ทุกตัว รวมถึง DNS server, default gateway และ MAC address

nslookup — ผ่าน DNS

nslookup myip.opendns.com resolver1.opendns.com

คล้ายกับ dig บน Linux ใช้ OpenDNS เพื่อหา IP สาธารณะ

PowerShell

ดึง IP สาธารณะ

(Invoke-WebRequest -Uri "https://api.ipify.org").Content
# alias สั้นกว่า
(irm "https://api.ipify.org")

บันทึกเป็น variable

$myIP = (irm "https://api.ipify.org")
Write-Host "Public IP: $myIP"

แสดง IP ทั้งหมดในเครื่อง

Get-NetIPAddress | Where-Object {$_.AddressFamily -eq "IPv4"} | Select-Object InterfaceAlias, IPAddress

ใช้กับ Docker หรือ CI/CD

ถ้าต้องการตรวจสอบ IP ของ container หรือ pipeline ระหว่าง build ให้ใช้:

# ใน Dockerfile หรือ CI script
curl -s https://api.ipify.org

IP ที่ได้จะเป็น IP ของ host หรือ NAT gateway ของ cloud provider ไม่ใช่ IP ของ container เอง ซึ่งมีประโยชน์ในการ debug ว่า outbound traffic ออกจาก IP ไหน

บริการอื่นที่ใช้แทนกันได้

ถ้า api.ipify.org ไม่ตอบสนอง สามารถใช้บริการอื่นแทนได้:

curl https://ifconfig.me
curl https://icanhazip.com
curl https://checkip.amazonaws.com

ทุกบริการคืนค่า IP address เป็น plain text เหมาะสำหรับ script

Troubleshooting

สำหรับนักพัฒนา: Debug Proxy และ CDN Headers

เมื่อแอปพลิเคชันทำงานหลัง reverse proxy หรือ CDN การรู้ว่า IP จริงของ client ถูกส่งผ่าน header ไหนมีความสำคัญมาก

ดู forwarding headers ด้วย curl

# ดู response headers ทั้งหมด (รวมถึง IP ที่เซิร์ฟเวอร์มองเห็น)
curl -s -I https://api.ipify.org

# ดู headers ที่เบราว์เซอร์/ไคลเอนต์ส่งไป
curl -v https://api.ipify.org 2>&1 | grep "^>"

ตรวจสอบ headers ที่ Cloudflare หรือ CDN เพิ่มเข้ามา

CDN เช่น Cloudflare จะเพิ่ม headers พิเศษเพื่อบอก IP จริงของ client:

เปิด IPGu.net เพื่อดู headers ทั้งหมดที่ server มองเห็นจากการเชื่อมต่อของคุณ รวมถึง forwarding headers ที่ CDN เพิ่มเข้ามา

Detect IP ใน VPN หรือ proxy environment

# ตรวจสอบว่า curl ใช้ IP อะไร (VPN/proxy หรือ IP จริง)
curl -s https://api.ipify.org

# บังคับ bypass proxy (ถ้ามี HTTP_PROXY ใน environment)
curl -x "" -s https://api.ipify.org

# เปรียบเทียบ IPv4 กับ IPv6
curl -4 -s https://api.ipify.org && curl -6 -s https://api64.ipify.org

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

curl กับ dig ให้ผล IP ต่างกัน ทำไม?

curl ใช้ HTTP ซึ่งผ่าน proxy ในเครือข่าย ส่วน dig ใช้ DNS โดยตรง ถ้า IP ต่างกันแสดงว่ามี HTTP proxy อยู่ในเครือข่าย

ทำไม IP ใน curl ต่างจากที่เห็นในเบราว์เซอร์?

อาจเกิดจาก IPv4/IPv6 dual-stack ที่แตกต่างกัน เบราว์เซอร์อาจเลือก IPv6 ในขณะที่ curl ใช้ IPv4 ลองเพิ่ม -4 หรือ -6 เพื่อระบุโปรโตคอล

ใน Docker container จะรู้ IP outbound ได้อย่างไร?

รัน curl -s https://api.ipify.org ภายใน container จะได้ IP ของ host หรือ NAT gateway ไม่ใช่ IP ภายใน container