Я построил свой собственный маршрутизатор debian 10 для своего дома, в основном, чтобы он всегда был включен VPN-маршрутизатор с использованием openvpn, также действующего как DHCP-сервер, и зашифрованного DNS с использованием dnscrypt-proxy. Некоторое время все работало хорошо, пока я не получил подписку amazon prime, которая идентифицирует vpn и блокирует меня. Единственный способ заставить работать amazon Prime - отключить vpn, чего я не хочу делать.
Есть ли способ использовать брандмауэр nftables для маршрутизации трафика на Amazon Prime (primevideo.com или 13.32.45.99) по VPN? В настоящее время я разрешаю исходящий трафик из локальной сети выходить через vpn, но должен быть способ также разрешить трафик на / с этого сайта через интерфейс WAN.
VPN называется tun0 с использованием openvpn.
Интернет из локальной сети осуществляется через интерфейс WAN1 (если VPN не работает, когда он маршрутизируется через tun0).
Вот мой сценарий для nftables при включенном vpn:
#!/bin/sh
nft flush ruleset
nft add table nat
nft add chain nat prerouting { type nat hook prerouting priority 0\; policy accept\;}
nft add rule nat prerouting udp dport 53 ip saddr 192.168.1.0/24 dnat 192.168.1.1:53
nft add chain nat postrouting { type nat hook postrouting priority 100\; policy accept\;}
nft add rule nat postrouting oifname tun0 masquerade
nft add table filter
nft add chain filter input { type filter hook input priority 0\; policy drop\;}
nft add rule filter input iif lo accept
nft add rule filter input tcp dport {22,137-139,445,3702,5357,53,67,68,1194,3000,61208,8080,80,443} accept
nft add rule filter input udp dport {22,137-139,445,3702,5357,53,67,68,1194,3000,61208,8080,80,443} accept
nft add rule filter input icmp type echo-request accept
nft add rule filter input icmp type time-exceeded accept
nft add rule filter input ct state related,established accept
nft add chain filter output { type filter hook output priority 0\; policy drop\;}
nft add rule filter output oif lo accept
nft add rule filter output tcp dport {22,137-139,445,3702,5357,53,67,68,1194,3000,61208,8080,80,443} accept
nft add rule filter output udp dport {22,137-139,445,3702,5357,53,67,68,1194,3000,61208,8080,80,443} accept
nft add rule filter output icmp type echo-request accept
nft add rule filter output icmp type time-exceeded accept
nft add rule filter output ct state new,related,established accept
nft add chain filter forward { type filter hook forward priority 0\; policy accept\;}
nft add rule filter forward ct state related,established accept
и это набор правил nft
table ip nat {
chain prerouting {
type nat hook prerouting priority 0; policy accept;
udp dport domain ip saddr 192.168.1.0/24 dnat to 192.168.1.1:domain
}
chain postrouting {
type nat hook postrouting priority 100; policy accept;
oifname "tun0" masquerade
}
}
table ip filter {
chain input {
type filter hook input priority 0; policy drop;
iif "lo" accept
tcp dport { ssh, domain, 67-68, http, 137-139, https, microsoft-ds, openvpn, 3000, 3702, 5357, http-alt, 61208 } accept
udp dport { ssh, domain, 67-68, http, 137-139, https, microsoft-ds, openvpn, 3000, 3702, 5357, http-alt, 61208 } accept
icmp type echo-request accept
icmp type time-exceeded accept
ct state established,related accept
}
chain output {
type filter hook output priority 0; policy drop;
oif "lo" accept
tcp dport { ssh, domain, 67-68, http, 137-139, https, microsoft-ds, openvpn, 3000, 3702, 5357, http-alt, 61208 } accept
udp dport { ssh, domain, 67-68, http, 137-139, https, microsoft-ds, openvpn, 3000, 3702, 5357, http-alt, 61208 } accept
icmp type echo-request accept
icmp type time-exceeded accept
ct state established,related,new accept
}
chain forward {
type filter hook forward priority 0; policy accept;
ct state established,related accept
}
}
Маршрутизатор - это Debian Buster. Версия NFT - nftables v0.9.0 (Fearless Fosdick).
Любая помощь будет оценена. Спасибо