• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Forwardowanie Pakietów

Object Storage Arubacloud
0 głosów
459 wizyt
pytanie zadane 3 stycznia 2018 w Sieci komputerowe, internet przez Raba_Ababa Początkujący (390 p.)
otagowane ponownie 6 stycznia 2018 przez Raba_Ababa

Siemka,

Już opisuję sytuację i wyjaśniam do czego dążę.

Opis sytuacji: Otóż mam komputer stacjonarny(system Win7) podłączony bezprzewodowo do rutera1. Z routera1 podłączony jestem kablem do mojego laptopa(system linux) na interfejsie eth0. Z laptopa na interfejsie wlan1 podłączony jestem do routera2, który już ma dostęp do internetu.

Moim celem jest, aby komputer stacjonarny miał dostęp do internetu.

Z tego co się orientuję i sam się domyślam należałoby przekierować ruch pakietów na laptopie z eth0 na wlan1 za pomocą ip_tables i ustawić forwardowanie pakietów poleceniem 'sudo sysctl -w net.ipv4.ip_forward=1'. No ale co z routerem1? Czy wystarczy, że laptop jest podłączony kablem do routera1 i bezprzewodowo do komputera stacjonarnego, żeby ruch był przekierowany z komputera na interfejs eth0 laptopa? W sumie na internecie jest trochę na ten temat, ale nie mam efektu ostatecznego.

Jak to wygląda z punktu widzenia komputera stacjonarnego:

komputer stacjonarny(bezprzewodowo) <--> router1<--> (eth0)laptop(wlan1) <-->router2 ->internet

Bardzo byłbym wdzięczny, jeżeli ktoś poświęci swój czas, aby rozwiązać te moje wyzwanie. :) Z góry dzięki wielkie !!

1 odpowiedź

+1 głos
odpowiedź 3 stycznia 2018 przez Ehlert Ekspert (212,670 p.)
Z tego co zrozumiałem laptop ma pełnić funkcję routera. No bo taki repeater i firewallem to de facto router. Proste pytanie po co.

Rozumiem że wyszła na jaw luka Intela, ale 3 routery Cię nie uratują.

Dość śmieszków. Żeby było to możliwe Twój laptop musi posiadać dwa interfejsy sieciowe. Szczerze mówiąc nie wiem, czy mając dostęp do WiFi i gniazdo ten warunek jest zawsze spełniony. Druga sprawa to kabel od lapka do routera1 musi być dobrze podłączony. Tak aby połączenia nie były w tej samej podsieci. Po tym sprawa jest prosta.

https://serverfault.com/questions/453254/routing-between-two-networks-on-linux
komentarz 3 stycznia 2018 przez Raba_Ababa Początkujący (390 p.)

Dzięki wielkie za szybką odpowiedź, niemniej jednak nadal nie mam pożądanego efektu mimo bardzo ciekawego linku jaki podałeś. Określę może jeszcze raz jak to wygląda w chwili obecnej wraz z adresami i iptables. Dodam, że laptop pinguje się z komputerem stacjonarnym, ale nie ma dostępu do internetu :)

komputer stacjonarny(bezprzewodowo) <--> router1<--> (eth0)laptop(wlan1) <-->router2 ->internet

komputer stacjonarny ip: 192.168.0.101/24

router1 ip: 192.168.0.1/24

laptop eth0: 192.168.0.102/24

laptop wlan1: 192.168.1.1/24

router2: 192.168.1.254/24

No i postępowałem zgodnie z poradnikiem w linku, który mi podałeś zmieniając  w skrypcie eth1 na wlan1, tak aby pasowało do mojej sytuacji.

Zastanawiam się co sądzić o tablicy routingu. Podam rezultat polecenia 'route -n':

Kernel IP routing table
Destination     Gateway         Genmask       Flags Metric Ref    Use   Iface
0.0.0.0         192.168.0.1        0.0.0.0              UG    100    0        0     eth0
0.0.0.0         192.168.1.254     0.0.0.0             UG    600    0        0     wlan1
192.168.0.0     0.0.0.0          255.255.255.0     U     100    0         0     eth0
192.168.1.0     0.0.0.0         255.255.255.0      U      600    0        0    wlan1

Czy to dobrze, że w moim przypadku bramą interfejsu eth0 jest router1(192.168.0.1)? :)

