Portál AbcLinuxu, 27. dubna 2024 06:44


Dotaz: Markování packetů posílaných aplikací

14.9.2010 14:39 Sten
Markování packetů posílaných aplikací
Přečteno: 227×
Odpovědět | Admin
Mám router, ke kterému jsou na jednom rozhraní připojeny dva modemy a mezi nimi přepíná iptables a iproute pomocí MARK, resp. CONNMARK. Ani jeden modem ale není stabilní a je potřeba jej čas od času restartovat (a po dobu, kdy nefunguje, jej vyřadit z iptables). To můžu udělat pomocí vlastní aplikace, ale potřebuji nějak detekovat, že onen modem nefunguje, nejlépe pomocí ICMP Echo Request na server v Internetu. K tomu ale potřebuju, aby aplikace věděla, přes který modem požadavek posílá. Route Recording nemohu použít, jeden z modemů takové pakety zahazuje.

Může aplikace nastavit hodnotu MARK pro pakety posílané ze svých socketů pomocí nějakého systémového volání? Nebo ji přečíst pro doručené pakety?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.9.2010 18:05 Vantomas | skóre: 32 | Praha
Rozbalit Rozbalit vše Re: Markování packetů posílaných aplikací
Odpovědět | | Sbalit | Link | Blokovat | Admin
man ping
       -I interface address
              Set source address to specified interface address. Argument may be numeric IP address  or  name  of  device.  When
              pinging IPv6 link-local address this option is required.

Timhle se da nastavit pres jaky interface ma ping odchazet.

15.9.2010 11:48 Sten
Rozbalit Rozbalit vše Re: Markování packetů posílaných aplikací
Oba modemy jsou na stejném rozhraní. Víc rozhraní použít nemůžu, v routeru (průmyslová miniITX deska) jsou dvě GLAN (jedna pro veřejnou, jedna pro soukromou síť) a nelze přidat další (tedy šlo by to přes USB, ale do toho se mi moc nechce). Nelze použít ani VLANy, modemy je neumí
15.9.2010 12:15 Zdenek
Rozbalit Rozbalit vše Re: Markování packetů posílaných aplikací
Pridat tedy dalsi router, aby byl kazdy modem na svem rozhrani :-)
14.9.2010 18:30 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Markování packetů posílaných aplikací
Odpovědět | | Sbalit | Link | Blokovat | Admin
Odchozí odeslání může vyřešit přímo aplikace (může si říct odkud bude posílat) nebo to můžete udělat tou kombinací MARK a iproute (MARK dáte do tabulky mangle a chainu OUTPUT). Značky jsou ale platné pouze v rámci počítače takže nepočítejte s tím, že se nějaké vrátí. Na to můžete použít obsah (data) ICMP ping paketu. Obecně ale neovlivníte odkud paket zpátky přijde, může přijít i přes modem který ping neposlal.
In Ada the typical infinite loop would normally be terminated by detonation.
15.9.2010 11:58 Sten
Rozbalit Rozbalit vše Re: Markování packetů posílaných aplikací
Paket lze označkovat i podle toho, odkud přišel. Pokud by bylo možné v user space přečíst značku onoho paketu (i když je to pouze lokální značka), tak by se to tím vyřešilo

Ping se přes jiný modem vrátit nemůže, každý modem je připojen do jiné sítě (O₂ a Ufon) a má jinou veřejnou IP adresu

Hmm, značkování podle obsahu toho paketu by to vlastně vyřešilo :)
15.9.2010 12:13 Zdenek
Rozbalit Rozbalit vše Re: Markování packetů posílaných aplikací
Ping se přes jiný modem vrátit nemůže, každý modem je připojen do jiné sítě (O₂ a Ufon) a má jinou veřejnou IP adresu
Zkuste nastavit zdrojovou IP adresu toho pingu na adresu druheho rozhrani nez z ktereho ho posilate. Budete se asi divit :-)
15.9.2010 12:17 Sten
Rozbalit Rozbalit vše Re: Markování packetů posílaných aplikací
Vzhledem k tomu, že NATování na veřejnou IP adresu provádí až modemy, tak se nic nestane :-D
15.9.2010 15:06 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Markování packetů posílaných aplikací
Možná nenatují něco co už _má_ veřejnou IP.

Ale obecně to je jedno. Můžete dostat jakýkoliv packet odkudkoliv. Pokud s tím vaše aplikace nepočítá tak je navržená špatně. Tečka.
In Ada the typical infinite loop would normally be terminated by detonation.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.