Wirenboard6:InstallingOnTheRemoteSite: различия между версиями

Нет описания правки
м (→‎Настройка PPP: Добавил человеческое наименование)
 
(не показано 16 промежуточных версий 4 участников)
Строка 3: Строка 3:


<!--T:1-->
<!--T:1-->
{{DISPLAYTITLE:Сетевые настройки контроллера}}
{{DISPLAYTITLE:Шпаргалка: сетевые настройки контроллера на удаленном объекте}}


<!--T:2-->
<!--T:2-->
В данной статье освещаются сетевые аспекты профессиональной инсталляции контроллера на производственных и коммерческих объектах.
{{note|info|Эта статья — шпаргалка инженера, в ней мы описали аспекты профессиональной инсталляции контроллера на производственных и коммерческих объектах. Полную информацию о сетевых настройках контроллера, смотрите в документации: [[Networks]]}}


== Выбор сетевой комплектации контроллера == <!--T:3-->
== Выбор сетевой комплектации контроллера == <!--T:3-->
Строка 70: Строка 70:
Контроллер опционально комплектуется одной из двух GSM-антенн: выносной, на кабеле 2,5м,  с коэффициентом усиления 3,5 дБ, или короткой штыревой антенной, навинчивающейся прямо на SMA(female)-разъем контроллера. При монтаже контроллера в металлических боксах следует использовать выносную антенну. Штатные антенны контроллера обеспечивают связь в условиях хорошего приема. В сложных радиоусловиях необходимо приобретать антенны с бóльшим коэффициентом усиления или направленные антенны. Диапазон частот 3G-антенн — 1900-2100 МГц, 2G — 900/1800 МГц. Разъем кабеля антенны — SMA(male).
Контроллер опционально комплектуется одной из двух GSM-антенн: выносной, на кабеле 2,5м,  с коэффициентом усиления 3,5 дБ, или короткой штыревой антенной, навинчивающейся прямо на SMA(female)-разъем контроллера. При монтаже контроллера в металлических боксах следует использовать выносную антенну. Штатные антенны контроллера обеспечивают связь в условиях хорошего приема. В сложных радиоусловиях необходимо приобретать антенны с бóльшим коэффициентом усиления или направленные антенны. Диапазон частот 3G-антенн — 1900-2100 МГц, 2G — 900/1800 МГц. Разъем кабеля антенны — SMA(male).


== Настройка сетевых интерфейсов ==
== Настройка сетевых интерфейсов == <!--T:25-->


Посмотреть текущее состояние интерфейсов и узнать их ip-адреса можно командой <code>ip a</code>:
=== Настройка Ethernet-интерфейсов === <!--T:26-->
<syntaxhighlight lang="bash">
~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 68:27:19:82:60:c9 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 68:27:19:82:a2:e2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.20/24 brd 192.168.2.255 scope global eth0
      valid_lft forever preferred_lft forever
    inet6 fe80::6a27:19ff:fe82:a2e2/64 scope link
      valid_lft forever preferred_lft forever
4: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1
    link/sit 0.0.0.0 brd 0.0.0.0
5: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether d4:d2:d6:bc:75:66 brd ff:ff:ff:ff:ff:ff
    inet 192.168.42.1/24 brd 192.168.42.255 scope global wlan0
      valid_lft forever preferred_lft forever
    inet6 fe80::d6d2:d6ff:febc:7566/64 scope link
      valid_lft forever preferred_lft forever
6: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether d6:d2:d6:bc:75:66 brd ff:ff:ff:ff:ff:ff
</syntaxhighlight>


неактуально, в 2304 и новее используется NM.
<!--T:27-->
Часто возникает необходимость, чтобы контроллер имел постоянный адрес в локальной сети. Это достигается либо настройками DНCP-сервера (привязкой IP-адреса к MAC-адресу сетевого интерфейса контроллера), либо явным указанием IP-адреса в сетевых настройках.


=== Настройка Ethernet-интерфейсов ===
<!--T:28-->
{{Wbincludes:WiFi Ethernet IP DHCP}}
Рассмотрим более подробно, как задать фиксированный адрес на Ethernet-интерфейсе.


