🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.os.linux.programowanie
5 messages
5 total messages Started by laser Mon, 02 May 2011 07:28
UDP, INADDR_ANY - czemu nie dziala?
#72204
Author: laser
Date: Mon, 02 May 2011 07:28
26 lines
1941 bytes
Witam, Taki drobny problem: z komputera A (GPRS, Internet) wysylam do
komputera B co 5 sek pakiet UDP.  Komputer B jest na stale wpiety do
Internetu przez DSL i ma staly nr IP. Wszystko dziala, pakiety UDP dochodza.

Od czasu do czasu na komputerze B jest zestawiane polaczenie GPRS do
Internetu.  Domyslny staje sie router z GPRS i pakiety przestaja dochodzic.
W kodzie odbiorcy (B) UDP mam tak:
  servAddr.sin_family           = AF_INET;
  servAddr.sin_addr.s_addr      = htonl(INADDR_ANY);
  servAddr.sin_port             = htons(port);

  rc = bind(sd, (struct sockaddr *) &servAddr, sizeof(servAddr));

Wskazywaloby to na to, ze pakiety powinny byc odebrane z ktoregokolwiek
interfejsu by nie przyszly. A kiedy jest na B jest sesja GPRS - nie
przychodza. Kiedy GPRS sie konczy - zaczynaja przychodzic.

Co ciekawsze - tcpdump pokazuje, ze docieraj. Tylko jakgdyby nie sa
przekazywane do mojego programu. Czy moze ktos wie czemu?

marcin

-- 
ml

http://www.archimedes.eu.org/
Re: UDP, INADDR_ANY - czemu nie dziala?
#72205
Author: bofh
Date: Mon, 02 May 2011 10:46
29 lines
2060 bytes
On 02.05.2011 09:28, laser@laser.lon wrote:
> Witam, Taki drobny problem: z komputera A (GPRS, Internet) wysylam do
> komputera B co 5 sek pakiet UDP.  Komputer B jest na stale wpiety do
> Internetu przez DSL i ma staly nr IP. Wszystko dziala, pakiety UDP dochodza.
> 
> Od czasu do czasu na komputerze B jest zestawiane polaczenie GPRS do
> Internetu.  Domyslny staje sie router z GPRS i pakiety przestaja dochodzic.
> W kodzie odbiorcy (B) UDP mam tak:
>   servAddr.sin_family           = AF_INET;
>   servAddr.sin_addr.s_addr      = htonl(INADDR_ANY);
>   servAddr.sin_port             = htons(port);
> 
>   rc = bind(sd, (struct sockaddr *) &servAddr, sizeof(servAddr));
> 
> Wskazywaloby to na to, ze pakiety powinny byc odebrane z ktoregokolwiek
> interfejsu by nie przyszly. A kiedy jest na B jest sesja GPRS - nie
> przychodza. Kiedy GPRS sie konczy - zaczynaja przychodzic.
> 
> Co ciekawsze - tcpdump pokazuje, ze docieraj. Tylko jakgdyby nie sa
> przekazywane do mojego programu. Czy moze ktos wie czemu?
> 

Spróbuj dać:

echo "0" > /proc/sys/net/ip4/conf/all/rp_filter

-- 
wer <",,)~~
http://szumofob.eu
Re: UDP, INADDR_ANY - czemu nie dziala?
#72206
Author: laser
Date: Tue, 03 May 2011 07:25
13 lines
1365 bytes
Dnia 02.05.2011 bofh@nano.pl <bofh@nano.pl> napisał/a:
>
> Spróbuj dać:
>
> echo "0" > /proc/sys/net/ip4/conf/all/rp_filter

Niestety - nie pomoglo. Chodziło o to, ze system blokuje pakiety, ktore
dochodza przez inny interfejs niz by mu sie to wydawalo?

-- 
ml

http://www.archimedes.eu.org/
Re: UDP, INADDR_ANY - czemu nie dziala?
#72207
Author: laser
Date: Tue, 03 May 2011 07:30
24 lines
1861 bytes
Dnia 03.05.2011 laser@laser.lon <laser@laser.lon> napisał/a:
> Dnia 02.05.2011 bofh@nano.pl <bofh@nano.pl> napisał/a:
>>
>> Spróbuj dać:
>>
>> echo "0" > /proc/sys/net/ip4/conf/all/rp_filter
>
> Niestety - nie pomoglo. Chodziło o to, ze system blokuje pakiety, ktore
> dochodza przez inny interfejs niz by mu sie to wydawalo?

Ciekawe: kiedy przy dopisalem 'route add -net 91.94.0.0/16 eth0' to
zadzialalo. Ta siec '91.94.*.*' to GPRS z orange. Komputer wysylajacy UDP
dostal adres z tej sieci (nie wiem czy ta siec to akurat /16, ale poczatek
sie zgadza).

To dalej nie rozwiazuje problemu - chcialbym zeby wszystko dzialalo bez
kombinacji, a powinno: UDP dochodzi (tcpdump pokazuje). Tylko czemu nie jest
przekazywane do mojego programu?


-- 
ml

http://www.archimedes.eu.org/
Re: UDP, INADDR_ANY - czemu nie dziala?
#72208
Author: Mariusz Kruk
Date: Tue, 03 May 2011 16:55
21 lines
1759 bytes
epsilon$ while read LINE; do echo \>"$LINE"; done < "laser@laser.lon"
>> Spróbuj dać:
>>
>> echo "0" > /proc/sys/net/ip4/conf/all/rp_filter
>Niestety - nie pomoglo. Chodziło o to, ze system blokuje pakiety, ktore
>dochodza przez inny interfejs niz by mu sie to wydawalo?

Owszem. RP Filter odrzuca pakiety z adresem źródłowym "pochodzącym
z innego interfejsu".
Jakbyś miał włączone logowanie marsjan, miałbyś informację w logach
kernela o odrzuceniu pakietów.
Musisz wyłączyć rp_filter na tym interfejsie, na który przychodzą ci te
dziwne pakiety. Niestety, wyłączenie na "all" nie zawsze działa
(powiedziałbym wręcz, że raczej zwykle nie działa, ale nie chce mi się
wgłębiać, więc będę ostrożny).

-- 
\------------------------/
|  Kruk@epsilon.eu.org   | http://www.nieruchomosci.pl/mieszkanie,58342761
| http://epsilon.eu.org/ |
/------------------------\
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads