|
|
@ -1,6 +1,6 @@ |
|
|
|
Есть возможность поднять свой VPN сервер ? Не хотим использовать redsocks ? |
|
|
|
Есть возможность поднять свой VPN сервер ? Не хотим использовать redsocks ? |
|
|
|
Хотим завертывать на VPN только часть трафика ? |
|
|
|
Например, из ipsetв zapret только порт tcp:443, из ipban - весь трафик, не только tcp ? |
|
|
|
Например, из ipset zapret только порт tcp:443, из ipban - весь трафик, не только tcp ? |
|
|
|
Да, с VPN такое возможно. |
|
|
|
Опишу понятийно как настраивается policy based routing в openwrt на примере wireguard. |
|
|
|
Вместо wireguard можно использовать openvpn или любой другой. Но wireguard прекрасен сразу несколькими вещами. |
|
|
@ -27,7 +27,7 @@ Wireguard может дать 50 mbps там, где openvpn еле тащит 1 |
|
|
|
Перспективным направлением так же считаю легкую собственную модификацию исходников |
|
|
|
существующих VPN с целью незначительного изменения протокола, которая ломает стандартные |
|
|
|
модули обнаружения в DPI. В wireguard можно добавить в начало пакета handshake лишнее поле, |
|
|
|
заполненное случайным мусором. Разумеется, в таком случае требуется держать изменениую версию |
|
|
|
заполненное случайным мусором. Разумеется, в таком случае требуется держать измененную версию |
|
|
|
как на сервере, так и на клиенте. Если затея срабатывает, то вы получаете максимальную |
|
|
|
скорость, при этом полностью нагибая регулятора. |
|
|
|
Полезная инфа по теме : https://habr.com/ru/post/415977/ |
|
|
@ -254,6 +254,86 @@ iptables -t mangle -C PREROUTING -m set --match-set ipban dst -j MARK --set-mark |
|
|
|
# fw3 restart |
|
|
|
|
|
|
|
|
|
|
|
--- По поводу двойного NAT --- |
|
|
|
|
|
|
|
В описанной конфигурации nat выполняется дважды : на роутере-клиенте происходит замена адреса источника из LAN |
|
|
|
на 192.168.254.3 и на сервере замена 192.168.254.3 на внешний адрес сервера в инете. |
|
|
|
Зачем так делать ? Исключительно для простоты настройки. Но если вы готовы чуток еще поднапрячься и не хотите двойного nat, |
|
|
|
то можете вписать в /etc/config/firewall "masq '0'", на сервер дописать маршрут до вашей подсети lan. |
|
|
|
Чтобы не делать это для каждого клиента, можно отвести под всех клиентов диапазон 192.168.0.0-192.168.127.255 |
|
|
|
и прописать его одним маршрутом. |
|
|
|
|
|
|
|
--/etc/network/interfaces.d/wgvps------------- |
|
|
|
post-up ip route add dev $IFACE 192.168.0.0/17 |
|
|
|
post-down ip route del dev $IFACE 192.168.0.0/17 |
|
|
|
---------------------------------------------- |
|
|
|
|
|
|
|
Отсутствие двойного NAT значительно облегчает проброс портов с внешнего IP vpn сервера в локалку какого-либо клиента. |
|
|
|
Для этого надо выполнить 2 действия : добавить разрешение в фаервол на клиенте и сделать dnat на сервере. |
|
|
|
Пример форварда портов 5001 и 5201 на 192.168.2.2 : |
|
|
|
|
|
|
|
--/etc/config/firewall-------------------------- |
|
|
|
config rule |
|
|
|
option target 'ACCEPT' |
|
|
|
option src 'tunvps' |
|
|
|
option dest 'lan' |
|
|
|
option proto 'tcp udp' |
|
|
|
option dest_port '5001 5201' |
|
|
|
option name 'IPERF' |
|
|
|
------------------------------------------------ |
|
|
|
|
|
|
|
# fw3 restart |
|
|
|
|
|
|
|
--/etc/network/interfaces.d/wgvps------------- |
|
|
|
post-up iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport --ports 5001,5201 -j DNAT --to-destination 192.168.2.2 |
|
|
|
post-up iptables -t nat -A POSTROUTING -o wgvps -d 192.168.2.2 -p tcp -m multiport --dports 5001,5201 -j MASQUERADE |
|
|
|
post-down iptables -t nat -D PREROUTING -i eth0 -p tcp -m multiport --ports 5001,5201 -j DNAT --to-destination 192.168.2.2 |
|
|
|
post-down iptables -t nat -D POSTROUTING -o wgvps -d 192.168.2.2 -p tcp -m multiport --dports 5001,5201 -j MASQUERADE |
|
|
|
---------------------------------------------- |
|
|
|
|
|
|
|
Аналогично можно поступить и с udp. Проброс tcp и udp порта необходим для полноценной работы bittorrent клиента, чтобы работали входящие. |
|
|
|
|
|
|
|
--- Как мне отправлять на vpn весь трафик с bittorrent ? --- |
|
|
|
|
|
|
|
Можно поступить так : посмотрите порт в настройках torrent клиента, убедитесь, что не поставлено "случайный порт", |
|
|
|
добавьте на роутер правило маркировки по порту источника. |
|
|
|
Но мне предпочтительно иное решение. На windows есть замечательная возможность в |
|
|
|
прописать правило установки поля качества обслуживания в заголовках ip пакетов в зависимости от процесса-источника. |
|
|
|
Для windows 7/2008R2 необходимо будет установить ключик реестра и перезагрузить комп : |
|
|
|
# reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\QoS /v "Do not use NLA" /t REG_SZ /d "1" |
|
|
|
Редактировать политику можно в : gpedit.msc -> Computer Configuration -> Windows Settings -> Policy-based QoS |
|
|
|
На win 10 ключик реестра больше не работает, правила qos в gpedit применяются только для профиля домена. |
|
|
|
Необходимо пользоваться командой powershell New-NetQosPolicy. Гуглите хелп по ней. Пример : |
|
|
|
# powershell New-NetQosPolicy -Name "FTP" -AppPathNameMatchCondition "qbittorrent.exe" -DSCPAction 1 |
|
|
|
Однозначно требуется проверка в wireshark или netmon успешности установки поля dscp. Если там по-прежнему 0x00, |
|
|
|
значит что-то не сработало. 0x04 означает DSCP=1 (dscp находится в старших 6 битах). |
|
|
|
|
|
|
|
На роутере в фаер прописываем правило : |
|
|
|
|
|
|
|
--/etc/config/firewall-------------------------- |
|
|
|
config rule |
|
|
|
option target 'MARK' |
|
|
|
option src 'lan' |
|
|
|
option proto 'all' |
|
|
|
option extra '-m dscp --dscp 1' |
|
|
|
option name 'shape-dscp-1' |
|
|
|
option set_mark '0x0800/0x0800' |
|
|
|
------------------------------------------------ |
|
|
|
|
|
|
|
# fw3 restart |
|
|
|
|
|
|
|
Теперь все с полем dscp "1" идет на vpn. Клиент сам решает какой трафик ему нужно забрасывать |
|
|
|
на vpn, перенастраивать роутер не нужно. |
|
|
|
На linux клиенте проще всего будет выставлять dscp в iptables по номеру порта источника : |
|
|
|
|
|
|
|
--/etc/rc.local--------------------------------- |
|
|
|
iptables -t mangle -A OUTPUT -p tcp --sport 23444 -j DSCP --set-dscp 1 |
|
|
|
iptables -t mangle -A OUTPUT -p udp --sport 23444 -j DSCP --set-dscp 1 |
|
|
|
------------------------------------------------ |
|
|
|
|
|
|
|
можно привязываться к pid процесса, но тогда нужно перенастраивать iptables при каждом перезапуске |
|
|
|
торент клиента, это требует рута, и все становится очень неудобно. |
|
|
|
|
|
|
|
--- А если не заработало ? --- |
|
|
|
|
|
|
|
Мануал пишется не как копипастная инструкция, а как помощь уже соображающему. |
|
|
|