Files
dotfiles/nixos/docs/03-networking.md
T
Dmitry 17b0cdfbac feat: add comprehensive NixOS configuration documentation and structure
- Introduced `08-structure.md` detailing project structure, main files, and versioning.
- Created `README.md` for documentation overview and quick start guide.
- Added user-specific configurations for Alacritty, Vim, Micro, Git, Zsh, Tmux, and tools.
- Implemented system modules for desktop environment (KDE Plasma), audio (PipeWire), networking, and services (OpenSSH, GnuPG).
- Configured Nix settings with flakes support and garbage collection.
- Established user management for `ada` with necessary groups and shell settings.
- Enabled VirtualBox guest additions for improved VM experience.
2026-03-10 13:10:52 +03:00

4.8 KiB
Raw Blame History

Сеть: SSH, Firewall, NetworkManager

Как настроить сетевые сервисы.

Где сетевые настройки?

Сеть находится в двух местах:

modules/networking/default.nix  ← NetworkManager, Firewall
modules/services/default.nix    ← SSH и другие сервисы

SSH настройки

SSH находится в modules/services/default.nix.

Текущие настройки

settings = {
  # Только публичные ключи
  PasswordAuthentication = false;
  PubkeyAuthentication = true;

  # root не может логиниться
  PermitRootLogin = "no";

  # Максимум попыток: 3
  MaxAuthTries = 3;

  # Максимум сессий: 2
  MaxSessions = 2;
};

Открыть SSH на определённый порт

В modules/networking/default.nix:

# По умолчанию открыт порт 22
networking.firewall.allowedTCPPorts = [ 22 ];

# Если хочешь другой порт (например 2222):
networking.firewall.allowedTCPPorts = [ 2222 ];

И в modules/services/default.nix:

services.openssh.settings = {
  Port = 2222;  # Добавить эту строку
};

Firewall

Firewall находится в modules/networking/default.nix.

Открыть порты

networking.firewall.allowedTCPPorts = [ 22 ];      # SSH

# Добавить новые порты:
networking.firewall.allowedTCPPorts = [ 22 8080 3000 ];

Открыть приложение

# Автоматически открыть порты для приложения
services.transmission.openFirewall = true;
services.minecraft-server.openFirewall = true;

NetworkManager

NetworkManager позволяет управлять Wi-Fi и Ethernet.

Статус

# Статус сети
nmcli status

# Список Wi-Fi сетей
nmcli dev wifi list

# Подключиться к Wi-Fi
nmcli dev wifi connect "SSID" password "password"

Настройка Hostname

В modules/networking/default.nix:

networking.hostname = "nixos-vm";

# Изменить на:
networking.hostname = "my-machine";

Интернет соединение

Справка: NetworkManager управляет:

  • Wi-Fi (connect/disconnect)
  • Ethernet (автоматическое подключение)
  • VPN (при установке клиента)
  • Прокси (конфигурация)

Команды

# Включить/выключить Wi-Fi
nmcli radio wifi on/off

# Список подключений
nmcli con show

# Отключиться от сети
nmcli con down "connection-name"

VPN

VPN поддержка уже подготовлена в modules/services/default.nix:

# AmneziaVPN поддержка
services.amnezia.enable = true;  # Если добавлено

DNS

Если нужно изменить DNS серверы:

# В modules/networking/default.nix
networking.nameservers = [ "1.1.1.1" "8.8.8.8" ];

Проверка после изменений

# Применить конфигурацию
nh os switch

# Проверить статус
systemctl status networking
systemctl status ssh

# Проверить firewall
sudo firewall-cmd --list-ports  # Если используется firewalld

Диагностика

SSH не работает?

# Проверить статус
systemctl status ssh

# Посмотреть логи
sudo journalctl -u sshd -f

# Перезагрузить SSH
sudo systemctl restart ssh

Нет интернета?

# Проверить соединение
ping 8.8.8.8

# Проверить DNS
nslookup google.com

# NetworkManager статус
nmcli status

# Перезагрузить NetworkManager
sudo systemctl restart NetworkManager

Firewall блокирует?

# Проверить открытые порты
sudo nftables list tables  # Или через nmap

nmap localhost  # Сканирование локального машина

# Проверить конкретный порт
sudo netstat -tlnp | grep :8080

SSH ключи

Генерировать ключ (если нет)

ssh-keygen -t ed25519 -C "ada.dmitry@gmail.com"
# или
ssh-keygen -t rsa -b 4096 -C "ada.dmitry@gmail.com"

Добавить публичный ключ

Содержимое ~/.ssh/id_ed25519.pub нужно добавить на сервер в ~/.ssh/authorized_keys.

Общие команды

# Сетевые интерфейсы
ip link show

# IP адреса
ip addr show

# Маршруты
ip route show

# Слушающие порты
sudo netstat -tlnp

# DNS кэш
systemctl status systemd-resolved