В связи с отсутствием проводного подключения к сети Интернет, понадобилось расшарить Интернет от 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
Это сэкономит вам кучу времени при вводе одинаковых команд, просто начинайте вводить команду и нажимайте стрелку вверх, команды из истории будут поочередно показываться на консоли.