{{Wbincludes:WiFi Ethernet IP Fixed}}
<!--T:29-->
Для настроек статического адреса задайте следующую конфигурацию:
<pre>     
auto eth0
iface eth0 inet static
address 192.0.2.7
netmask 255.255.255.0
gateway 192.0.2.254
hostname Wirenboard
</pre>


'''Использование своих DNS-серверов'''
<!--T:30-->
По умолчанию, если адрес статический, используются DNS-сервера, перечисленные в файле <code>/etc/resolv.conf</code>, символическая сcылка на <code>/mnt/data/etc/resolv.conf</code>.


Если адрес статический, то по умолчанию используются DNS-сервера из файла <code>/etc/resolv.conf</code>.
<!--T:31-->
 
Можете добавлять свои DNS-сервера по аналогии:
Вы можете добавлять свои DNS-сервера по аналогии. Откроем файл на редактирование:
<pre>
 
<syntaxhighlight lang="bash">
nano /etc/resolv.conf
</syntaxhighlight>
 
Пропишем в него новые DNS-сервера:
<syntaxhighlight lang="bash">
  nameserver 192.168.0.1
  nameserver 192.168.0.1
  nameserver 8.8.8.8
  nameserver 8.8.8.8
  nameservеr 8.8.4.4
  nameservеr 8.8.4.4
</syntaxhighlight>
</pre>
 
Эти сервера использует сервис dnsmasq, который обслуживает локальные DNS-запросы на контроллере. Чтобы понять, какие именно upstream-сервера используются dnsmasq в настоящий момент, выполните команды
Эти сервера использует сервис <code>dnsmasq</code>, который обслуживает локальные DNS-запросы на контроллере. Чтобы понять, какие именно upstream-сервера используются dnsmasq в настоящий момент, выполните команды
<pre>
<syntaxhighlight lang="bash">
  service dnsmasq stop
  service dnsmasq stop
  dnsmasq --no-daemon --log-queries
  dnsmasq --no-daemon --log-queries
  ^C
  ^C
  service dnsmasq start   
  service dnsmasq start   
</syntaxhighlight>
</pre>


Программа <code>dnsmasq</code> выведет в консоль, какие сервера используются, например:
<!--T:32-->
<syntaxhighlight lang="bash">
Программа dnsmasq выведет в консоль, какие сервера используются, например:
<pre>
  dnsmasq: using nameserver 192.168.0.1#53
  dnsmasq: using nameserver 192.168.0.1#53
  dnsmasq: using nameserver 8.8.8.8#53
  dnsmasq: using nameserver 8.8.8.8#53
  dnsmasq: using nameserver 8.8.4.4#53
  dnsmasq: using nameserver 8.8.4.4#53
</syntaxhighlight>
</pre>


=== Настройка Wi-Fi ===
=== Настройка Wi-Fi === <!--T:33-->


Параметры точки доступа определяет демон hostapd. По умолчанию подключение к точке доступа осуществляется по незащищенному каналу связи. Чтобы подключаться по защищенному каналу, нужно указать дополнительные параметры подключения.
<!--T:34-->
Параметры точки доступа определяет демон hostapd (файл настроек <code>/etc/hostapd.conf</code>).
Чтобы подключаться к контроллеру по Wi-Fi, по защищенному каналу, допишите в конец файла <code>/etc/hostapd.conf</code> следующую конфигурацию:


{{Wbincludes:WiFi Set Password}}
<!--T:35-->
<pre>
wpa=2
wpa_passphrase=your_password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
</pre>


Подробнее о настройке режимов WiFi адаптера читайте в статье «[[Wi-Fi]]».
<!--T:36-->
Перезапустите hostapd: <code>/etc/init.d/hostapd restart</code>, после чего подключение к контроллеру по Wi-Fi будет возможно только с паролем '''your_password'''.


=== Настройка мобильного интернета (PPP) ===
<!--T:37-->
Пример настройки Wi_Fi адаптера для подключения к локальной сети можно найти [[Special:MyLanguage/Wi-Fi|в нашей wiki]].


==== Подготовка ====
=== Настройка PPP === <!--T:38-->


