Konfiguracja pokojowej sieci lokalnej na Raspberry Pi


(Wieloiksiasty) #1

Pomysł jest dość prosty. Raspberry Pi (debian) będzie odbierać sygnał WiFi i przekazywać internet dalej przez router, który stworzy kolejną sieć WiFi. Ważne jest, aby Raspberry był widoczny w sieci. W planach jest mały serwer Samba, sieciowa karta dźwiękowa i pobieraczka do torrentów.

Proszę o pomoc w konfiguracji całego sprzętu - nie mam bladego pojęcia jak się za to zabrać. Dzięki :smiley:

EDIT:

Mam na razie bardziej sprecyzowany problem. Raspberry jest podłączony do sieci WiFi (1), która ma dostęp do internetu, oraz do routera (2) w celu komunikacji przez ssh. Pingi działają po stronie routera z ssh (2) i po stronie sieci WiFi (1), ale nie odpowiada nic co jest poza routerem z internetem (1). Tzn. np. 192.168.0.105 odpowiada - to mój komputer - ale 8.8.8.8 już nie odpowiada. Myślę, że problemem może być to, że Debian stara się łączyć z internetem przez sieć (2) zamiast przez sieć (1). Macie pomysł jak to obejść?


(ssn) #2

Ciężko powiedzieć nie znając schematu połączeń. Prawdopodobnie zły wpis gatewaya w drugim routerze, ale to wróżenie z fusów.

Daj wynik polecenia route z debiana.


(Wieloiksiasty) #3

Oto prosty schemat połaczeń.

Polecenie route nie zwraca nic oprócz nagłówków, więc chyba tu jest problem.


(ssn) #4

Jeśli problem rzeczywiście jest taki jak mówisz to ustaw bramę domyślną w debianie na adres routera (czy co tam stoi), który rozgłasza sieć WiFi(1). Czyli pewnie ta sama brama co masz w swoim komputerze.

polecenie: route add default gw 123.456.789.012


(roobal) #5

Na Debianie masz włączone przekazywanie pakietów? Debian musi robić za router w tym przypadku, bo masz dwie sieci/podsieci. Pokaż wyniki poniższych poleceń z Debiana.

cat /proc/sys/net/ipv4/ip_forward

su -c "iptables -L"

su -c iptables-save

ifconfig -a

route -n

(Wieloiksiasty) #6

Polecenie route -n zwraca teraz:

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth0

192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0

192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

Ale nadal brak odpowiedzi z poza sieci WiFi (1) z Raspberry. EDIT: Wyniki pozostałych poleceń:

cat /proc/sys/net/ipv4/ip_forward

0

su -c "iptables -L"

Password: 

Chain INPUT (policy ACCEPT)

target prot opt source destination         


Chain FORWARD (policy ACCEPT)

target prot opt source destination         


Chain OUTPUT (policy ACCEPT)

target prot opt source destination

su -c iptables-save

Password: 

# Generated by iptables-save v1.4.14 on Tue Sep 18 15:09:14 2012

*filter

:INPUT ACCEPT [39]

:FORWARD ACCEPT [0]

:OUTPUT ACCEPT [24]

COMMIT

# Completed on Tue Sep 18 15:09:14 2012

ifconfig -a

eth0 Link encap:Ethernet HWaddr b8:27:eb:3b:13:20  

          inet addr:192.168.2.101 Bcast:192.168.2.255 Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

          RX packets:702 errors:0 dropped:0 overruns:0 frame:0

          TX packets:516 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:54628 (53.3 KiB) TX bytes:64539 (63.0 KiB)


lo Link encap:Local Loopback  

          inet addr:127.0.0.1 Mask:255.0.0.0

          UP LOOPBACK RUNNING MTU:16436 Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0 

          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)


wlan0 Link encap:Ethernet HWaddr 00:22:b0:64:c1:ad  

          inet addr:192.168.0.102 Bcast:192.168.0.255 Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

          RX packets:30 errors:0 dropped:0 overruns:0 frame:0

          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:4041 (3.9 KiB) TX bytes:1145 (1.1 KiB)

route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth0

192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0

192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

(roobal) #7

Aktywuj przekazywanie pakietów. Edytuj poniższy plik,

nano /etc/sysctl.conf

znajdź w nim taką linijkę

#net.ipv4.ip_forward=1

i ją odkomentuj, tzn. usuń tę kratkę na samym początku. Uruchom ponownie system i sprawdź czy masz łączność ze wszystkimi sieciami, jeśli nie, zajmiemy się konfiguracją zapory sieciowej.


(Wieloiksiasty) #8

OK, działa. Z raspberry wracają pingi ze wszystkich sieci i z internetu.

Teraz kolejny krok to przekazanie internetu z sieci 1 do sieci 2, jednak w taki sposób, aby raspberry był nadal widoczny w sieci. Tzn. zamiast komputera z ssh, do sieci 2 będą podłączone komputery, w których chciałbym mieć internet. Najlepiej z dynamicznymi IP (DHCP). Jak to zrobić?


(ssn) #9

Które urządzenie ma przydzielać adresy komputerom o których piszesz? Debian czy jakiś router/apek obsługujący sieć Wifi(2)?


(Wieloiksiasty) #10

W sumie to bez różnicy... Ważne, że debian ma tylko jedną katrę sieciową, a oprócz udostępniania internetu ma być z każdej strony dostępny przez ssh itd.

