PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : UDP Absender IP?



simu
06-03-2008, 05:20
Hallo,

ich sende und empfange UDP-Pakete. Ich binde den Socket auf INADDR_ANY und auf einen bestimmten Port. Das empfangen funktioniert wunderbar, nur beim senden nimmt der Kernel willkürlich ein Interface als Absender. Kann man das explizit bestimmen?
Ich verwende recfrom und sendto.

Hintergrund:
Sobald ich auf meinem Rechner einen ipsec-tunnel laufen haben, sendet der kernel das udp-paket mit der absender-adresse meines ppp0 interfaces weg. Zur Erklärung:
Mein LAN-Netwerk: 192.168.0.0/24
Mein Rechner: 192.168.0.1
Tunnel zu anderem Netzwerk: 192.168.5.0/24 <==> 192.168.0.0/24 über ppp0
routing tabelle:
192.168.0.0 255.255.255.0 eth0
192.168.5.0 255.255.255.0 ipsec0
213.1.2.3 255.255.255.0 ppp0
default 0.0.0.0 ppp0

Wenn ich nun von dem netzwerk 192.168.5.x ein Paket an 192.168.0.1 sende wird es korrekt empfangen. im tcpdump ipsec0 sehe ich es und mein programm empfängt es auch. Wenn nun mein programm ein paket als antwort sendet verwendet es die ip adresse des ppp0 interfaces?? Dieses paket wird dann vom ipsec tunnel gedroppt, da eroute es mit der absender ip nicht verarbeiten kann. Nach welchen kriterien entscheidet der kernel, welche absender ip er benutzt?
PS: ich habe schon überlegt, meinen socket auf meine lokale ip zu binden, was aber dann nur bedingt funktioniert. Ich möchte auch über meine ppp0 adresse ohne vpn erreichbar sein und nicht beim starten des programms unterscheiden.

Ich hoffe es gibt jemand, der mir helfen kann.
gruß
simu