{"id":657,"date":"2020-07-25T19:19:00","date_gmt":"2020-07-25T19:19:00","guid":{"rendered":"https:\/\/www.linuxsystems.ovh\/?p=657"},"modified":"2020-07-25T19:23:49","modified_gmt":"2020-07-25T19:23:49","slug":"raspberry-pi-jako-ap-client-czyli-jak-za-pomoca-raspberry-pi-udostepnic-internet-z-wi-fi-po-kablu","status":"publish","type":"post","link":"https:\/\/www.linuxsystems.ovh\/?p=657","title":{"rendered":"Raspberry Pi jako AP Client &#8211; Czyli&#8230; Jak za pomoc\u0105 Raspberry Pi udost\u0119pni\u0107 internet z Wi-Fi po kablu"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Zapewne du\u017cej cz\u0119\u015bci os\u00f3b, kt\u00f3re zajmuj\u0105 si\u0119 informatyk\u0105, zdarzy\u0142o si\u0119, \u017ce podczas np.: instalacji, reinstalacji systemu, trzeba by\u0142o wgra\u0107 sterowniki\/soft od karty Wi-Fi. Jednak, aby to zrobi\u0107 trzeba by\u0142o go pobra\u0107 z internetu, a nie mamy przy sobie kabla lub sprz\u0119t jest bardzo daleko od naszego routera.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Co mo\u017cna zrobi\u0107 w takim przypadku?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A gdyby tak&#8230; Po\u0142\u0105czy\u0107 si\u0119 z Wi-Fi za pomoc\u0105 Raspberry i udost\u0119pni\u0107 ten internet z Wi-Fi po kablu?<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">No w\u0142a\u015bnie tym zagadnieniem dzisiaj si\u0119 zajmiemy, a mianowicie udost\u0119pnienie internetu z Wi-Fi, przez Raspberry Pi po kablu do np. innego komputera<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Potrzebujemy do tego:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Troch\u0119 kabla RJ45 (sieciowy)<\/li><li>Raspberry Pi (mo\u017ce by\u0107 nawet wersja 1)<\/li><li>Karta Wi-Fi kompatybilna z Raspberry Pi<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">aby by\u0142o nam wygodniej (i trudniej podczas konfiguracji raspberry pi jednocze\u015bnie) uruchomimy sobie na raspberry Pi serwer DHCP, co pozwoli nam, \u017ce karta SD z tym systemem mo\u017ce sobie le\u017ce\u0107, a gdy tylko b\u0119dzie taka potrzeba, to wsadzi\u0107 do raspberry Pi i od razu z automatu komputer pobiera nam adres IP\/mask\u0119 itp. (nie musimy wtedy pami\u0119ta\u0107 jakie IP to by\u0142o, ani nic)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zaczynamy!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zaczynamy od tego, aby raspberry pi mia\u0142 po\u0142\u0105czenie z Wifi, z tym zagadnieniem, akurat przenosz\u0119 was <a href=\"https:\/\/www.linuxsystems.ovh\/problem-z-rozlaczaniem-sie-wi-fi-przez-raspberry\/\">do innego artyku\u0142u na stronie: https:\/\/www.linuxsystems.ovh\/problem-z-rozlaczaniem-sie-wi-fi-przez-raspberry\/<\/a>, w kt\u00f3rym to ju\u017c opisa\u0142em \ud83d\ude42<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ustawiamy adres IP (spoza naszej sieci) do interfejsu LAN. W moim przypadku sie\u0107 Wi-Fi ma adresacj\u0119 192.168.115.0\/24 dlatego dla sieci LAN dla komputera za raspberry ustawi\u0119 192.168.9.1\/24:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ ip a a 192.168.9.1\/24 dev eth0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Chocia\u017c lepiej jest to zrobi\u0107 poprzez zmian\u0119 w pliku \/etc\/dhcpd.conf , aby by\u0142y one nawet po restarcie raspberry i dopisa\u0107 tam:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>interface eth0\nstatic ip_address=192.168.9.1\/24\nstatic routers=192.168.9.1\nstatic domain_name_servers=1.1.1.1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Teraz przechodzimy do instalacji i konfiguracji serwera dhcp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo apt update\n$ sudo apt install isc-dhcp-server\nCzytanie list pakiet\u00f3w... Gotowe\nBudowanie drzewa zale\u017cno\u015bci       \nOdczyt informacji o stanie... Gotowe\nNast\u0119puj\u0105ce pakiety zosta\u0142y zainstalowane automatycznie i nie s\u0105 ju\u017c wi\u0119cej wymagane:\n  libmicrodns0 rpi-eeprom-images\nAby je usun\u0105\u0107 nale\u017cy u\u017cy\u0107 \"sudo apt autoremove\".\nThe following additional packages will be installed:\n  libirs-export161 libisccfg-export163 policycoreutils selinux-utils\nSugerowane pakiety:\n  isc-dhcp-server-ldap\nZostan\u0105 zainstalowane nast\u0119puj\u0105ce NOWE pakiety:\n  isc-dhcp-server libirs-export161 libisccfg-export163 policycoreutils\n  selinux-utils\n0 aktualizowanych, 5 nowo instalowanych, 0 usuwanych i 0 nieaktualizowanych.\nKonieczne pobranie 488 kB\/1\u202f506 kB archiw\u00f3w.\nPo tej operacji zostanie dodatkowo u\u017cyte 6\u202f093 kB miejsca na dysku.\nKontynuowa\u0107? &#91;T\/n] y\nPobieranie:1 http:\/\/ftp.icm.edu.pl\/pub\/Linux\/distributions\/raspbian\/raspbian buster\/main armhf libisccfg-export163 armhf 1:9.11.5.P4+dfsg-5.1+deb10u1 &#91;254 kB]\nPobieranie:2 http:\/\/ftp.icm.edu.pl\/pub\/Linux\/distributions\/raspbian\/raspbian buster\/main armhf libirs-export161 armhf 1:9.11.5.P4+dfsg-5.1+deb10u1 &#91;234 kB]\nPobrano 488 kB w 1s (334 kB\/s)        \nPrekonfiguracja pakiet\u00f3w ...\nWybieranie wcze\u015bniej niewybranego pakietu libisccfg-export163.\n(Odczytywanie bazy danych ... 155524 pliki i katalogi obecnie zainstalowane.)\nPrzygotowywanie do rozpakowania pakietu ...\/libisccfg-export163_1%3a9.11.5.P4+dfsg-5.1+deb10u1_armhf.deb ...\nRozpakowywanie pakietu libisccfg-export163 (1:9.11.5.P4+dfsg-5.1+deb10u1) ...\nWybieranie wcze\u015bniej niewybranego pakietu libirs-export161.\nPrzygotowywanie do rozpakowania pakietu ...\/libirs-export161_1%3a9.11.5.P4+dfsg-5.1+deb10u1_armhf.deb ...\nRozpakowywanie pakietu libirs-export161 (1:9.11.5.P4+dfsg-5.1+deb10u1) ...\nWybieranie wcze\u015bniej niewybranego pakietu isc-dhcp-server.\nPrzygotowywanie do rozpakowania pakietu ...\/isc-dhcp-server_4.4.1-2_armhf.deb ...\nRozpakowywanie pakietu isc-dhcp-server (4.4.1-2) ...\nWybieranie wcze\u015bniej niewybranego pakietu selinux-utils.\nPrzygotowywanie do rozpakowania pakietu ...\/selinux-utils_2.8-1+b1_armhf.deb ...\nRozpakowywanie pakietu selinux-utils (2.8-1+b1) ...\nWybieranie wcze\u015bniej niewybranego pakietu policycoreutils.\nPrzygotowywanie do rozpakowania pakietu ...\/policycoreutils_2.8-1_armhf.deb ...\nRozpakowywanie pakietu policycoreutils (2.8-1) ...\nKonfigurowanie pakietu selinux-utils (2.8-1+b1) ...\nKonfigurowanie pakietu policycoreutils (2.8-1) ...\nselinux-autorelabel-mark.service is a disabled or a static unit, not starting it.\nKonfigurowanie pakietu libisccfg-export163 (1:9.11.5.P4+dfsg-5.1+deb10u1) ...\nKonfigurowanie pakietu libirs-export161 (1:9.11.5.P4+dfsg-5.1+deb10u1) ...\nKonfigurowanie pakietu isc-dhcp-server (4.4.1-2) ...\nGenerating \/etc\/default\/isc-dhcp-server...\nJob for isc-dhcp-server.service failed because the control process exited with error code.\nSee \"systemctl status isc-dhcp-server.service\" and \"journalctl -xe\" for details.\ninvoke-rc.d: initscript isc-dhcp-server, action \"start\" failed.\n\u25cf isc-dhcp-server.service - LSB: DHCP server\n   Loaded: loaded (\/etc\/init.d\/isc-dhcp-server; generated)\n   Active: failed (Result: exit-code) since Thu 2020-07-23 21:09:01 CEST; 194ms ago\n     Docs: man:systemd-sysv-generator(8)\n  Process: 1033 ExecStart=\/etc\/init.d\/isc-dhcp-server start (code=exited, status=1\/FAILURE)\n\nlip 23 21:08:59 raspberrypi dhcpd&#91;1046]: bugs on either our web page at www.isc.org or in the README file\nlip 23 21:08:59 raspberrypi dhcpd&#91;1046]: before submitting a bug.  These pages explain the proper\nlip 23 21:08:59 raspberrypi dhcpd&#91;1046]: process and the information we find helpful for debugging.\nlip 23 21:08:59 raspberrypi dhcpd&#91;1046]: \nlip 23 21:08:59 raspberrypi dhcpd&#91;1046]: exiting.\nlip 23 21:09:01 raspberrypi isc-dhcp-server&#91;1033]: Starting ISC DHCPv4 server: dhcpdcheck syslog for diagnostics. ... failed!\nlip 23 21:09:01 raspberrypi isc-dhcp-server&#91;1033]:  failed!\nlip 23 21:09:01 raspberrypi systemd&#91;1]: isc-dhcp-server.service: Control process exited, code=exited, status=1\/FAILURE\nlip 23 21:09:01 raspberrypi systemd&#91;1]: isc-dhcp-server.service: Failed with result 'exit-code'.\nlip 23 21:09:01 raspberrypi systemd&#91;1]: Failed to start LSB: DHCP server.\nPrzetwarzanie wyzwalaczy pakietu man-db (2.8.5-2)...\nPrzetwarzanie wyzwalaczy pakietu libc-bin (2.28-10+rpi1)...\nPrzetwarzanie wyzwalaczy pakietu systemd (241-7~deb10u4+rpi1)...\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Podczas instalacji serwer DHCP nam zwr\u00f3ci\u0142 b\u0142\u0105d, ale jest to &#8222;poprawne zachowanie&#8221;, poniewa\u017c jeszcze go nie skonfigurowali\u015bmy&#8230; Co b\u0119dziemy robili teraz, wi\u0119c konfigurujemy i uruchamiamy serwer DHCP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Najpierw zmieniamy aby nas\u0142uchiwa\u0142 tylko na IPv4, oraz na interfejsie eth0. Robimy to w pliku:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/etc\/default\/isc-dhcp-server<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">I zmieniamy dwie ostatnie linijki ( ostatni\u0105 linijk\u0119 komentujemy &#8222;#&#8221;, a w przedostatniej dopisujemy eth0):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INTERFACESv4=\"eth0\"\n#INTERFACESv6=\"\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Przechodzimy do edycji pliku: \/etc\/dhcp\/dhcpd.conf i na samym ko\u0144cu dodajemy tam takie linijki:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>subnet 192.168.9.0 netmask 255.255.255.0 {\n  range 192.168.9.10 192.168.9.20;\n  option domain-name-servers 1.1.1.1;\n  option routers 192.168.9.1;\n  option broadcast-address 192.168.9.255;\n  default-lease-time 600;\n  max-lease-time 7200;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Musimy tak\u017ce zedytowa\u0107 plik konfiguracyjny systemd dotycz\u0105cy isc-dhcp-server, aby uruchamia\u0142 si\u0119 po us\u0142udze dhcpcd, aby to zrobi\u0107 tworzymy plik (jakimkolwiek edytorem &#8211; ja u\u017cywam vim) w:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo vim \/etc\/systemd\/system\/isc-dhcp-server.service <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">i wklejamy tam:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Automatically generated by systemd-sysv-generator\n\n&#91;Unit]\nDocumentation=man:systemd-sysv-generator(8)\nSourcePath=\/etc\/init.d\/isc-dhcp-server\nDescription=LSB: DHCP server\nBefore=multi-user.target\nBefore=multi-user.target\n#Before=multi-user.target\nBefore=graphical.target\nAfter=remote-fs.target\nAfter=network-online.target\nAfter=slapd.service\nAfter=nss-lookup.target\nAfter=dhcpcd.service\nWants=network-online.target\n\n&#91;Service]\nType=forking\nRestart=no\nTimeoutSec=5min\nIgnoreSIGPIPE=no\nKillMode=process\nGuessMainPID=no\nRemainAfterExit=yes\nSuccessExitStatus=5 6\nExecStart=\/etc\/init.d\/isc-dhcp-server start\nExecStop=\/etc\/init.d\/isc-dhcp-server stop\n\n&#91;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Teraz wydajemy komend\u0119 dotycz\u0105c\u0105 autostartu dla tej us\u0142ugi poprzez komend\u0119 systemctl enable:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo systemctl enable isc-dhcp-server\nSynchronizing state of isc-dhcp-server.service with SysV service script with \/lib\/systemd\/systemd-sysv-install.\nExecuting: \/lib\/systemd\/systemd-sysv-install enable isc-dhcp-server\nCreated symlink \/etc\/systemd\/system\/multi-user.target.wants\/isc-dhcp-server.service \u2192 \/etc\/systemd\/system\/isc-dhcp-server.service.\n$ <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Zosta\u0142a nam jeszcze tylko konfiguracja firewalla (zapor\u0119 sieciow\u0105), aby dopu\u015bci\u0107 i maskowa\u0107 ruch z eth0 na wlan0: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Robimy tak, aby firewall z automatu dodawa\u0142 t\u0105 linijk\u0119 podczas uruchamiania systemu (u\u017cyjemy do tego systemd).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wi\u0119c stworzymy now\u0105 us\u0142ug\u0119 o nazwie customfirewall:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo vim \/etc\/systemd\/system\/customfirewall.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">wpisujemy tam:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nAfter=networking.service\n\n&#91;Service]\nExecStart=\/usr\/local\/bin\/customfirewall.sh\n\n&#91;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tworzymy plik:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo vim \/usr\/local\/bin\/customfirewall.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">wpisujemy do niego:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n\nPATH=$PATH:\/sbin\n\niptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nadajemy uprawnienia do wykonywania:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo chmod 755 \/usr\/local\/bin\/customfirewall.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">prze\u0142adowywujemy systemd i dajemy do autostartu customfirewall:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo systemctl daemon-reload\n$ sudo systemctl enable customfirewall<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Uruchamiamy ponownie raspberry w celu sprawdzenia czy wszystko wstanie poprawnie:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo reboot<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">pod\u0142\u0105czymy testowy komputer, kt\u00f3ry nie ma dost\u0119pu do internetu po Wi-Fi, po\u0142\u0105czymy go po kablu i sprawd\u017amy czy komputer ma dost\u0119p do internetu.<\/p>\n\n\n\n<p style=\"font-size:18px\" class=\"has-text-color has-background has-text-align-center has-very-light-gray-color has-vivid-red-background-color wp-block-paragraph\"><strong>UWAGA! Najlepiej najpierw pod\u0142\u0105czy\u0107 komputer, a p\u00f3\u017aniej dopiero uruchomi\u0107 raspberry. Chodzi o to, aby podczas uruchamiania si\u0119 us\u0142ug (w szczeg\u00f3lno\u015bci isc-dhcp-server) port eth0 by\u0142 up i dosta\u0142 IP, w innych przypadkach mog\u0105 wyst\u0119powa\u0107 problemy z uruchomieniem si\u0119 tej us\u0142ugi.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jak wida\u0107 dosta\u0142 IP z klasy DHCP:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/bucket.linuxsystems.ovh\/Raspberry-APClient\/ip.png\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I tak\u017ce ruch leci przez raspberry Pi do globalnego IP i dzia\u0142a:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/bucket.linuxsystems.ovh\/Raspberry-APClient\/mtr.png\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Jak widzimy dost\u0119p jest, a wi\u0119c mo\u017cemy mie\u0107 tak\u0105 awaryjn\u0105 kart\u0119 Wi-Fi w swoim domu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mam nadzieje, \u017ce artyku\u0142 si\u0119 przyda\u0142 i zapraszam do jego komentowania<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zapewne du\u017cej cz\u0119\u015bci os\u00f3b, kt\u00f3re zajmuj\u0105 si\u0119 informatyk\u0105, zdarzy\u0142o si\u0119, \u017ce podczas np.: instalacji, reinstalacji systemu, trzeba by\u0142o wgra\u0107 sterowniki\/soft od karty Wi-Fi. Jednak, aby to zrobi\u0107 trzeba by\u0142o go pobra\u0107 z internetu, a nie mamy przy sobie kabla lub sprz\u0119t jest bardzo daleko od naszego routera. Co mo\u017cna zrobi\u0107 w takim przypadku? A gdyby &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.linuxsystems.ovh\/?p=657\" class=\"more-link\">Czytaj dalej<span class=\"screen-reader-text\"> \u201eRaspberry Pi jako AP Client &#8211; Czyli&#8230; Jak za pomoc\u0105 Raspberry Pi udost\u0119pni\u0107 internet z Wi-Fi po kablu\u201d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[33],"tags":[],"class_list":["post-657","post","type-post","status-publish","format-standard","hentry","category-raspberry-pi"],"_links":{"self":[{"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=\/wp\/v2\/posts\/657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=657"}],"version-history":[{"count":22,"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=\/wp\/v2\/posts\/657\/revisions"}],"predecessor-version":[{"id":680,"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=\/wp\/v2\/posts\/657\/revisions\/680"}],"wp:attachment":[{"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}