Varulv

Искатель

OrangePi 3 LTS с Armbian - Настройка точки доступа(access point), 1-wire и SSH-туннеля

Наконец-то допилили Armbian и с версии 23.8.3 bookworm, на моей апельсинке стал нормально работать WIFI, работоспособность Bluetooth пока не проверял. Но осталось несколько других проблем, а именно из коробки с помощью armbian-config не поднималась точка доступа и 1-wire интерфейс. 1-wire мне нужен для подключения датчиков температуры ds18b20.

Начнём с настройки точки доступа.

Для начала необходимо отключить wpa_supplicant:
												sudo systemctl stop wpa_supplicant.service
												sudo systemctl disable wpa_supplicant.service
												sudo systemctl mask wpa_supplicant.service
                                  							

Теперь запускаем hostapd (Host access point daemon):

												sudo systemctl unmask hostapd.service
												sudo systemctl enable hostapd.service
												sudo systemctl start hostapd
                                  							

Перед запуском hostapd необходимо в /etc/hostapd положить файл настроек hostapd.conf, его я вытащил из другой апельсинки, а тут приведу пример этого файла.

									 			ssid=OrangePiWAN
												wpa_passphrase=********************
												interface=wlan0
												bridge=br0
												auth_algs=3
												channel=7
												driver=nl80211
												hw_mode=g
												logger_stdout=-1
												logger_stdout_level=2
												max_num_sta=5
												rsn_pairwise=CCMP
												wpa=2
												wpa_key_mgmt=WPA-PSK
												wpa_pairwise=TKIP CCMP
												utf8_ssid=1
                                  							

Запускаем hostapd:

                                                                                                sudo systemctl unmask hostapd.service
                                                                                                sudo systemctl enable hostapd.service
                                                                                                sudo systemctl start hostapd
                                                                                        

Перезагружаем апельсинку, в настройках WIFI, например, телефона должна появиться новая сеть.

Приступаем к настройке 1-wire:

Открываем из под root файл /boot/armbianEnv.txt и прописываем туда:
												overlays=w1-gpio
												param_w1_pin=PD18
												param_w1_pin_int_pullup=1
                                  							

Сохраняем и теперь лезем в /etc/modules-load.d/modules.conf и прописываем:

												w1-gpio
												w1-therm
                                  							

По идее, тоже самое можно сделать следующими командами:

												modprobe w1-gpio
												modprobe w1-therm
                                  							

Для полного счастья можно установить WiringOP, потом допишу как.

В принице можно перезагрузиться и подключить датчик температуры.
Чтобы убедиться, что 1-wire работает, переходим в /sys/devices/w1_bus_master1/, должны увидеть что-то типа: 28-XXXXXXXXXXXX. Если такой записи нет, то либо не заработал 1-wire, либо неправильно подключён сам датчик.

Карту контактов GPIO апельсинки сделаю позже.

Переходим к созданию туннеля.

Дома у меня выделенный IP, а на даче связь через GSM-свисток, т.е. через динамический IP, а хотелось бы иметь возможность подключаться к даче без всяких дополнительных костылей и тут напомощь приходит SSH.

В /root/./ssh создаём файл config:

												Host homehost
   													HostName 94.100.89.47 # - наш белый IP
    													User Vasya 	      # - здесь имя пользователя
    													Port 22222	      # - порт к которому подключаемся	
    													ServerAliveInterval  30
    													ServerAliveCountMax  5
    													TCPKeepAlive         yes
   													IdentitiesOnly yes
                                  							

Теперь ползём в /etc/default и создаём файл secure-tunnel@homehost

												TARGET=homehost
												LOCAL_ADDR=127.0.0.1
												LOCAL_PORT=20022
												REMOTE_ADDR=127.0.0.1
												REMOTE_PORT=33333
												DYNAMIC_PORT=30050 									
                                  							

DYNAMIC_PORT указывать не обязательно. Это надо если затем настроить прохождение всего трафика через SOCKS. Не забываем на апельсинте в /etc/ssh/sshd.config пописать LOCAL_PORT вместо 22.

В /etc/systemd/system/ создаём файл [email protected] со следующим содержимым:

												[Unit]
												Description=Setup a secure tunnel to %I
												After=network.target

												[Service]
												EnvironmentFile=/etc/default/secure-tunnel@%i
												ExecStart=/usr/bin/ssh -NT -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -R ${REMOTE_PORT}:${LOCAL_ADDR}:${LOCAL_PORT} -D ${DYNAMIC_PORT} ${TARGET}
										
												# Restart every >2 seconds to avoid StartLimitInterval failure
												RestartSec=30
												Restart=always

												[Install]
												WantedBy=multi-user.target									
                                  							

Запускаем наш новоиспечённый сервис:

												sudo systemctl start [email protected]
												sudo systemctl enable [email protected]								
                                  							

Дабы проверить, на домашнем ПК запускаем:

												watch -n1 "sudo netstat -lnpt"									
                                  							

Секунд через 30 на домашнем ПК должны увидеть такое:

												Active Internet connections (only servers)
												Proto Recv-Q Send-Q Local Address           Foreign Address         State 
												tcp        0      0 0.0.0.0:22222           0.0.0.0:*               LISTEN
												tcp        0      0 127.0.0.1:33333         0.0.0.0:*               LISTEN																						
                                  							

Теперь на домашнем ПК набираем:

												ssh -p 33333 [email protected]
                                  							

И voilà, мы на нашем удалённом сервачке.

Обсудить этот пост