1
komentarz 4 stycznia 2018 przez rifster Początkujący (320 p.)
Bramą dla komputera powinien być laptop eth0 (192.168.0.102), a dla laptopa router2 (192.168.1.254). Usuń z laptopa pierwszą trasę lub ustaw dla trasy 2 niższą metrykę niż 100.

Dodatkowo musisz dodać statyczną trasę do sieci 192.168.0.0/24 na routerze 2 dla ruchu powrotnego. Nexthop dla tej trasy lub gateway to laptop wlan1.

Moze być też problem z NATowanien na routerze 2 jeśli wpadnie pakiet z sieci 192.168.0.0/24, która nie jest do niego bezpośrednio podłączona.
komentarz 5 stycznia 2018 przez Raba_Ababa Początkujący (390 p.)
Ciągle kombinuje nad tym problemem, ale nie mam rezultatu. Mam takie pytanie, czy wiesz może czemu jak mam laptopa podpiętego JEDNOCZEŚNIE na eth0 do rotera1, który nie ma dostępu do internetu i przez wlan1 do routera2, który ma dostęp do internetu to mój laptop nie ma dostępu do internetu. Dopiero jak rozłącze się przez kabel, zostawie sam wlan1 to mam internet. Czy problem może tkwić w tym, żeby przekierować ruch z eth0 na wlan1? Na internecie są poradniki coś tam widział, stosowałem się do nich, ale też nic. Korzystałem m.in z https://gist.github.com/tzermias/5408466. Byłbym wdzięczny za jakiekolwiek sugestie.

Dodam jeszcze, że jak postawiłem na laptopie serwer apache i wpisałem na stacjonarnym  adres: 192.168.0.102 to miałem dostęp do strony startowej z serwera postawionego na laptopie.
1
komentarz 5 stycznia 2018 przez rifster Początkujący (320 p.)
edycja 5 stycznia 2018 przez rifster
Po pierwsze pamiętaj, że getwayem dla PC powinien być laptop eth0 192.168.0.102, a nie router1 192.168.0.1.

Rzuć okiem na tablicę routingu, gdy laptop jest podłączony jednocześnie przez wlan1 i eth0. Zakładam, że wygląda podobnie jak w Twoim drugim poście. Masz 2 wpisy dla trasy domyślnej (0.0.0.0):

Destination     Gateway         Genmask       Flags Metric Ref    Use   Iface
0.0.0.0         192.168.0.1        0.0.0.0              UG    100    0        0     eth0
0.0.0.0         192.168.1.254     0.0.0.0             UG    600    0        0     wlan1

Następnie zwróć uwagę na Metric. Preferowana jest niższa wartość. Zatem w Twoim przypadku trasa eth0, czyli w stronę stacjonarnego komputera. Masz 2 opcje:

1. Spróbuj usunąć trasę przez eth0 (nie pamiętam komend z głowy ale to powinno być coś w stylu "sudo route del default gw 192.168.0.1"). PREFEROWANA OPCJA!

2. Możesz manipulować metrykami. Dla trasy 1 ustawić wartość większą od 600 lub dla trasy 2 mniejszą od 100. Znowu, nie pamiętam tych komend ale wyglądają podobnie do "route add default dev wlan1 metric 20".

Dla porównania rzuć okiem na tablice routingu przy laptopie podłączonym tylko przez wlan1.

Co do Apache'a. PC (stacjonarny) = 192.168.0.101/24, laptop eth0 = 192.168.0.102/24. Gdy na PC wpiszesz w przeglądarce adres serwera z laptopa PC sprawdzi tablicę routingu. Zobaczy, że pakiet trzeba wypchnąć przez interfejs eth0, na którym ma skonfigurowaną taką samą podsieć. Jako źródłowy adres IP ustawi domyślnie to co ma na interfejsie, czyli 192.168.0.101. Gdy laptop odbierze pakiet (skierowany do niego, bo zobaczy, że adres docelowy to 192.168.0.102) to skieruje odpowiedź do PCta. Zadziała ta sama zasada, sprawdzi routing i wypchnie pakiet zgodnie ze stanem faktycznym (jako swoje źródło ustawi domyślnie 192.168.0.102).

