Делимся вайфаем по проводам (Wireless-to-Wired Router)

Автор: | 24 января 2018

В связи с отсутствием проводного подключения к сети  Интернет, понадобилось расшарить Интернет от 3G модема к устройству с Ethernet портом. Для этих целей я выбрал относительно недорогие платы OrangePi Zero(покупал тут). Вначале я выбрал образ с ОС Debian, но собрана она весьма рукожопно и пакеты не обновляются. Чтобы не заморачиваться, взял следующий дистрибутив – Ubuntu Server.

TL;DR
Далее кратко опишу плату, варианты подключения и настройку с нуля.

Есть масса обзоров этой платы, например вот тут. Я использовал PuTTy, но образ прошивал на MacBook Pro программой Etcher (она есть и под Windows, рекомендую).

Скачиваем вышеупомянутый образ, распаковываем и прошиваем Etcher’ом на карточку, никаких дополнительных телодвижений в виде формативарования.

Для подключения я использовал “Debug serial port” (он же UART) и подключал при помощи свистка CH340 (главное не забудьте, что RX свистка должен подключаться к TX платы, а RX платы – к TX свистка).

Первым делом нужно сменить пароли. По умолчанию, и для пользователя orangepi и для суперпользователя root пароль – orangepi. Я настоятельно не рекомендую подключать какие бы то ни было устройства напрямую к сети, будь то ПК, смартфон или IoT-устройство, только через маршрутизатор или через железный файервол, но смена паролей все равно должна иметь место.

После смены пароля нужно настроить сеть. Если вы выбрали подключение по Ethernet, то она у вас как бы уже должна работать (если подключали к маршрутизатору, а не ПК или ноутбуку). Если как я, к UART, то настройте WiFi.

1. В файле /etc/udev/rules.d/70-persistent-net.rules будут три (не закомментированные #-ми) строчки, там будут устройства с адресами 20:03:63:61:5f:87 и e0:7a:5e:6d:07:e3, их можно смело снести и оставить только последнюю строчку. Для порядка, "wlan2" переименуйте в "wlan0".

2. В /etc/hosts допишите:

127.0.0.1       OrangePI

Это дефолтный hostname, который вы можете сменить на что-то другое (не забудьте при замене изменить и в файле /etc/hostname).

3. В файле /etc/network/interfaces для wlan0 пропишите название вашей сети и пароль, перезагрузите* командой reboot.

4. Далее нужно настроить время:

dpkg-reconfigure tzdata

5. И обновить софт:

apt-get update && apt-get upgrade

* ИЛИ

4. если вам, как и мне, нужно расшарить WiFi через Ethernet, пропишите:

source-directory /etc/network/interfaces.d

allow-hotplug eth0
iface eth0 inet static
    address 192.168.2.1
    netmask 255.255.255.0
    network 192.168.2.0
    broadcast 192.168.2.255

auto lo
iface lo inet loopback

allow-hotplug wlan0
iface wlan0 inet dhcp
  wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

iface WiFi1 inet dhcp
iface WiFi2 inet dhcp

Здесь конфиг для двух сеток, можно указать только одну или наоборот, больше сетей (по аналогии).

5. Отредактируйте (создайте) файл /etc/wpa_supplicant/wpa_supplicant.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="WIFI-NAME1"
    psk="WIFI-PASSWORD1"
    key_mgmt=WPA-PSK
    id_str="WiFi1"
    priority=2
}
network={
    ssid="WIFI-NAME2"
    psk="WIFI-PASSWORD2"
    key_mgmt=WPA-PSK
    id_str="WiFi2"
    priority=1
}

В данном случае, чем больше число в параметре priority, тем выше приоритет, а не наоборот. Ну, Линупс, что тут поделаешь…

Здесь, соответственно, так же, добавляйте столько сетей, сколько нужно, только меняйте id_str.

6. Проверьте, что все правильно прописано и перезагружайте.

7. Далее нужно настроить время:

dpkg-reconfigure tzdata

8. И обновить софт:

apt-get update && apt-get upgrade

9. Установить недостающие пакеты:

apt-get install dnsmasq && apt-get install iptables

10. Затем создайте конфиг:

mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
nano /etc/dnsmasq.conf

И внесите следующее:

interface=eth0      # Use interface eth0
listen-address=192.168.2.1 # listen on
# Bind to the interface to make sure we aren't sending things
# elsewhere
bind-interfaces
server=8.8.8.8       # Forward DNS requests to Google DNS
domain-needed        # Don't forward short names
# Never forward addresses in the non-routed address spaces.
bogus-priv
# Assign IP addresses between 192.168.2.2 and 192.168.2.100 with a
# 12 hour lease time
dhcp-range=192.168.2.2,192.168.2.100,12h

11. Внесите правила в фаервол:

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT

Сохраните их:

sh -c "iptables-save > /etc/iptables.ipv4.nat"

И допишите в файл /etc/rc.local:

#NAT wlan0 <-> eth0
iptables-restore < /etc/iptables.ipv4.nat


 пропишите это НАД строчкой
 exit 0

12. И последний штрих – в файле /etc/sysctl.conf раскомментируйте строчку

net.ipv4.ip_forward=1

Все, перезагружайте командой reboot.

P.S.

Для удобства, можете создать еще один полезный файл:

nano .inputrc

И внести в него следующее:

## arrow up
"\e[A":history-search-backward
## arrow down
"\e[B":history-search-forward

Это сэкономит вам кучу времени при вводе одинаковых команд, просто начинайте вводить команду и нажимайте стрелку вверх, команды из истории будут поочередно показываться на консоли.

Добавить комментарий