บันทึก
ตั้งแต่เวอร์ชัน 2.3.0 แอปพลิเคชันจะรวมการค้นพบ DNS ไคลเอ็นต์ที่เป็นทางเลือก
อีกหนึ่งบริการ "ที่อยู่ IP ของฉันคืออะไร" รวมถึงตำแหน่งทางภูมิศาสตร์ การตรวจสอบพอร์ตที่เปิด TCP และข้อมูลส่วนหัว เขียนขึ้นโดยคำนึงถึงประสิทธิภาพสูง โดยจะใช้ gin ซึ่งใช้ httprouter ซึ่งเป็นมัลติเพล็กเซอร์ HTTP ประสิทธิภาพสูงน้ำหนักเบา
ดู ifconfig.es เว็บไซต์ที่ใช้งานจริงโดยใช้ whatismyip
และเปิดใช้งาน DNS discovery
รับ IP สาธารณะของคุณได้อย่างง่ายดายจากบรรทัดคำสั่ง:
curl ifconfig.es
127.0.0.1
curl -6 ifconfig.es
::1
รับ IP ของผู้ให้บริการ DNS ของคุณ:
curl -L dns.ifconfig.es
2a04:e4c0:47::67 (Spain / OPENDNS)
-tls-bind
) เนื่องจาก HTTP/3 เริ่มต้นเป็นการเชื่อมต่อ TLS ที่ได้รับการอัปเกรดเป็น UDP พอร์ต UDP เหมือนกับพอร์ตที่ใช้สำหรับเซิร์ฟเวอร์ TLSX-Real-IP
) เพื่อค้นหาที่อยู่ IP ต้นทาง นอกจากนี้ยังสนับสนุนส่วนหัวที่กำหนดเองเพื่อแก้ไขพอร์ตไคลเอ็นต์ หากพร็อกซีสามารถเพิ่มส่วนหัวสำหรับ IP เท่านั้น (เช่น ส่วนหัวคงที่จาก CDN) พอร์ตไคลเอ็นต์จะแสดงเป็นไม่ทราบhup
curl -H "Accept: application/json" https://ifconfig.es/
) การค้นพบ DNS ทำงานโดยบังคับให้ไคลเอ็นต์ส่งคำขอไปยัง <uuid>.dns.ifconfig.es
คำขอ DNS นี้ได้รับการจัดการโดยเซิร์ฟเวอร์ microdns ที่รวมอยู่ในไบนารี whatismyip
ในการรันเซิร์ฟเวอร์การค้นพบ จะต้องสร้างไฟล์การกำหนดค่าในรูปแบบต่อไปนี้:
---
domain : dns.example.com
redirect_port : " :8000 "
resource_records :
- " 1800 IN SOA xns.example.com. hostmaster.example.com. 1 10000 2400 604800 1800 "
- " 3600 IN NS xns.example.com. "
ipv4 :
- " 127.0.0.2 "
ipv6 :
- " aaa:aaa:aaa:aaaa::1 "
หน่วยงาน DNS สำหรับ example.com ได้มอบหมายโซนโดเมนย่อย dns.example.com
ให้กับเซิร์ฟเวอร์ที่ใช้บริการ whatismyip
ไคลเอ็นต์สามารถขอ URL dns.example.com
ได้โดยทำตามการเปลี่ยนเส้นทาง curl -L dns.example.com
เพื่อหลีกเลี่ยงการเปลี่ยนเส้นทาง คุณสามารถระบุ URL ที่ถูกต้องได้ ตัวอย่างเช่น สำหรับ ifconfig.es จริง:
curl $( uuidgen ) .dns.ifconfig.es
curl $( cat /proc/sys/kernel/random/uuid ) .dns.ifconfig.es
ต้องใช้ Golang >= 1.22
make build
Usage of whatismyip:
-bind string
Listening address (see https://pkg.go.dev/net?#Listen) (default ":8080")
-enable-http3
Enable HTTP/3 protocol. HTTP/3 requires --tls-bind set, as HTTP/3 starts as a TLS connection that then gets upgraded to UDP. The UDP port is the same as the one used for the TLS server.
-enable-secure-headers
Add sane security-related headers to every response
-geoip2-asn string
Path to GeoIP2 ASN database
-geoip2-city string
Path to GeoIP2 city database
-resolver string
Path to the resolver configuration. It actually enables the resolver for DNS client discovery.
-template string
Path to template file
-tls-bind string
Listening address for TLS (see https://pkg.go.dev/net?#Listen)
-tls-crt string
When using TLS, path to certificate file
-tls-key string
When using TLS, path to private key file
-trusted-header string
Trusted request header for remote IP (e.g. X-Real-IP). When using this feature if -trusted-port-header is not set the client port is shown as 'unknown'
-trusted-port-header string
Trusted request header for remote client port (e.g. X-Real-Port). When this parameter is set -trusted-header becomes mandatory
-version
Output version information and exit
./whatismyip -geoip2-city ./test/GeoIP2-City-Test.mmdb -geoip2-asn ./test/GeoLite2-ASN-Test.mmdb
./whatismyip -geoip2-city ./test/GeoIP2-City-Test.mmdb -geoip2-asn ./test/GeoLite2-ASN-Test.mmdb
-bind " " -tls-bind :8081 -tls-crt ./test/server.pem -tls-key ./test/server.key
-resolver ./test/resolver.yml
./whatismyip -geoip2-city ./test/GeoIP2-City-Test.mmdb -geoip2-asn ./test/GeoLite2-ASN-Test.mmdb
-bind " " -tls-bind :8081 -tls-crt ./test/server.pem -tls-key ./test/server.key -enable-http3
./whatismyip -geoip2-city ./test/GeoIP2-City-Test.mmdb -geoip2-asn ./test/GeoLite2-ASN-Test.mmdb
-trusted-header X-Real-IP -trusted-port-header X-Real-Port -template mytemplate.tmpl
ดาวน์โหลดเวอร์ชันล่าสุดจาก GitHub
มีภาพที่เบาเป็นพิเศษ (~ 4MB) บนฮับนักเทียบท่า ตั้งแต่เวอร์ชัน 2.1.2
ไบนารี่จะถูกบีบอัดโดยใช้ upx
make docker-run
docker run --tty --interactive --rm
-v $PWD / < path to city database > :/tmp/GeoIP2-City-Test.mmdb:ro
-v $PWD / < path to ASN database > :/tmp/GeoLite2-ASN-Test.mmdb:ro -p 8080:8080
dcarrillo/whatismyip:latest
-geoip2-city /tmp/GeoIP2-City-Test.mmdb
-geoip2-asn /tmp/GeoLite2-ASN-Test.mmdb