Jakie są za i przeciw? Dla mnie raczej obojętne, chociaż lepiej żeby sieć dalej działała gdyby Raspberry wysiadł.


(roobal) #11

Rozumiem, że w LAN2 nie masz wyjścia do internetu? Stwórz nowy plik,

su -c 'nano /etc/init.d/firewall'

i wklej do niego takie regułu dla IPTables

#!/bin/sh


# Poniższe reguły odpowiadają za czyszczenie starych reguł


iptables -F

iptables -X

iptables -t nat -X

iptables -t nat -F


# Polityka bezpieczeństwa, można ją zmienić na bokowanie ruchu sieciowego (zalecam)


iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -P OUTPUT ACCEPT


# Reguły pętli zwrotnej


iptables -A INPUT -i lo -j ACCEPT

iptables -A FORWARD -o lo -j ACCEPT


# Reguły odpowiadające za udostępnianie połączenia


iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

Reguły podałem w oparciu o adresację skonfigurowaną na Debianie. Teraz należy dodać skrypt z regułami do skryptów startowych, aby reguły były wczytywane podczas startu systemu.

su -c 'update-rc.d firewall defaults 90'

Żeby załadować nowe reguły bez ponownego uruchamiania systemu, wystarczy wykonać poniższe polecenie.

su -c '/etc/init.d/firewall start'

(Wieloiksiasty) #12

Sorki za nieobecność.

Tak w LAN 2 nie ma wyjścia do internetu. Do internetu podłączony jest tylko router wifi 1. Raspberry ma przekazywać internet.

Po wykonaniu poleceń, które podałeś, nadal nie ma internetu w sieci LAN 2. Może trzeba jeszcze skonfigurować router lub komputery, które mają łączyć się z internetem?


(roobal) #13

Tak musiałem chwilę rozwikłać ten twój schemat, żeby się w nim połapać i wynika z tego, że masz ustawioną złą trasę domyślną. Trasa domyślna powinna wychodzić przez 192.168.0.x, interfejsem wyjściowym w tym przypadku będzie wlan0, ewentualnie możesz ustalić trasę statyczną do tej sieci. Teraz wynika z tego, że to co komputer z LAN2 chce wysłać do internetu jest odsyłane z powrotem do sieci LAN2.

Na wszelki wypadek podaj dokładną adresację i jeśli możesz, wykonaj schemat sieci wraz z opisem lub jak masz ochotę, możesz zrobić taki schemat w programie Network Notepad lub innym :wink:


(Wieloiksiasty) #14

Naskrobałem takie coś: KLIK. Napisz czego brakuje to dopiszę.

Podkreślę jeszcze, że Raspberry dostaje odpowiedzi na pingi z obydwu sieci oraz z internetu.

Co rozumiesz przez:


(roobal) #15

No ten schemat to mówi już coś konkretnego :slight_smile: Czyli tak naprawdę masz 3 sieci (pomijam sieć WAN ISP) i 3 routery (nie za dużo trochę jak na tak małą sieć?), więc brakuje Ci jednej sieci. Moim zdaniem powinno to być zrobione tak:

  • [*:108m71pv] Router1

[*:108m71pv] Raspberry Pi

  • Wlan0 - 192.168.0.0/24

[*:108m71pv] Router2

- WAN - 192.168.1.0/24

Czyli tak to powinno wyglądać (nie zwracaj uwagi na kolory obrazujące diody, schemat robiłem akurat w symulatorze sieci).

image_id: 5213

Skonfiguruj na nowo Router2 i Debiana, następnie pokaż nową tablicę routingu. Ewentualnie, jeśli nie chcesz mieć tylu sieci, niech jedno z urządzeń robi za przełącznik. Jeśli chcesz mieć Debiana i LAN2 w jednej sieci, to Router2 powinien robić za przełącznik. Jeśli Router2 już robi za przełącznik, to w tablicy routingu Debiana musisz zmienić trasę domyślną o czym pisałem wcześniej, ale jeśli skonfigurujesz 3 sieci w taki sposób w jaki tu opisałem, Debian powinien być osiągalny z każdej sieci.

Chodziło mi o opisanie jakie urządzenia jakie mają adresy, ale nowy schemat mówi już wszystko :wink:


(Wieloiksiasty) #16

Dzięki za wskazówki! Poczytam jakieś tutki w internecie, spróbuję coś zrobić i napiszę jak postępy. Znasz jakieś dobre tutoriale na temat zarządzania siecią? To co znalazłem w googlach takie trochę niejasne.

3 routery to rzeczywiście trochę za dużo. Wszystko dlatego, że korzystam ze sprzętu, który leżał nieużywany. Po prostu sieć 1 nie działała w całym moim pokoju (brak zasięgu), a przy okazji na Rapsberry (który może chodzić 24 godziny na dobę) postawię sobie sambę, ściągarkę do torrentów itd.


(roobal) #17

Tutaj bardziej szczegółowo opisane, to co ja Ci napisałem http://dug.net.pl/tekst/31/udostepnieni ... 28masq%29/

Tutaj też jest ciekawy artykuł http://night.jogger.pl/2007/10/14/mala- ... tem-linux/

Dlatego Router2 może robić za przełącznik, Debian też mógłby być mostem, ale z routerem nie ma praktycznie żadnej zabawy i przy okazji masz serwer DHCP dla drugiej podsieci.