{{Wbincludes:Configuration WBC}}
<!--T:39-->
На контроллере предустановлен демон pppd, который используется для создания подключения к сети провайдера через 3G/2G-модем. Демон pppd создает при подключении сетевой интерфейс ppp (ppp0 по умолчанию). В заводской конфигурации настройки порта ppp0 закомментированы, и установления соединения с провайдером сотовой связи не происходит. В нашей [[Special:MyLanguage/GSM/GPRS|Wiki]] мы рекомендуем использовать следующие настройки для интерфейса ppp0 в файле <code>/etc/network/interfaces</code>:
<pre>
auto ppp0
iface ppp0 inet ppp
provider mts
#Рестартуем модем, если он завис
pre-up wb-gsm restart_if_broken 
#Затем ждем, пока он загрузится и найдет сеть.
pre-up sleep 10
</pre>
Даже если модем находится в зависшем или отключенном состояниии, команда <code>pre-up wb-gsm restart_if_broken</code> перед началом установления соединения перезагрузит его и модем будет гарантированно доступен. Десятисекундной задержки (<code>pre-up sleep 10</code>) перед установлением соединения обычно хватает, чтобы сетевое соединение установилось с первого раза.


{{Wbincludes:Configuration GSM Modem First Start}}
<!--T:40-->
Строка <code>provider</code> заставляет <code>pppd</code> искать файл настроек для конкретного провайдера в директории <code>/etc/ppp/peers</code>, в нашем случае это файл <code>/etc/ppp/peers/mts</code>. В целях совместимости в качестве устройства модема в заводской настройке в этом файле указано использовать устройство <code>/dev/ttyGSM</code>. Если на вашем контроллере установлен 3G-модем, замените это устройство на более быстрое <code>/dev/ttyACM0</code>.


==== Быстрый выход в интернет ====
<!--T:41-->
 
Чтобы при обрыве соединения контроллер не прекращал попытки установить связь, в файле настроек провайдера <code>/etc/ppp/peers/</code> должны быть раскомментированы опции
{{Wbincludes:GSM Quick Connect}}
<pre>
 
persist
==== Автоматический запуск подключения ====
maxfail 0
</pre>
Параметры протокола пакетной передачи данных и номера для соединения для каждого провайдера хранятся в директории /etc/chatscripts. В большинстве случаев ничего менять в этих файлах не придется.


{{Wbincludes:GSM Auto Connect}}
== PPP — основной и резервный выход в интернет == <!--T:42-->
 
== PPP — основной и резервный выход в интернет ==


<!--T:43-->
Проще всего обеспечить выход в интернет, если ppp0 — единственный WAN-интерфейс. Интерфейс ppp0 настраивается, как это написано выше, и затем, командой <code>ifup ppp0</code>, устанавливается подключение к интернету через сеть сотового оператора.  
Проще всего обеспечить выход в интернет, если ppp0 — единственный WAN-интерфейс. Интерфейс ppp0 настраивается, как это написано выше, и затем, командой <code>ifup ppp0</code>, устанавливается подключение к интернету через сеть сотового оператора.  


<!--T:44-->
Сложности начинаются, когда контроллер подключен к Ethernet и имеет шлюз по умолчанию в одной сети, а также подключается к сети сотовой передачи данных.  
Сложности начинаются, когда контроллер подключен к Ethernet и имеет шлюз по умолчанию в одной сети, а также подключается к сети сотовой передачи данных.  


<!--T:45-->
В такой конфигурации мы сталкиваемся со следующей особенностью: протокол PPP обеспечивает соединение точка-точка и не предполагает шлюза по умолчанию.  
В такой конфигурации мы сталкиваемся со следующей особенностью: протокол PPP обеспечивает соединение точка-точка и не предполагает шлюза по умолчанию.  


