Co to jest przekazywanie ip jądra?

70

Widziałem na wielu blogach, używając tego polecenia, aby włączyć przekazywanie adresów IP podczas korzystania z wielu narzędzi bezpieczeństwa sieci / wąchania w systemie Linux

echo 1 > /proc/sys/net/ipv4/ip_forward

Czy ktoś może mi wyjaśnić laikiem, czym właściwie jest to polecenie? Czy zmienia Twój system w router?

Madhur Ahuja
źródło
1
plik python do włączania i wyłączania przekazywania portów gist.github.com/addminuse/7747903cd420b15f17e0

Odpowiedzi:

77

„Przekazywanie IP” jest synonimem „routingu”. Nazywa się to „przekazywaniem IP jądra”, ponieważ jest cechą jądra Linux.

Router ma wiele interfejsów sieciowych. Jeśli ruch przychodzi na jednym interfejsie, który pasuje do podsieci innego interfejsu sieciowego, router przesyła ten ruch do drugiego interfejsu sieciowego.

Powiedzmy, że masz dwie karty sieciowe, jedna (NIC 1) ma adres 192.168.2.1/24, a druga (NIC 2) to 192.168.3.1/24. Jeśli przekazywanie jest włączone, a na NIC 1 przychodzi pakiet z „adresem docelowym” 192.168.3.8, router ponownie wyśle ​​ten pakiet z NIC 2.

Routery działające jako bramy do Internetu często mają domyślną trasę, dzięki której wszelki ruch, który nie pasuje do żadnej karty sieciowej, przechodzi przez kartę sieciową trasy domyślnej. Tak więc w powyższym przykładzie, jeśli masz połączenie internetowe na NIC 2, ustaw NIC 2 jako domyślną trasę, a następnie ruch przychodzący z NIC 1, który nie jest przeznaczony na coś na 192.168.2.0/24, zostanie skierowany przez NIC 2. Mam nadzieję, że istnieją inne routery po NIC 2, które mogą dalej je trasować (w przypadku Internetu, następnym skokiem byłby router twojego dostawcy usług internetowych, a następnie ich dostawcy router nadrzędny itp.)

Włączenie ip_forwardinformuje system Linux, aby to zrobił. Aby miało to sens, potrzebne są dwa interfejsy sieciowe (dowolne 2 lub więcej przewodowych kart NIC, kart lub chipsetów Wi-Fi, łącza PPP przez modem 56k lub szeregowy itp.).

Podczas routingu bezpieczeństwo jest ważne i właśnie tam iptableswłącza się filtr pakietów Linuksa . Potrzebujesz więc iptableskonfiguracji zgodnej z Twoimi potrzebami.

Pamiętaj, że włączenie przekazywania z iptableswyłączonymi i / lub bez uwzględnienia zapory ogniowej i bezpieczeństwa może pozostawić cię podatnym na zagrożenia, jeśli jedna z kart sieciowych będzie miała dostęp do Internetu lub podsieci, nad którą nie masz kontroli.

LawrenceC
źródło
2
Racja, będziesz chciał zrobić NAT, jeśli NIC 2 jest prywatnym adresem IP. Linux może również obsługiwać NAT i iptablesjest to sposób na jego skonfigurowanie.
LawrenceC
Czy potrzebuje NAT dla danych przechodzących z NIC 2 do NIC 1?
GutenYe
2
Zazwyczaj NAT będzie działał od LAN do WAN, więc jeśli karta sieciowa 2 ma prywatny adres IP, a karta sieciowa 1 ma adres publiczny 1, potrzebujesz NAT; Konkretniej, interfejs internetowy wychodzący (NIC za 1 powyżej) potrzebuje MASQUERADEreguły w iptables„s POSTROUTINGna łańcuchu to zrobić. Zobacz revsys.com/writings/quicktips/nat.html i i.stack.imgur.com/rzz83.png .
LawrenceC
Krótko mówiąc, czy będzie słuszne, jeśli powiem, że włączenie przekazywania IP oznacza, że ​​maszyna może przekazać pakiet z jednej karty sieciowej do drugiej karty sieciowej? Czy byłoby również prawdą, jeśli powiem, że włączenie przekazywania IP nie jest tak naprawdę wymagane na maszynie z jednym adresem IP / NIC?
Sree
1
@ultrasawblade W przypadku włączonego przekazywania IP i połączenia internetowego na NIC 2, a także jako domyślnej trasy, jeśli odbierze pakiet przeznaczony dla 192.168.2.2 z NIC 1, co zrobi router?
Bobo
3

Po włączeniu „przekazywanie IP” pozwala maszynie z Linuksem odbierać przychodzące pakiety i przekazywać je dalej. Maszyna Linux działająca jako zwykły host nie musiałaby mieć włączonego przekazywania IP, ponieważ po prostu generuje i odbiera ruch IP dla własnych celów (tj. Celów swojego użytkownika).

Jednak zdarzają się przypadki, gdy przydatne jest przekazywanie IP: 1. Chcemy, aby nasza maszyna działała jak router, odbierając pakiety z innych hostów i kierując je do miejsca docelowego. 2. Jesteśmy złymi facetami i chcemy podszyć się pod inną maszynę w tak zwanym „ ataku człowieka w środku ”. W tym przypadku chcemy przechwycić i zobaczyć cały ruch kierowany do ofiary, ale chcemy również przekazać ten ruch do niej, aby nie „wyczuła” naszej obecności.

Andrea Araldo
źródło