99 lines
6.5 KiB
Markdown
99 lines
6.5 KiB
Markdown
# dhcpsrv
|
||
|
||
[](https://github.com/Engelgardt23/dhcpsrv/releases/latest)
|
||
[](LICENSE)
|
||
|
||
[English](README.md) | Русский
|
||
|
||
Маленький портативный **DHCP-сервер** для ноутбука инженера хранения / серверов.
|
||
Двойной клик — выбрал сетевую — готово. Живая таблица клиентов, статус ping, счётчики пакетов. Ничего не устанавливается, Python на целевой машине не нужен.
|
||
|
||
Сделан под сценарий «воткнул кабель, увидел как BMC получил IP» во время прошивки, восстановления и бенчмарков.
|
||
|
||
> **Автор: engelgardt.**
|
||
|
||
---
|
||
|
||
## Скачать
|
||
|
||
Последний релиз: [**страница релизов**](https://github.com/Engelgardt23/dhcpsrv/releases/latest).
|
||
Архив `dhcpsrv-portable-vX.Y.Z.zip` (~12 МБ).
|
||
|
||
## Запуск
|
||
|
||
1. Распакуй куда угодно.
|
||
2. Двойной клик по `dhcpsrv.exe`.
|
||
3. **При первом запуске** программа спросит язык интерфейса (1 — English, 2 — Русский). Ответ запишется в `config.ini` рядом с exe — потом можно поменять руками.
|
||
4. Подтверди UAC (admin нужен, чтобы занять UDP/67 и переключить адаптер на статический IP).
|
||
5. Выбери сетевой адаптер, воткнутый в твой сервер или коммутатор — это единственный вопрос.
|
||
6. `Ctrl+C` — стоп. Спросит, вернуть ли адаптер обратно в DHCP.
|
||
|
||
## Настройки по умолчанию (никаких других вопросов)
|
||
|
||
| Параметр | Значение |
|
||
|---|---|
|
||
| IP сервера | `10.10.10.1/24` |
|
||
| Пул | `10.10.10.2 .. 10.10.10.51` (50 адресов) |
|
||
| Lease | `7200 с` (2 часа — переживёт долгий стресс-тест) |
|
||
| Опция TFTP | IP сервера (BMC сразу увидит твой Tftpd32) |
|
||
|
||
## Что на экране
|
||
|
||
```
|
||
┌─ dhcpsrv v1.2.0 ────────────────────────────────────────────────────────┐
|
||
│ Сервер: 10.10.10.1/255.255.255.0 Пул: 10.10.10.2–10.10.10.51 … │
|
||
│ Аренды: 3/50 Пакетов: 47 DISCOVER: 12 REQUEST: 11 RELEASE: 0 │
|
||
└─────────────────────────────────────────────────────────────────────────┘
|
||
┌─ Клиенты ───────────────────────────────────────────────────────────────┐
|
||
│ # │ IP │ Имя хоста │ MAC │ Последний │ Пинг │
|
||
│ 1 │ 10.10.10.2 │ server-01 │ a0:c5:f2:13:57:46 │ 17:42:18 │ OK │
|
||
│ 2 │ 10.10.10.3 │ server-02 │ 70:b3:d5:11:22:33 │ 17:42:21 │ -- │
|
||
└─────────────────────────────────────────────────────────────────────────┘
|
||
┌─ События ───────────────────────────────────────────────────────────────┐
|
||
│ [17:42:18] DISCOVER a0:c5:f2:13:57:46 → OFFER 10.10.10.2 │
|
||
│ [17:42:18] REQUEST a0:c5:f2:13:57:46 → ACK 10.10.10.2 │
|
||
└─────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## Типичные сценарии
|
||
|
||
- **Сервер с общим LOM** — один кабель в порт BMC/host, и BMC и хост-ОС получают IP с этого DHCP.
|
||
- **8-портовый свитч** — ноут на одном порту, до 7 серверов на остальных; пул из 50 адресов покрывает всех.
|
||
- **Прямой кабель в выделенный Mgmt-порт** — один клиент (BMC).
|
||
|
||
## Совместимость
|
||
|
||
- Windows 10 / 11.
|
||
- В списке адаптеров отфильтровано всё лишнее (Wi-Fi, Cisco AnyConnect, Hyper-V, VMware, VirtualBox, TAP/TUN, WireGuard, OpenVPN, Tailscale, ZeroTier).
|
||
- Имена адаптеров с пробелами или не-ASCII экранируются корректно для `netsh`.
|
||
|
||
## Конфиг
|
||
|
||
При первом запуске рядом с `dhcpsrv.exe` появится `config.ini`:
|
||
|
||
```ini
|
||
# Чтобы сменить язык интерфейса, измените 'language' ниже.
|
||
# Допустимые значения: en, ru
|
||
[General]
|
||
language = ru
|
||
```
|
||
|
||
В будущих релизах сюда же переедут пул, lease и IP сервера — пока что переменная одна.
|
||
|
||
## Заметки
|
||
|
||
- На машине ничего не устанавливается. Удалить — стереть папку.
|
||
- UAC спросит каждый раз. (Если хочешь убрать на *своей* машине — пропусти `dhcpsrv.exe` через Scheduled Task с галкой «Run with highest privileges» и запускай через `schtasks /run /tn dhcpsrv`.)
|
||
- Если в Tftpd32 включён модуль DHCP — отключи, UDP/67 окажется занят.
|
||
- Lease по умолчанию 7200 с; клиент продлевает в середине срока. Если нужно «навсегда», исходник поддерживает `2147483647` — пересобери из исходников.
|
||
|
||
## Сборка из исходников
|
||
|
||
```
|
||
python -m pip install rich pyinstaller
|
||
python -m PyInstaller --onefile --uac-admin --console --name dhcpsrv dhcpsrv-launcher.py
|
||
```
|
||
|
||
## Лицензия
|
||
|
||
MIT — см. [LICENSE](LICENSE).
|