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

235 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Сеть: SSH, Firewall, NetworkManager
Как настроить сетевые сервисы.
## Где сетевые настройки?
Сеть находится в двух местах:
```
modules/networking/default.nix ← NetworkManager, Firewall
modules/services/default.nix ← SSH и другие сервисы
```
## SSH настройки
SSH находится в `modules/services/default.nix`.
### Текущие настройки
```nix
settings = {
# Только публичные ключи
PasswordAuthentication = false;
PubkeyAuthentication = true;
# root не может логиниться
PermitRootLogin = "no";
# Максимум попыток: 3
MaxAuthTries = 3;
# Максимум сессий: 2
MaxSessions = 2;
};
```
### Открыть SSH на определённый порт
В `modules/networking/default.nix`:
```nix
# По умолчанию открыт порт 22
networking.firewall.allowedTCPPorts = [ 22 ];
# Если хочешь другой порт (например 2222):
networking.firewall.allowedTCPPorts = [ 2222 ];
```
И в `modules/services/default.nix`:
```nix
services.openssh.settings = {
Port = 2222; # Добавить эту строку
};
```
## Firewall
Firewall находится в `modules/networking/default.nix`.
### Открыть порты
```nix
networking.firewall.allowedTCPPorts = [ 22 ]; # SSH
# Добавить новые порты:
networking.firewall.allowedTCPPorts = [ 22 8080 3000 ];
```
### Открыть приложение
```nix
# Автоматически открыть порты для приложения
services.transmission.openFirewall = true;
services.minecraft-server.openFirewall = true;
```
## NetworkManager
NetworkManager позволяет управлять Wi-Fi и Ethernet.
### Статус
```bash
# Статус сети
nmcli status
# Список Wi-Fi сетей
nmcli dev wifi list
# Подключиться к Wi-Fi
nmcli dev wifi connect "SSID" password "password"
```
## Настройка Hostname
В `modules/networking/default.nix`:
```nix
networking.hostname = "nixos-vm";
# Изменить на:
networking.hostname = "my-machine";
```
## Интернет соединение
### Справка: NetworkManager управляет:
- Wi-Fi (connect/disconnect)
- Ethernet (автоматическое подключение)
- VPN (при установке клиента)
- Прокси (конфигурация)
### Команды
```bash
# Включить/выключить Wi-Fi
nmcli radio wifi on/off
# Список подключений
nmcli con show
# Отключиться от сети
nmcli con down "connection-name"
```
## VPN
VPN поддержка уже подготовлена в `modules/services/default.nix`:
```nix
# AmneziaVPN поддержка
services.amnezia.enable = true; # Если добавлено
```
## DNS
Если нужно изменить DNS серверы:
```nix
# В modules/networking/default.nix
networking.nameservers = [ "1.1.1.1" "8.8.8.8" ];
```
## Проверка после изменений
```bash
# Применить конфигурацию
nh os switch
# Проверить статус
systemctl status networking
systemctl status ssh
# Проверить firewall
sudo firewall-cmd --list-ports # Если используется firewalld
```
## Диагностика
### SSH не работает?
```bash
# Проверить статус
systemctl status ssh
# Посмотреть логи
sudo journalctl -u sshd -f
# Перезагрузить SSH
sudo systemctl restart ssh
```
### Нет интернета?
```bash
# Проверить соединение
ping 8.8.8.8
# Проверить DNS
nslookup google.com
# NetworkManager статус
nmcli status
# Перезагрузить NetworkManager
sudo systemctl restart NetworkManager
```
### Firewall блокирует?
```bash
# Проверить открытые порты
sudo nftables list tables # Или через nmap
nmap localhost # Сканирование локального машина
# Проверить конкретный порт
sudo netstat -tlnp | grep :8080
```
## SSH ключи
### Генерировать ключ (если нет)
```bash
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`.
## Общие команды
```bash
# Сетевые интерфейсы
ip link show
# IP адреса
ip addr show
# Маршруты
ip route show
# Слушающие порты
sudo netstat -tlnp
# DNS кэш
systemctl status systemd-resolved
```