@bivlked, спасибо за скрипт. Поставил вместо стандартной установки amneziaVPN, с конфигом из которой почему-то не хотел работать throne. С вашим завелось.
Так как у меня уже стоит настроенный xray для VLESS с маршрутизацией и нужными настройками DNS, то решил не дублировать всё это для AWG, а сделать проброс трафика из интерфейса AWG в xray через механизм tproxy, и рулить всем в конфиге xray. Поделюсь конфигурацией, может кому-то пригодится:
- Создать файл
/etc/nftables.conf:
#!/usr/sbin/nft -f
define RESERVED_IP = {
10.0.0.0/8,
100.64.0.0/10,
127.0.0.0/8,
169.254.0.0/16,
172.16.0.0/12,
192.0.0.0/24,
224.0.0.0/4,
240.0.0.0/4,
255.255.255.255/32
}
table ip xray {
chain prerouting {
type filter hook prerouting priority mangle; policy accept;
iifname != "awg0" return
fib daddr type local return
ip daddr $RESERVED_IP return
ip protocol tcp tproxy to 127.0.0.1:44444 meta mark set 1
ip protocol udp tproxy to 127.0.0.1:44444 meta mark set 1
}
}
- В файле
/etc/amnezia/amneziawg/awg0.confзаменитьPostUpиPostDownна строки ниже (также заменитьeth0на свой интерфейс):
...
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; iptables -t mangle -A FORWARD -o %i -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1240; iptables -t mangle -A FORWARD -i %i -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1240
PostUp = nft -f /etc/nftables.conf
PostUp = ip rule add fwmark 1 table 100
PostUp = ip route add local default dev lo table 100
...
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; iptables -t mangle -D FORWARD -o %i -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1240; iptables -t mangle -D FORWARD -i %i -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1240
PostDown = nft delete table ip xray
PostDown = ip rule del fwmark 1 table 100
PostDown = ip route del local default dev lo table 100
...
- В xray создать inbound:
{
"tag": "tproxy-in",
"port": 44444,
"protocol": "dokodemo-door",
"settings": {
"network": "tcp,udp",
"followRedirect": true
},
"streamSettings": {
"sockopt": {
"tproxy": "tproxy"
}
}
}
Опционально: для перехвата DNS добавить:
- в routing.rules:
{
"type": "field",
"inboundTag": ["tproxy-in"],
"port": 53,
"outboundTag": "dns-out"
}
- в outbounds:
{
"tag": "dns-out",
"protocol": "dns"
}
- Если используется ufw, то добавить в файл
/etc/ufw/before.rulesпосле строки# End required lines:
-A ufw-before-input -i awg0 -m mark --mark 0x1 -j ACCEPT
Применить:
ufw reload
systemctl restart xray
systemctl restart awg-quick@awg0
Опционально можно теперь почистить правила и настройки, связанные с форвардингом, но они вроде и не мешают.
Проверял на окружении: Ubuntu 26.04, amneziawg-installer v5.18.3, Xray 26.3.27