Проброс портов через WireGuard вручную требует целой цепочки команд файрвола. tun-nat заменяет их одним файлом конфигурации поверх nftables.
Шаг 1. Установка
Требование: инструмент работает только с
nftables. Проверка:nft --version; если команда не найдена -sudo apt install nftables.
sudo git clone https://github.com/lashkinse/tun-nat.git /etc/tun-nat
Нет git? Сначала: sudo apt install git.
Шаг 2. Конфигурация
Откройте /etc/tun-nat/config.toml и приведите к виду:
[tunnel]
interface = "wg0" # туннельный интерфейс (WireGuard)
port = 51820 # порт WireGuard
[external]
interface = "eth0" # внешний интерфейс сервера
ip = "" # пусто = автоматический режим (MASQUERADE)
# Игровой сервер: 27015 tcp + udp на 10.0.0.2
[[port_rules]]
protocol = "tcp"
target = "10.0.0.2"
ports = "27015"
[[port_rules]]
protocol = "udp"
target = "10.0.0.2"
ports = "27015"
# Веб-сервис: 8080 на 10.0.0.3
[[port_rules]]
protocol = "tcp"
target = "10.0.0.3"
ports = "8080"
Новое правило - копия блока [[port_rules]] со своими значениями:
protocol-tcpилиudp;target- IP устройства внутри туннеля;ports- порт (27015) или диапазон (27015-27050).
Шаг 3. Автозапуск с туннелем
Добавьте две строки в секцию [Interface] файла /etc/wireguard/wg0.conf:
[Interface]
# ...ваши текущие настройки...
PostUp = /etc/tun-nat/apply-nat.sh # применить правила при старте
PreDown = /etc/tun-nat/apply-nat.sh --down # убрать при остановке
Используйте именно
PreDown, а неPostDown: к моментуPostDownинтерфейс уже удалён, и скрипт не сможет его найти для очистки.
Перезапустите туннель:
sudo wg-quick down wg0 && sudo wg-quick up wg0
Готово: трафик на указанные порты сервера уходит на устройства внутри туннеля.
🔗 Исходный код и документация: github.com/lashkinse/tun-nat