Wyślij pakiet przez sieć, nawet jeśli jego celem jest host lokalny

10

W systemie Linux, jeśli wysyłasz pakiet na adres jednego z jego interfejsów sieciowych , ten pakiet jest trasowany wewnętrznie, nigdy nie jest wysyłany przez sieć. Tak jest w 99,99% przypadków.

Czasami podczas testowania konfiguracji sieci przydatne jest wysłanie pakietu przez łącze lokalne z samego komputera, z samym komputerem jako celem. W jaki sposób mogę to zrobić? Przynajmniej dla łącza typu magistrala, takiego jak Ethernet, jeśli nie dla łącza punkt-punkt. Interesują mnie tylko pakiety IP (zarówno IPv4, jak i IPv6).

Gilles „SO- przestań być zły”
źródło
Próbowałeś skanować nmap?
Ruban Savvy
Czy jesteś zainteresowany pakietem fizycznie wychodzącym z sieci i ponownie kierowanym? A może chcesz, aby wyglądało to tak, jak gdyby (przejrzyj stos routingu, iptables itp.)?
Patrick
@Patrick Chcę, żeby wyszedł i osiągnął lokalny router. Chociaż pobyt w tym miejscu, ale wyglądanie lokalnie, jakby zgasło, może być również przydatne w różnych okolicznościach.
Gilles „SO- przestań być zły”
@Gilles Czy kiedykolwiek miałeś z tym jakiś sukces? Obecnie próbuję to zrobić za pomocą dwóch adapterów TAP i prostego kodu pomostowego, ale bez powodzenia. Routing wydaje się być poprawny, ale ARP wydaje się nie działać (pakiety wychodzą z src mac == dst mac). Mógłbym wyjaśnić moją konfigurację, gdyby to pomogło.
Jonathon Reinhart
1
@Gilles Nie próbowałem tego, ale mogę sobie wyobrazić implementację routera w taki sposób, że nigdy nie wysyła niczego z powrotem do miejsca, z którego pochodzi, np. Aby zapobiec wiecznemu odbijaniu się między dwoma routerami. Tylko kwestia, na którą należy zwrócić uwagę podczas testowania, na wypadek gdyby paczka wyszła, ale nigdy nie wróciła.
Anthon

Odpowiedzi:

7

Każda karta sieciowa w systemie Linux ma parametr logiczny sysctl accept_local( /proc/sys/net/ipv4/conf/eth0/accept_local). Spróbuj ustawić wartość 0 dla wszystkich zaangażowanych adapterów (dodatkowo może być konieczne zmodyfikowanie tabeli routingu, aby dostosować ją do konfiguracji testowej).

Upewnij się także, że rp_filter( /proc/sys/net/ipv4/conf/eth0/rp_filter) jest włączone (nie 0).

Odniesienie: http://code.metager.de/source/xref/linux/stable/Documentation/networking/ip-sysctl.txt

dąb
źródło