Первые наброски конфигураций WireGuard + udp2raw

- Конфиги сервера (Ubuntu) и клиента (Raspberry Pi 4): wg0.conf, systemd-сервисы udp2raw, nftables
- README с инструкцией по развёртыванию и генерации ключей
- .gitignore: исключены бинарный архив udp2raw и генерируемые *.key
- .gitattributes: LF для всех Linux-конфигов (.conf/.service/.sh)
This commit is contained in:
Maxim
2026-07-07 11:37:23 +03:00
commit 6b74cf61df
8 changed files with 315 additions and 0 deletions

53
client/nftables.conf Normal file
View File

@@ -0,0 +1,53 @@
# RASPBERRY PI 4: /etc/nftables.conf
table ip nat {
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 192.168.77.0/24 oifname "usbnet" masquerade
ip saddr 192.168.77.0/24 oifname "wg0" masquerade
}
}
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
ct state established,related accept
iifname "lo" accept
ip protocol icmp accept
ip6 nexthdr ipv6-icmp accept
tcp dport 22 accept
iifname "wlan0" udp dport { 67, 68 } accept
iifname "wlan0" udp dport 53 accept
tcp dport 8080 accept
iifname "wg0" accept
}
chain forward {
type filter hook forward priority filter; policy drop;
iifname "wlan0" oifname "usbnet" accept
iifname "usbnet" oifname "wlan0" ct state established,related accept
iifname "wlan0" oifname "wg0" accept
iifname "wg0" oifname "wlan0" ct state established,related accept
}
chain output {
type filter hook output priority filter; policy accept;
}
}
table ip nm-shared-wlan0 {
chain nat_postrouting {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 192.168.77.0/24 ip daddr != 192.168.77.0/24 masquerade
}
chain filter_forward {
type filter hook forward priority filter; policy accept;
ip daddr 192.168.77.0/24 oifname "wlan0" ct state { established, related } accept
ip saddr 192.168.77.0/24 iifname "wlan0" accept
iifname "wlan0" oifname "wlan0" accept
iifname "wlan0" reject
oifname "wlan0" reject
}
}

View File

@@ -0,0 +1,15 @@
[Unit]
Description=udp2raw Client (FakeTCP)
After=network.target
[Service]
Type=simple
User=root
# Слушает локальный UDP-порт 51821 и транслирует в TCP на внешний IP сервера 95.174.102.77:443
# ВАЖНО: Пароль в параметре -k должен строго совпадать с паролем на сервере!
ExecStart=/usr/local/bin/udp2raw -c -l 127.0.0.1:51821 -r 95.174.102.77:443 -k "MY_CONFIDENTIAL_PASS" --raw-mode faketcp -a
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target

18
client/wg0.conf Normal file
View File

@@ -0,0 +1,18 @@
# RASPBERRY PI 4:
[Interface]
Address = 10.66.66.2/24
# Приватный ключ Raspberry Pi (из файла client_private.key)
PrivateKey = eKiGDY62/9pgFrwzoNIb7URRLPgEHC1W7zHwIIDYQVw=
# Уменьшенный MTU для компенсации оверхеда фейковых заголовков TCP
MTU = 1200
[Peer]
# Публичный ключ Сервера (из файла server_public.key)
PublicKey = dVIwnwxkjan/K278vzhOjp5A79N98j0O1zsYqT24qzs=
# Стучимся в локальный порт udp2raw, запущенный прямо на Малинке
Endpoint = 127.0.0.1:51821
# Маршрутизируем абсолютно весь трафик через VPN туннель
AllowedIPs = 0.0.0.0/0
# Пакет удержания сессии через NAT провайдера
PersistentKeepalive = 25