Ogólnie możesz sprawdzić czy laptop routuje pakiet z PCta do routera 2. Możesz użyć tcpdump i oglądać przelatujące na interfejsach pakiety (https://danielmiessler.com/study/tcpdump/). Włącz tcpdumpa na laptopie na eth0 i na wlan1, następnie puść pinga z PCta na 8.8.8.8 (wtedy użyje trasy domyślnej 0.0.0.0 i wypchnie pakiet do swojego gatewaya, którym powinien być laptop eth0). W tym momencie powinieneś zobaczyć ten pakiet na tcpdumpie na laptopie na eth0. Jeśli routing na laptopie jest ok to wypchnie ten pakiet do swojego gatewaya, którym jest router2 przez wlan1. Jeśli zobaczysz na tcpdumpie, że ten pakiet wychodzi przez wlan1 to znaczy, że routing na laptopie zadziałał jak należy. Zamiast tcpdumpa możesz użyć Wiresharka jeśli chcesz mieć GUI.

Napisz jeszcze co to za marka ten router 1 i router 2.
1
komentarz 5 stycznia 2018 przez rifster Początkujący (320 p.)
edycja 5 stycznia 2018 przez rifster

Możesz spróbować jeszcze jedną opcję.

komputer stacjonarny(bezprzewodowo) <--> router1 (WAN) <--> (eth0)laptop(wlan1) <--> router2 <--> internet

Na routerze 1 przepnij kabel idący do laptopa do portu WAN. Jeśli masz możliwość ustaw IP ręcznie jakimś adresem z podsieci 192.168.1.0/24. Jeśli nie możesz tego zrobić ręcznie to możliwe chyba byłyby 2 opcje.

1. Zainstalować na lapku jakiś serwer DHCP, żeby przypisał IP do portu WAN routera1.

2. Zrobić bridge'a na laptopie pomiędzy portami eth0 i wlan1, żeby przepuszczały pakiety DHCP generowane przez serwer skonfigurowany na router2. Na laptopowym bridge'u też możesz przypisać IP z sieci 192.168.1.0/24 (dzięki temu będziesz mógł osiągać strony na Apachu). https://www.cyberciti.biz/faq/how-to-create-bridge-interface-ubuntu-linux/

Ja bym najpierw spróbował opcję 2.

Minusem przepięcia kabla do portu WAN jest podwójny NAT. Na routerze 1 adresy z sieci 192.168.0.0/24 będą tłumaczone na 192.168.1.0/24 (i vice versa). Natomiast na routerze 2 adresy 192.168.1.0/24 będą tłumaczone na jakiś publiczny adres Twojego dostawcy Internetu.

Plusem natomiast, że nie będziesz musiał ustawiać routingu do 192.168.0.0/24 na routerze2.

1
komentarz 5 stycznia 2018 przez rifster Początkujący (320 p.)
Tak jeszcze myślę, że jakbyś zrobił bridga na laptopie i zostawił kabel w routerze1 w normalnym porcie (nie WAN) to DHCP z router2 też powinien dolecieć do PCta. Router1 musiałby pracować jako repeater lub mieć włączone przekazywanie DHCP (DHCP relay lub coś w tym stylu). Trzeba by też wyłączyć na nim serwer DHCP, żeby się nie gryzło z routerem2.
komentarz 6 stycznia 2018 przez Raba_Ababa Początkujący (390 p.)
edycja 6 stycznia 2018 przez Raba_Ababa

Odpowiadając na twoje pytanie:

router1 - tp-link TL-WR841N

router2 to tak naprawdę modem w chwili obecnej(HUAWEI E5577Cs-321), wsześniej używałem - (PIRELLI DRG A125G),  szczerzę mówiąc nie widzę za dużej różnicy między roterem a modemem. :)

Udało się !!! Jestem taki szczęśliwy i tak bardzo zmotywowany. Dzięki Tobie kolego. Nie sądziłem, że ktoś się aż tak zaangażuje w pomoc. Liczyłem bardziej na krótką podpowiedź, że będę musiał sam się z tym męczyć, a tu proszę tyle pomysłów. Przyznam się szczerze, że jeszcze dwóch ostatnich postów do końca nie przeczytałem, bo bardziej skupiłem się na na tym co wcześniej pisałeś. Otóż mam pożądany efekt. Opiszę co zrobiłem pokolei (zgodnie z tym co mi radziłeś), żeby komuś to  też pomogło.