<!--T:46-->
В случае подключения по PPP, когда ни одного шлюза по умолчанию нет (например, мы не подключили Ethernet-кабель), pppd в качестве шлюза по умолчанию добавит в таблицу маршрутизации в системе IP-адрес ppp-партнера. Если шлюз по умолчанию уже задан, то в таблицу маршрутизации новый шлюз по умолчанию не добавляется. И тогда при падении основного Ethernet-канала выход в интернет теряется, несмотря на активное соединение. В этом случае необходимо добавить второй шлюз по умолчанию через интерфейс ppp0. Метрика любого нового шлюза должна отличаться от метрик имеющихся, поэтому мы явно указываем метрику при создании нового шлюза по умолчанию.  
В случае подключения по PPP, когда ни одного шлюза по умолчанию нет (например, мы не подключили Ethernet-кабель), pppd в качестве шлюза по умолчанию добавит в таблицу маршрутизации в системе IP-адрес ppp-партнера. Если шлюз по умолчанию уже задан, то в таблицу маршрутизации новый шлюз по умолчанию не добавляется. И тогда при падении основного Ethernet-канала выход в интернет теряется, несмотря на активное соединение. В этом случае необходимо добавить второй шлюз по умолчанию через интерфейс ppp0. Метрика любого нового шлюза должна отличаться от метрик имеющихся, поэтому мы явно указываем метрику при создании нового шлюза по умолчанию.  


<!--T:47-->
Для обеспечения отказоустойчивого соединения мы должны предусмотреть любой порядок поднятия и падения интерфейсов. Задача — обеспечить связь независимо от порядка поднятия интерфейсов и переключение при падении одного из них.  
Для обеспечения отказоустойчивого соединения мы должны предусмотреть любой порядок поднятия и падения интерфейсов. Задача — обеспечить связь независимо от порядка поднятия интерфейсов и переключение при падении одного из них.  


<!--T:48-->
Для интерфейса eth0, который мы будем считать основным для выхода в интернет, создается шлюз по умолчанию с метрикой 0 в таблице маршрутизации. Зададим для шлюза по умолчанию через интерфейс ppp0-метрику 100 (или любую, отличную от 0).
Для интерфейса eth0, который мы будем считать основным для выхода в интернет, создается шлюз по умолчанию с метрикой 0 в таблице маршрутизации. Зададим для шлюза по умолчанию через интерфейс ppp0-метрику 100 (или любую, отличную от 0).
Для выполнения команд после инициализации любого ppp-интерфейса pppd демон использует директорию <code>/etc/ppp/ip-up.d</code>. В качестве параметров командной строки скрипту передается и имя ppp-интерфейса (в нашем случае такой интерфейс один — это ppp0).
Для выполнения команд после инициализации любого ppp-интерфейса pppd демон использует директорию <code>/etc/ppp/ip-up.d</code>. В качестве параметров командной строки скрипту передается и имя ppp-интерфейса (в нашем случае такой интерфейс один — это ppp0).


<!--T:49-->
Создадим скрипт add_routes в директории <code>/etc/ppp/ip-up.d</code> и сделаем его исполняемым (<code>chmod +x /etc/ppp/ip-up.d/add_routes</code>):
Создадим скрипт add_routes в директории <code>/etc/ppp/ip-up.d</code> и сделаем его исполняемым (<code>chmod +x /etc/ppp/ip-up.d/add_routes</code>):
<pre>
<pre>
#!/bin/sh
#!/bin/sh


<!--T:50-->
route del default dev ppp0 2>/dev/null
route del default dev ppp0 2>/dev/null
route add default dev ppp0 metric 100 2>/dev/null
route add default dev ppp0 metric 100 2>/dev/null
Строка 188: Строка 197:
Таким образом, мы имеем два шлюза по умолчанию с разными метриками:
Таким образом, мы имеем два шлюза по умолчанию с разными метриками:


[[Image: Two_def_gateways.png|400px|thumb|none| Описание ]]
<!--T:51-->
[[Image: Two_def_gateways.png]]
 
<!--T:52-->
При падении одного из них трафик будет передаваться через другой и наоборот.
При падении одного из них трафик будет передаваться через другой и наоборот.
Запустим ping 8.8.8.8, а затем  вынем и вставим вилку RJ-45:  
Запустим ping 8.8.8.8, а затем  вынем и вставим вилку RJ-45:  


[[Image: Channel_switch.png|400px|thumb|none| Описание ]]
<!--T:53-->
[[Image:Channel_switch.png]]


