Forum: PC-Programmierung Raw socket mit eht0


von Carolin Z. (seobalis)


Lesenswert?

Hallo Leute,

mein Rechner hat 2 Interface(eth0 und eth1). Ich will die IP Pakete 
zwischen 2 ethernet senden. Dafür benutze ich raw socket wie folgt.
1
sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);

Aber ich weiß noch nicht ob ich raw socket mit ethernet verbinden muss, 
und wenn ja dann wie?

Ich bin dankbar für euere Hilfe

Gruß,
Carolin

von Εrnst B. (ernst)


Lesenswert?

Setz einfach die Source-IP in deinen Paketen richtig, dann kommt das 
Paket auch am richtigen Netzwerk-Interface raus.

von Carolin Z. (seobalis)


Lesenswert?

Ernst Bachmann wrote:
> Setz einfach die Source-IP in deinen Paketen richtig, dann kommt das
> Paket auch am richtigen Netzwerk-Interface raus.

das Paket kommt am richtigen Interface raus, aber beim Empfang wird 
meine socket von 2 Interface lesen. Ich will nur von eth0 die IP Pakete 
lesen.

Gruß,
Carolin

von Εrnst B. (ernst)


Lesenswert?

Das sollte dann einfach mit einem "bind" auf die IP von eth0 gehen.

von Carolin Z. (seobalis)


Lesenswert?

Ok danke. Dann probiere ich das mal

von seoblis (Gast)


Lesenswert?

Hallo,
 ich habe das mit IP Addresse von eth0 verbinden
1
sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
2
ser.sin_family = AF_INET;
3
ser.sin_addr.s_addr = inet_addr("a92.168.99.99");
4
re = bind(sock, (struct sockaddr*)&ser, sizeof(ser));
5
if(re == -1){
6
perror("bind()");
7
exit(1);
8
}
9
printf("bind succes");

soweit macht mein Programm auch. Aber wenn ich eine Paket von eth0 nach 
eth1 los schiken, kann ich diese Paket auf eth1 nicht enpfangen. Habe 
ich einen Fehler beim "bind" ?

Gruß,
Carolin

von seoblis (Gast)


Lesenswert?

ob da soll "192.168.99.99" sein

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.