Files
vpn-raspberry/client/nftables.conf
Maxim 886ba62ea6 Исправление маршрутизации, порт 25565 и документирование окружения
Транспорт udp2raw: 443 -> 25565/tcp
- 443 на сервере занят nginx (reverse-proxy Gitea totmaxim.ru); udp2raw в
  faketcp через правило -a перехватил бы весь TCP на своём порту и поломал nginx
- server/client .service: -l/-r переведены на 25565

Клиент (Raspberry Pi):
- wg0.conf: PreUp-маршрут 95.174.102.77/32 via 192.168.200.1 dev usbnet
  — устраняет петлю транспорта udp2raw при AllowedIPs=0.0.0.0/0
- nftables.conf: MSS-clamp для wlan0->wg0 (клиенты MTU 1500 vs туннель 1200)

Сервер (Ubuntu за NAT 192.168.31.163):
- wg0.conf: masquerade сужен до 10.66.66.0/24 в изолированной таблице wgfwd
  (не конфликтует с Docker), MSS-clamp на входе в туннель, MTU=1200

README:
- фактическая топология (сервер за NAT, 95.174.102.77 = WAN роутера, проброс
  25565 обязателен), таблица предусловий окружения и проверок
- шаг закрепления net.ipv4.ip_forward, диагностика петли и выхода в интернет
2026-07-07 13:16:50 +03:00

57 lines
2.3 KiB
Plaintext

# 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
# MSS-clamp: клиенты 192.168.77.0/24 имеют MTU 1500 и не знают про туннель 1200.
# Без этого крупные TCP-сессии (сайты, загрузки) залипают при заблокированном PMTUD.
iifname "wlan0" oifname "wg0" tcp flags syn tcp option maxseg size set rt mtu
}
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
}
}