ملحوظة
منذ الإصدار 2.3.0، يتضمن التطبيق اكتشاف DNS اختياري للعميل
مجرد خدمة أخرى "ما هو عنوان IP الخاص بي"، بما في ذلك تحديد الموقع الجغرافي، والتحقق من منفذ TCP المفتوح، ومعلومات الرؤوس. تم كتابته مع أخذ الأداء العالي في الاعتبار، فهو يستخدم جين الذي يستخدم 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 هو نفس المنفذ المستخدم لخادم TLS.X-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
مطلوب جولانج>= 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
قم بتنزيل أحدث إصدار من جيثب
تتوفر صورة خفيفة للغاية (~ 4 ميجابايت) على مركز الإرساء. منذ الإصدار 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