Инструкция установки и настройки системы Raspbian на Raspberry Pi 3b.

Инструкция устарела. Используйте Ubuntu .

Установка системы на флешку

Скачайте архив https://www.raspberrypi.org/downloads/raspbian/

_x000D_wget https://downloads.raspberrypi.org/raspios_lite_armhf_latest

Распакуйте архив.

_x000D_unzip raspios_lite_armhf_latest

Подключите флекшу. Узнайте название устройства.

_x000D_fdisk -l

У меня команда выводит следующую информацию:

_x000D_Disk /dev/mmcblk0: 29.1 GiB, 31268536320 bytes, 61071360 sectors_x000D_Units: sectors of 1 * 512 = 512 bytes_x000D_Sector size (logical/physical): 512 bytes / 512 bytes_x000D_I/O size (minimum/optimal): 512 bytes / 512 bytes_x000D_Disklabel type: dos_x000D_Disk identifier: 0x738a4d67

Запишите образ на флешку. Поставьте в параметр «of» свой диск.

_x000D_sudo dd bs=4M if=2020-08-20-raspios-buster-armhf-lite.img of=/dev/mmcblk0 conv=fsync status=progress

Подключение к raspberrypi

Установите флешку в raspberrypi, включите ее и подключитесь к ней через клавиатуру.

По умолчанию пароль:

pi — логин
raspberry — пароль

Войдите в систему и подключитесь под рут:

_x000D_sudo su

Смените пароль от пользователя pi:

_x000D_passwd pi

Два раза введите новый пароль

Запустите мастер конфигурации:

_x000D_raspi-config

Настройка Клавиатуры

1) Выберите Пункт 4 Localisation Options в меню raspi-config

2) Затем пункт 3 Change Keyboard Layout.

3) Укажите Generic 105-key PC (intl.)

4) Выберите Other и найдите English (US), переключитесь табом на OK и нажмите Enter. Выйдет список с раскладками, нужно выбрать снова English US и нажать Enter.

5) Затем укажите The default for the keyboard layout

6) После этого No compose key

7) Завершите настройку, выберите параметр <Finish>

Подключение к сети

Первое подключение к сети производиться через raspi-config.

1) Выберите пункт 2 Network Options

2) Затем пункт N2 Wireless LAN

3) Укажите страну

4) Введите ваш SSID. Это название сети.

5) Затем пароль

Проверьте подключение через команды:

_x000D_ip a_x000D_ping google.com

Настройка локали

Откройте файл /etc/locale.gen и раскоментируйте строки:

_x000D_en_US.UTF-8 UTF-8_x000D_ru_RU.UTF-8 UTF-8

выполните комманду locale-gen -a

Обновите систему

_x000D_apt update_x000D_apt upgrade_x000D_apt install aptitude mc nano htop iftop bwm-ng iperf iperf3 iotop tmux screen openntpd sshfs net-tools -y

Настройка сети

Рекомендуется использовать NetworkManager для управления сетью и WiFi. Для этого установите Network Manager и удалите старые программы для управления сетью

_x000D_apt-get install network-manager_x000D_apt purge openresolv_x000D_apt purge dhcpcd5_x000D_systemctl disable wpa_supplicant

Пересоздайте resolv.conf

_x000D_rm /etc/resolv.conf_x000D_nano /etc/resolv.conf

Пропишите в нем ДНС сервера

_x000D_nameserver 8.8.8.8_x000D_nameserver 8.8.4.4_x000D_nameserver 1.1.1.1_x000D_

Измените файл /etc/NetworkManager/NetworkManager.conf

_x000D_[main]_x000D_#auth-polkit=false_x000D_plugins=ifupdown,keyfile_x000D_dns=none_x000D__x000D_[ifupdown]_x000D_managed=false_x000D__x000D_[device]_x000D_wifi.scan-rand-mac-address=no

Создайте файл /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf

_x000D_[keyfile]_x000D_#unmanaged-devices=*,except:type:wifi,except:type:wwan_x000D_unmanaged-devices=type:bridge,interface-name:lxc*,interface-name:docker*;interface-name:virtual*

Перезагрузите распу

_x000D_init 6

Настройка локальной сети

_x000D_nmcli connection add type ethernet con-name Eth0 ifname eth0_x000D_nmcli c m Eth0 ipv4.route-metric 20

Если нужно указать статический IP адрес выполните:

_x000D_nmcli c m Eth0 ipv4.method manual_x000D_nmcli c m Eth0 ipv4.dns 8.8.8.8;8.8.4.4;_x000D_nmcli c m Eth0 ipv4.address1 192.168.1.25/24,192.168.1.1

Настройка WiFi

Выполните команду

_x000D_nmcli device wifi list

она покажет список WiFi сетей. Подключитесь к WiFi сети:

_x000D_nmcli device wifi connect "YourWifiNetwork" password "YourWifiPassword"

Просмотрите список подключений:

_x000D_nmcli c show_x000D_

Установите метрику 10 для подключения wifi

_x000D_nmcli c m YourWifiNetwork ipv4.route-metric 10

Metric 10 нужен, чтобы все пакеты в интернет шли через Wi-Fi. Нужно указать минимальное число больше нуля. Рекомендуется поставить метрику 10.

Настройка ssh

Узнайте IP адрес распы через команду:

_x000D_ifconfig

Установите ssh:

_x000D_apt update_x000D_apt install openssh-server -y_x000D_systemctl enable ssh_x000D_systemctl start ssh

Поменяйте стандартный порт ssh в конфиге nano /etc/ssh/sshd_config

Порт, следует изменить на нестандартный. например:

_x000D_Port 22050

Запретить авторизацию через root по паролю, только через ключ

_x000D_PermitRootLogin prohibit-password

Также можете указать:

_x000D_ClientAliveInterval 5_x000D_ClientAliveCountMax 1000

Разрешить авторизацию только определенным пользователям, укажите в самом конце файла:

_x000D_AllowUsers pi

Сделайте перезапуск сервиса ssh

_x000D_service sshd reload

Пробросьте свои ssh ключи на распу

Сгенереруйте у себя ключи, если они не были сгенерированы:

_x000D_ssh-keygen

Выполните копирование ключей:

_x000D_ssh-copy-id -i ~/.ssh/id_rsa.pub -p22050 pi@IP-Адрес-Распы

Создайте ssh конфиг nano ~/.ssh/config

_x000D_Host *_x000D_ Protocol 2_x000D_ KeepAlive yes_x000D_ TCPKeepAlive yes_x000D_ ServerAliveInterval 5_x000D_ ServerAliveCountMax 100_x000D_ Compression no_x000D_ #CompressionLevel 9_x000D_ #ForwardX11 yes_x000D_ UseRoaming no_x000D__x000D__x000D_Host raspberry1_x000D_ Hostname 192.168.1.25_x000D_ User pi_x000D_ Port 22050_x000D_ IdentityFile ~/.ssh/id_rsa_x000D_

теперь можно подключаться командой:

_x000D_ssh raspberry1

Настройка iptables

Установите iptables

_x000D_apt install iptables-persistent -y

На вопрос Save current IPv4 rules? и Save current IPv6 rules? ответьте No

При работе с iptables будьте осторожны. Одно неверное движение и доступ к серверу может быть заблокирован!!!

Обратите на порт SSH. Укажите свой порт, вместо 22050.

Пропишите в /etc/iptables/rules.v4 следующее содержимое:

_x000D_*filter_x000D_:INPUT ACCEPT [19:913]_x000D_:FORWARD ACCEPT [0:0]_x000D_:OUTPUT ACCEPT [39:3584]_x000D_:ALLOW-INPUT - [0:0]_x000D_-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT_x000D_-A INPUT -p icmp -j ACCEPT_x000D_-A INPUT -i lo -j ACCEPT_x000D__x000D_# Разрешаем входящие соединения ssh_x000D_-A INPUT -p tcp -m state --state NEW -m tcp --dport 22050 -j ACCEPT_x000D__x000D_# Перейти к цепочке ALLOW-INPUT_x000D_-A INPUT -j ALLOW-INPUT_x000D__x000D_# Запрещаем остальные входящие соединения_x000D_-A INPUT -j REJECT_x000D_-A FORWARD -j REJECT_x000D__x000D_# Разрешить http_x000D_-A ALLOW-INPUT -p tcp -m tcp --dport 80 -j ACCEPT_x000D_-A ALLOW-INPUT -p tcp -m tcp --dport 443 -j ACCEPT_x000D__x000D_-A ALLOW-INPUT -j RETURN_x000D__x000D_COMMIT

Обязателен ENTER в конце (перевод на новую строку).

Скопируйте rules.v4 в rules.v6