<!--T:54-->
Как показал опыт, иногда возникает проблема с доступностью DNS-серверов провайдера. Для всех соединений прописываем общедоступные сервера Google и OpenDNS.
Как показал опыт, иногда возникает проблема с доступностью DNS-серверов провайдера. Для всех соединений прописываем общедоступные сервера Google и OpenDNS.


<!--T:55-->
'''eth0:''' Из файла <code>/etc/dhcp/dhclient.conf</code>, из параметра request удаляем параметр <code>domain-name-servers</code>, а после параметра request указываем открытые DNS-сервера Google и OpenDNS:  
'''eth0:''' Из файла <code>/etc/dhcp/dhclient.conf</code>, из параметра request удаляем параметр <code>domain-name-servers</code>, а после параметра request указываем открытые DNS-сервера Google и OpenDNS:  
<pre>prepend domain-name-servers 8.8.4.4, 8.8.8.8, 208.67.222.222, 208.67.220.220;</pre>
<pre>prepend domain-name-servers 8.8.4.4, 8.8.8.8, 208.67.222.222, 208.67.220.220;</pre>


<!--T:56-->
'''ppp0:''' В директории <code>/etc/ppp/ip-up.d</code> создаем скрипт (и даем ему права на выполнение), который добавит DNS-сервера Google и OpenDNS в файл <code>resolv.conf</code> при поднятии интерфейса.
'''ppp0:''' В директории <code>/etc/ppp/ip-up.d</code> создаем скрипт (и даем ему права на выполнение), который добавит DNS-сервера Google и OpenDNS в файл <code>resolv.conf</code> при поднятии интерфейса.


<!--T:57-->
<pre>
<pre>
if [ ! -e /etc/resolv.conf ]; then
if [ ! -e /etc/resolv.conf ]; then
Строка 206: Строка 223:
fi
fi


<!--T:58-->
#OpenDNS
#OpenDNS
printf '%s\n%s\n' "nameserver 208.67.222.222" "$(cat /etc/resolv/conf)" >/etc/resolv.conf
printf '%s\n%s\n' "nameserver 208.67.222.222" "$(cat /etc/resolv/conf)" >/etc/resolv.conf
Строка 213: Строка 231:
printf '%s\n%s\n' "nameserver 8.8.4.4" "$(cat /etc/resolv.conf)" >/etc/resolv.conf
printf '%s\n%s\n' "nameserver 8.8.4.4" "$(cat /etc/resolv.conf)" >/etc/resolv.conf


<!--T:59-->
</pre>
</pre>


== VPN == <!--T:60-->
== OpenVPN == <!--T:60-->


<!--T:61-->
<!--T:61-->
Строка 228: Строка 247:
<!--T:64-->
<!--T:64-->
Установка OpenVPN — стандартная, с использованием <code>open-rsa</code>.
Установка OpenVPN — стандартная, с использованием <code>open-rsa</code>.
2do: исправить, не надо на контроллере разворачивать механизмы создания/подписи сертификатов.


<!--T:65-->
<!--T:65-->
Строка 272: Строка 292:
<pre>
<pre>
service openvpn stop
service openvpn stop
mcedit /etc/openvpn/ipp.txt
nano /etc/openvpn/ipp.txt
</pre>
</pre>
Добавляем строку <code>A7ZO7UCC,10.8.0.48</code>
Добавляем строку <code>A7ZO7UCC,10.8.0.48</code>
Строка 314: Строка 334:
Проверяем доступность сервера  
Проверяем доступность сервера  
<code>ping 10.8.0.1</code>
<code>ping 10.8.0.1</code>
== WireGuard ==
{{Anchor|wirenguard}}
{{SupportedSinceRelease
| release = wb-2210
| deb = linux-image-wb*
| version = 5.10.35-wb121
|content=
Помимо OpenVPN можно использовать более простой в настройке WireGuard, [https://www.wireguard.com/quickstart/ Инструкция по установке]. Для него не нужен централизованный сервер в интернете.
Также можно использовать решение на основе WireGuard — [[Tailscale]]. Он использует userspace реализацию протокола WireGuard и не требует поддержки в ядре, а настройка подключения занимает несколько минут.
}}


== AutoSSH == <!--T:78-->
== AutoSSH == <!--T:78-->
wb_editors
890

правок