pcap und pcap_lookupnet liefert falsche IP Adresse
-
moin,
ich habe eine Frage zu der Funktion "pcap_lookupnet".
Laut der man-page liefert sie mir u.a. die Netzwerkadresse zurück.pcap_lookupnet() is used to determine the network number and mask associated with the network device device. [...]
Ist die Netzwerkadresse (network number) nicht meine IP-Adresse?
Wenn ja, dann gibt die Funktion mir einen falschen Wert zurück.
Laut ifconfig habe ich die IP-Adresse 192.168.1.53, pcap_lookupnet gibt jedoch 192.168.1.0 zurück. (Ist das nicht eine Broadcast-Adresse? )Das System läuft als VM und ist direkt mir dem LAN verbunden, falls das von belang sein sollte.
Kann mir jemand das Verhalten erklären?
Gruß
sdy
-
Deine Host hat die Adresse 192.168.1.53, bist Teil des Netzwerk 192.168.1.0, die zugehöroge Broadcast-Adresse ist 192.168.1.255, falls keine von Standard abweichende Netzsubmaske eingegeben ist.
-
alles klar. ich dachte auch, dass 255 die broadcast adressen sind. aber wenn ich 192.168.1.0 anpinge, fragt mich die console, ob ich einen broadcast machen möchte
ping 192.168.1.0
Do you want to ping broadcast? Then -bWo denke ich da falsch?!
-
Welchen Host willst du anpingen, wenn du das Netzwerk anpingst? Alle, das ist definiert als Broadcast. Deswegen fragt er. Netzwerke kann man nicht anpringen, aber sind wichtig für Berechnung.
-
ok. muss ich nur noch iwie die eigene ip adresse rausfinden.
aber erst mal vielen dank. frage beantwortet!
-
Dein ist 192.168.1.53 und deine externe, die von "uns" zu sehen ist, siehst du hier http://www.wieistmeineip.de/
-
jo, das weiß ich ja
ich brauche die ip aber im code und nicht hardcoded
-
_Die_ IP wird verdammt schwer sein. Es gibt ja nicht zwangsläufig nur eine, auch bei Verbindungen nach "draußen" nicht. Wir haben dazu ziemlich regelmäßig Threads.
Was genau willst Du denn im Code mit der IP machen? Davon wird abhängen, was die korrekte Lösung ist.
-
hab sie rausbekommen.
[...] char* adresse; u_int32_t ipa; ipa = libnet_get_ipaddr4(context); adresse = libnet_addr2name4(ipa, LIBNET_DONT_RESOLVE); [...]
das reicht mir
-
Aus eigen Interesse solltest du trotzdem nman frage beantworten, es könnte sein, je nach Anwendung, dass du den falschen Weg beschreitest.
-
Ich möchte mit pcap eingehende ICMP Pakete empfangen. Dazu habe ich einen Filter angelegt:
char filter[] = "dst 192.168.1.53 and icmp";
Da sich die IP-Adresse ja ändern kann, wollte ich die IP-Adresse nicht direkt in den Filter schreiben, sondern sie dynamisch ermitteln lassen, so dass sie nicht "hardcoded" im Quellcode steht.