Sorunuzun kesin bir doğru cevabı olduğunu sanmıyorum. Bunun yerine, dilediğiniz şeye nasıl yaklaşacağınıza dair büyük bir yol var. Bu nedenle, nasıl yapılacağına dair bazı ipuçları vereceğim.
Bir makinenin 2'den fazla arabirimi varsa (bir olarak lo
sayılır), doğru arabirimi kolayca otomatik olarak algılamakta sorun yaşarsınız. İşte nasıl yapılacağına dair bazı tarifler.
Örneğin sorun, ana bilgisayarların genel IP'yi bazı özel IP'ye değiştiren ve istekleri ileten bir NAT güvenlik duvarının arkasındaki bir DMZ'de olmalarıdır. Makinenizde 10 arabirim olabilir, ancak yalnızca biri genel olana karşılık gelir.
Hatta otomatik algılama bile çalışmaz, eğer güvenlik duvarınız kaynak IP'yi tamamen farklı bir şeye çevirir. Bu nedenle, varsayılan yolun ortak bir arayüzle arayüzünüze gittiğinden bile emin olamazsınız.
Varsayılan rota üzerinden tespit et
Bu, şeyleri otomatik olarak algılamak için önerdiğim yol
Bunun gibi bir şey ip r get 1.1.1.1
genellikle size varsayılan rotaya sahip arayüzü söyler.
Bunu en sevdiğiniz komut dosyası / programlama dilinde yeniden oluşturmak istiyorsanız strace ip r get 1.1.1.1
, sarı tuğlalı yolu kullanın ve izleyin.
İle ayarlayın /etc/hosts
Kontrolü elinde tutmak istiyorsan bu benim tavsiyem
Sen bir girişi oluşturabilir /etc/hosts
gibi
80.190.1.3 publicinterfaceip
Ardından publicinterfaceip
, genel arayüzünüze başvurmak için bu takma adı kullanabilirsiniz .
Ne yazık ki haproxy
bu hileyi IPv6 ile karıştırmıyor
Çevreyi kullanın
Olmamanız /etc/hosts
durumunda bu iyi bir çözümdür.root
Aynı /etc/hosts
. ama bunun için ortamı kullanın. Deneyebilirsin /etc/profile
ya da bunun ~/.profile
için.
Dolayısıyla, programınızın bir değişkene ihtiyacı MYPUBLICIP
varsa, aşağıdaki gibi bir kod ekleyebilirsiniz (bu C, ondan C ++ oluşturmaktan çekinmeyin):
#define MYPUBLICIPENVVAR "MYPUBLICIP"
const char *mypublicip = getenv(MYPUBLICIPENVVAR);
if (!mypublicip) { fprintf(stderr, "please set environment variable %s\n", MYPUBLICIPENVVAR); exit(3); }
Eğer komut / programı çağırabilir Yani /path/to/your/script
böyle
MYPUBLICIP=80.190.1.3 /path/to/your/script
bu bile işe yarar crontab
.
Tüm arayüzleri numaralandırın ve istemediklerinizi ortadan kaldırın
Çaresiz yol kullanamazsan ip
Neyi istemediğinizi biliyorsanız, tüm arayüzleri numaralandırabilir ve tüm yanlış olanları göz ardı edebilirsiniz.
Burada zaten bu yaklaşım için bir cevap https://stackoverflow.com/a/265978/490291 gibi görünüyor .
DLNA gibi yap
Kendini alkole boğmaya çalışan sarhoş adamın yolu
Ağınızdaki tüm UPnP ağ geçitlerini numaralandırmayı deneyebilir ve bu şekilde bazı "harici" şeyler için uygun bir yol bulabilirsiniz. Bu, varsayılan rotanızın göstermediği bir rota üzerinde bile olabilir.
Bu konuda daha fazla bilgi için belki https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol adresine bakın.
Bu, varsayılan rotanız başka bir yeri gösteriyor olsa bile, gerçek genel arayüzünüzün hangisi olduğu size iyi bir izlenim verir.
Daha da fazlası var
Dağın peygamberle buluştuğu yer
IPv6 yönlendiricileri size doğru IPv6 önekini vermek için kendilerini tanıtırlar. Öneke bakmak size bir dahili IP'si mi yoksa global bir IP'si mi olduğuna dair bir ipucu verir.
Uygun bir ağ geçidi bulmak için IGMP veya IBGP çerçevelerini dinleyebilirsiniz.
2 ^ 32'den az IP adresi vardır. Bu nedenle, bir LAN üzerinde hepsine ping atmak uzun sürmez. Bu size, sizin bakış açınızdan İnternet'in çoğunun nerede bulunduğu konusunda istatistiksel bir ipucu verir. Ancak ünlü https://de.wikipedia.org/wiki/SQL_Slammer'dan biraz daha duyarlı olmalısınız
ICMP ve hatta ARP, ağ yan bandı bilgileri için iyi kaynaklardır. Size de yardımcı olabilir.
DHCP (hatta DHCPv6) gibi çoğu zaman yardımcı olacak tüm ağ altyapısı cihazlarınızla iletişim kurmak için Ethernet Yayın adresini kullanabilirsiniz.
Bu ek liste muhtemelen sonsuzdur ve her zaman eksiktir, çünkü her ağ aygıtı üreticisi, kendi aygıtlarını otomatik olarak nasıl algılayacakları konusunda yeni güvenlik açıkları icat etmektedir. Bu, olmaması gereken bazı ortak arayüzlerin nasıl tespit edileceği konusunda genellikle çok yardımcı olur.
Nuff dedi. Dışarı.