_x000D_cp /etc/iptables/rules.v4 /etc/iptables/rules.v6

Установите новые правила iptables

_x000D_iptables-restore < /etc/iptables/rules.v4_x000D_ip6tables-restore < /etc/iptables/rules.v6

Чтобы добавлять новые правила в iptables, например, тот же nginx нужно редактировать файл. Также вы можете выполнить команды

_x000D_iptables -I ALLOW-INPUT -p tcp -m tcp --dport 80 -j ACCEPT_x000D_iptables -I ALLOW-INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Они добавят в начало цепочки ALLOW-INPUT два новых правила, но при этом файл не изменят.

Проверьте настройки iptables:

_x000D_iptables-save

Обязательно проверьте соединение ssh. Попробуйте залогиниться к серверу через отдельный терминал.

Ограничьте размер логов systemd

Пропишите в /etc/systemd/journald.conf строчку:

_x000D_SystemMaxUse=10G

Это строчка ограничивает максимальный размер логов в 10 гигабайт. Перезагрузите конфигурацию systemd:

_x000D_systemctl daemon-reload

Можно также в крон прописать строчку:

_x000D_journalctl --vacuum-time=30d --vacuum-size=10G

Она будет оставлять логи за 30 дней

Дополнительная настройка локали

создайте файл nano /etc/profile.d/0.locale.sh со следующим содержимым:

_x000D_export LANG="en_US.UTF-8"_x000D_export LANGUAGE="en_US:en"_x000D_export LC_CTYPE="en_US.UTF-8"_x000D_export LC_NUMERIC="en_US.UTF-8"_x000D_export LC_TIME="en_US.UTF-8"_x000D_export LC_COLLATE="en_US.UTF-8"_x000D_export LC_MONETARY="en_US.UTF-8"_x000D_export LC_MESSAGES="en_US.UTF-8"_x000D_export LC_PAPER="en_US.UTF-8"_x000D_export LC_NAME="en_US.UTF-8"_x000D_export LC_ADDRESS="en_US.UTF-8"_x000D_export LC_TELEPHONE="en_US.UTF-8"_x000D_export LC_MEASUREMENT="en_US.UTF-8"_x000D_export LC_IDENTIFICATION="en_US.UTF-8"

Если для пользователя хотите локализацию русскую, то в домашней папке в ~/.bashrc пропишите:

_x000D_LANG="ru_RU.UTF-8"_x000D_LANGUAGE="ru"_x000D_export LANG_x000D_export LANGUAGE

Настройте ntpd

Установите:

_x000D_aptitude install ntpdate

NTPD обеспечивает синхронизацию времени.

Откройте файл /etc/ntpd.conf и пропишите:

_x000D_server 0.pool.ntp.org_x000D_server 1.pool.ntp.org_x000D_server 2.pool.ntp.org_x000D_server 3.pool.ntp.org_x000D_server 0.ubuntu.pool.ntp.org_x000D_server 1.ubuntu.pool.ntp.org_x000D_server 2.ubuntu.pool.ntp.org_x000D_server 3.ubuntu.pool.ntp.org

В конце нужен ENTER

Перезапустите ntp

_x000D_systemctl stop openntpd_x000D_systemctl start openntpd_x000D_systemctl enable openntpd_x000D_

Автоматическая синхронизация времени

Запустите команду

_x000D_sudo crontab -e

Добавьте в крон строчку, каждые 12 часов будет производиться синхронизация времени

_x000D_26 */12 * * * python -c 'import random; import time; time.sleep(random.random() * 12 * 3600)' && ntpdate -s time.nist.gov

В файл /etc/rc.local добавьте строчку ntpdate -s time.nist.gov, чтобы при запуске часы синхронизировались:

_x000D_#!/bin/sh -e_x000D_#_x000D_# rc.local_x000D_#_x000D_# This script is executed at the end of each multiuser runlevel._x000D_# Make sure that the script will "exit 0" on success or any other_x000D_# value on error._x000D_#_x000D_# In order to enable or disable this script just change the execution_x000D_# bits._x000D_#_x000D_# By default this script does nothing._x000D__x000D_# Print the IP address_x000D__IP=$(hostname -I) || true_x000D_if [ "$_IP" ]; then_x000D_ printf "My IP address is %sn" "$_IP"_x000D_ sleep 30_x000D_ ntpdate -s time.nist.gov_x000D_fi_x000D__x000D_exit 0