!PC stacjonarny jak i laptop są na systemach Linux!

Otóż podpięcie interfejsów wygląda następująco:

PC stacjonarny(wlan0) <--> router1<--> (eth0)laptop(wlan0) <-->modem(router2) ->internet

PC stacjonarny ip: 192.168.0.103/24

router1 ip: 192.168.0.1/24

laptop eth0: 192.168.0.102/24

laptop wlan0: 192.168.1.21/24

modem(router2): 192.168.1.1/24

Następnie usunąłem bramę PC router1(192.168.0.1) poleceniem ' sudo route del -net 0.0.0.0 gw 192.168.0.1' i ustawiłem na eth0 laptopa 'sudo add default gw 192.168.0.102 wlan0'.

Nie wspominaliśmy nic o DNS'ach, ale na PC stacjonarnym dodałem w pliku /etc/resolv.conf wpis 'nameserver 192.168.1.1' oraz 'nameserver 8.8.8.8'.

Później zająłem się metryką tak jak poleciłeś i pomogło! 'route -n'

TEN WPIS

Destination     Gateway         Genmask       Flags Metric Ref    Use   Iface
0.0.0.0         192.168.0.1        0.0.0.0              UG    100    0        0     eth0
0.0.0.0         192.168.1.254     0.0.0.0             UG    600    0        0     wlan0

ZAMIENIŁEM NA

Destination     Gateway         Genmask         Flags    Metric Ref    Use  Iface
0.0.0.0         192.168.1.1     0.0.0.0                  UG        50         0     0    wlan0
0.0.0.0         192.168.0.1     0.0.0.0                 UG       100         0      0     eth0
192.168.0.0     0.0.0.0         255.255.255.0       U         100        0      0     eth0
192.168.1.0     0.0.0.0         255.255.255.0        U        600       0       0    wlan0

Metrykę wlan0 zmieniłem tak, aby była mniejsza od eth0.  Ustawiłem poleceniami:

1.Usunąłem starą 'sudo route del -net default gw 192.168.1.1 netmask 0.0.0.0 dev wlan0 metric 600'

2. Ustawiłem nową 'sudo route add -net default gw 192.168.1.1 netmask 0.0.0.0 dev wlan0 metric 50'

I ostatni i BARDZO WAŻNY krok to iptables (firewall). Oto skrypt dzięki któremu mam internet na PC.
 

#!/bin/sh

# włączenie forwardowania pakietów:
echo 1 > /proc/sys/net/ipv4/ip_forward
# czyścimy tablice iptables odpowiedzialne za nat i za filtrowanie pakietów:
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter

# Domyślnie odrzucamy i nie zezwalany na forwardowanie pakietów
iptables -t filter -P FORWARD DROP

# Zezwalamy na to by serwer przepuszczał pakiety które pochodzą z naszej sieci
# lokalnej lub są dla niej przeznaczone.

iptables -t filter -A FORWARD -s 192.168.0.0/255.255.0.0 -d 0/0 -j ACCEPT
iptables -t filter -A FORWARD -s 0/0 -d 192.168.0.0/255.255.0.0 -j ACCEPT

# Teraz nakazujemy by wszystkie pakiety pochodzące z lanu były maskowane

iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -d 0/0 -j MASQUERADE

No i w sumie to wszystko. Dzięki wielkie za poświęcenie swojego czasu na pomoc. Bardzo mi miło, że znalazł się ktoś, kto chciał mi pomoc :). Niedługo przeczytam ze zrozumieniem te 2 ostatnio dodane przez Ciebie wpisy. :)

komentarz 6 stycznia 2018 przez rifster Początkujący (320 p.)
Cieszę się, że moje rady na coś się przydały. :) Osobiście uważam, że dzięki takim zabawom jakie właśnie wyprawiasz człowiek się najwięcej uczy.

Podobne pytania

0 głosów
2 odpowiedzi 415 wizyt
pytanie zadane 3 stycznia 2020 w Sieci komputerowe, internet przez zkkf56 Dyskutant (8,710 p.)
+1 głos
1 odpowiedź 257 wizyt
0 głosów
3 odpowiedzi 2,753 wizyt

92,565 zapytań

141,417 odpowiedzi

319,602 komentarzy

61,950 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...