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.
This commit is contained in:
@@ -0,0 +1,234 @@
|
||||
# Сеть: 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
|
||||
```
|
||||
Reference in New Issue
Block a user