Monitoring z terminala Dell D10D: część III: Internet via USB, LAN z Internetem, AP i dostęp zdalny
W poprzedniej części ustawiłem lokalny LAN dla kamerek, podłączyłem kartę WiFi, a także skonfigurowałem ZoneMindera do celów przechowywania nagrań z jednej kamery. Teraz pora na ostatnie kroki, czyli ustawienie dostępu do Internetu z modemu USB (w tym wypadku stary Huawei E3131-s2), Internet via LAN, tryb Access Pointa oraz setup dostępu zdalnego.
Tak, wiem, trochę nie było aktualizacji treści. Niestety sezon chorobowy dał się ostro we znaki. A zatem, standardowe ostrzeżenie: Wszelkie prace wykonujesz na własną odpowiedzialność. Nie odpowiadam za utratę danych, uszkodzenia sprzętu i zdrowia.
Teraz jedziemy z tematem.
Modem USB
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 enp4s0 ether routable configured
3 wlan0 wlan routable configured
4 wwx582c80139263 wwan off unmanaged- modemmanager
- libmm-glib0
- libmbim-proxy
- libqmi-glib5
- libqmi-proxy
Konfiguracja networkd
[Match]
Name=wwx582c80139263
# wstaw tutaj swoją nazwę urządzenia sieciowego
[Network]
DHCP=ipv4
#dns google
DNS=8.8.8.8Skrypty do startu i wyłączenia modemu
/usr/local/bin/modem-connect#!/bin/sh
# jeśli potrzebujesz pin, to dodaj po apn: ,pin=1234
mmcli -m 0 --simple-connect="apn=internet" && \
ip link set wwx582c80139263 up
return $?/usr/local/bin/modem-disconnect#!/bin/sh
ip link set wwx582c80139263 down
mmcli -m 0 --simple-disconnectSkrypty zostały nieco zmodyfikowane aby można było je użyć z systemd. Chodzi o to, że jeśli polecenie się nie powiedzie, to do systemu zostanie zwrócony status FAILURE i systemd ponowi uruchomienie po kilku sekundach automatycznie. Dlaczego? Otóż zanim modem złapie sieć - może to trochę potrwać. W tym przypadku mmcli zwróci błąd, więc nie ma sensu wykonywać polecenia ip link set - za pomocą return $? zwracamy do systemu status ostatniego polecenia. Jeśli 0 - to jest OK, jeśli inna wartość - to oznacza błąd.
Ja miałem dodatkowo drobny problem z DNS, dlatego konieczne było wykonanie poleceń:
# ln -rsf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
# systemctl enable systemd-resolved
aby system automatycznie ustawił adresy DNS.
Po wywołaniu skryptu /usr/local/bin/modem-connect otrzymałem połączenie z internetem. Jednak by działo się to automatycznie, konieczne będzie zdefiniowanie usługi systemd. W tym celu utworzyłem:
/etc/systemd/system/modem.service[Unit]
Description=Connect to the Internet via USB modem
StartLimitIntervalSec=0
#odpal po uruchomieniu sieci lokalnej
After=network.target
[Service]
Type=simple
RemainAfterExit=yes
Restart=always
RestartSec=5
User=root
ExecStart=/usr/local/bin/modem-connect
ExecStop=/usr/local/bin/modem-disconnect
[Install]
WantedBy=multi-user.targetWłączyłem usługę za pomocą systemctl enable modem.
Po restarcie modem automatycznie wstał.
| Modem w stanie podłączonym z HSPA+ |
Udostępnianie Internetu w sieci LAN
#pozwalamy na wejście z LAN sudo iptables -A INPUT -i enp4s0 ACCEPT #przekazywanie pakietów z LAN sudo iptables -A FORWARD -i enp4s0 ACCEPT #odpalamy NAT do interfejsu z internetem sudo iptables -t nat -A POSTROUTING -o wwx582c80139263 -j MASQUERADE sudo sh -c '/sbin/iptables-save > /etc/iptables/rules.v4
W przypadku problemów z DNS w pliku /etc/systemd/resolved.conf dodaj linię:
DNSStubListener=no
WiFi jako Access Point
Hostapd
# apt remove iwd # apt install hostapd iwTeraz pora na konfigurację. Utwórz następujący plik:
/etc/hostapd/wlp2s0.conf
interface=wlp2s0
driver=nl80211
ssid=TWOJ_SSID
#moja karta obsluguje tylko wifi 802.11g
hw_mode=g
channel=11
wpa=2
wpa_passphrase=TWOJE_TAJNE_HASLO_DO_NETA
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
wpa_ptk_rekey=600
macaddr_acl=0Potem trzeba włączyć usługę hostapd, ale w nieco inny sposób. Najpierw należy ją "odmaskować"# systemctl unmask hostapd
A potem nieco zmienić jej szablon. Edytujemy plik /lib/systemd/system/hostapd@.service. Trzeba zmienić linięAfter=network.target
Before=network.target systemd-networkd.service
# systemctl enable hostapd@wlp2s0.service
Mostek sieciowy via networkd
Dokonasz tego przez networkd. Stwórz definicję mostka za pomocą nowego pliku konfiguracyjnego:
/etc/systemd/network/10-br0.netdev
[NetDev]
Name=br0
Kind=bridge/etc/systemd/network/21-wlp2s0.network
[Match]
Name=wlp2s0
[Link]
RequiredForOnline=no
[Network]
Bridge=br0/etc/systemd/network/21-enp4s0.network
[Match]
Name=enp4s0
[Link]
RequiredForOnline=no
[Network]
Bridge=br0
/etc/systemd/network/bridged.network
[Match]
Name=br0
[Network]
#brama domyslna naszego LANu
Address=192.168.100.1
DNS=8.8.8.8Poprawki w serwerze DHCP
INTERFACESv4="br0"
Reguły iptables
sudo iptables -A INPUT -i wlp2s0 -j ACCEPT sudo iptables -A FORWARD -i wlp2s0 -j ACCEPT sudo sh -c '/sbin/iptables-save > /etc/iptables/rules.v4
Po wszystkim jestem leniem i restartuję cały terminal. Alternatywnie:
systemctl restart hostapd@wlp2s0 systemctl restart systemd-networkd systemctl restart isc-dhcp-server
IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback carrier unmanaged 2 enp4s0 ether enslaved configured 3 wlp2s0 wlan enslaved configured 4 wwx582c80139263 wwan carrier configured 5 br0 bridge routable configured
Dostęp zdalny
#pierwsza reguła jest już w systemie - przy konfiguracji Internetu via LAN
sudo iptables -t nat -A POSTROUTING -o wwx582c80139263 -j MASQUERADE
#następne są wymagane
sudo iptables -A FORWARD -i wwx582c80139263 -o zt+ -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i zt+ -o wwx582c80139263 -j ACCEPT
# zapisz poleceniem
sudo sh -c "iptables-save > /etc/iptables/rules.v4"
Komentarze
Prześlij komentarz