mirror of
https://github.com/bol-van/zapret.git
synced 2024-11-26 20:20:53 +03:00
bsd docs: pfsense info
This commit is contained in:
parent
bb7faca67e
commit
3345bf55b0
@ -2,7 +2,7 @@
|
||||
|
||||
FreeBSD 11.x+ , OpenBSD 6.x+, partially MacOS Sierra+
|
||||
|
||||
Older versions may work or not. pfSense is not supported.
|
||||
Older versions may work or not.
|
||||
|
||||
## BSD features
|
||||
|
||||
@ -168,6 +168,32 @@ then
|
||||
Its not clear how to do rdr-to outgoing traffic. I could not make route-to scheme work.
|
||||
|
||||
|
||||
## pfsense
|
||||
|
||||
pfsense is based on FreeBSD.
|
||||
Binaries compiled in compatible FreeBSD versions shoud work.
|
||||
It's been tested that dvtws binary from FreeBSD 13 works on pfsense 2.5.2 with FreeBSD kernel 12.2.
|
||||
pfsense uses pf firewall which does not support divert.
|
||||
Fortunately ipfw and ipdivert modules are present and can be kldload-ed.
|
||||
It's also necessary to change firewall order using sysctl commands.
|
||||
Sometimes pf may limit dvtws abilities. It scrubs ip fragments disabling dvtws ipfrag2 desync mode.
|
||||
If something is absent, no ipfw.ko/ipdivert.ko or binaries do not work - try the latest pfsense version.
|
||||
|
||||
/usr/local/etc/rc.d/zapret.sh (chmod 755)
|
||||
```
|
||||
#!/bin/sh
|
||||
|
||||
kldload ipfw
|
||||
kldload ipdivert
|
||||
sysctl net.inet.ip.pfil.outbound=ipfw,pf
|
||||
sysctl net.inet.ip.pfil.inbound=ipfw,pf
|
||||
sysctl net.inet6.ip6.pfil.outbound=ipfw,pf
|
||||
sysctl net.inet6.ip6.pfil.inbound=ipfw,pf
|
||||
ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted not sockarg
|
||||
dvtws --daemon --port 989 --dpi-desync=split2
|
||||
```
|
||||
|
||||
|
||||
## OpenBSD
|
||||
|
||||
In OpenBSD default tpws bind is ipv6 only. to bind to ipv4 specify --bind-addr=0.0.0.0
|
||||
|
30
docs/bsd.txt
30
docs/bsd.txt
@ -6,8 +6,7 @@ FreeBSD 11.x+ , OpenBSD 6.x+, частично MacOS Sierra+
|
||||
На более старых может собираться, может не собираться, может работать или не работать.
|
||||
На FreeBSD 10 собирается и работает dvtws. С tpws есть проблемы из-за слишком старой версии компилятора clang.
|
||||
Вероятно, будет работать, если обновить компилятор.
|
||||
На pfSense если и можно завести, то это не просто. Собранные на FreeBSD с той же версией ядра бинарики не работают.
|
||||
Статические бинарики тоже. Модуль ipdivert отсутствует.
|
||||
Возможна прикрутка к последним версиям pfsense без веб интерфейса в ручном режиме через консоль.
|
||||
|
||||
|
||||
Особенности BSD систем
|
||||
@ -164,6 +163,33 @@ rdr pass on em1 inet proto tcp to port {80,443} -> 127.0.0.1 port 988
|
||||
В PF непонятно как делать rdr-to с той же системы, где работает proxy. Вариант с route-to у меня не заработал.
|
||||
|
||||
|
||||
pfsense
|
||||
-------
|
||||
|
||||
pfsense основано на FreeBSD.
|
||||
На последних версиях pfsense работают бинарики, собранные в FreeBSD совместимых версий.
|
||||
Проверено, что бинарик dvtws с FreeBSD 13 сработал на pfsense 2.5.2 с ядром FreeBSD 12.2.
|
||||
pfsense использует фаервол pf, а он не поддерживает divert.
|
||||
К счастью, модули ipfw и ipdivert присутствуют в поставке последних версий pfsense.
|
||||
Их можно подгрузить через kldload. Еще требуется изменить порядок фаерволов через sysctl, сделав ipfw первым.
|
||||
В некоторых случаях фаервол pf может ограничивать возможности dvtws, в частности в области фрагментации ip.
|
||||
Присутствуют по умолчанию правила scrub для реассемблинга фрагментов.
|
||||
|
||||
/usr/local/etc/rc.d/zapret.sh (chmod 755)
|
||||
-----------
|
||||
#!/bin/sh
|
||||
|
||||
kldload ipfw
|
||||
kldload ipdivert
|
||||
sysctl net.inet.ip.pfil.outbound=ipfw,pf
|
||||
sysctl net.inet.ip.pfil.inbound=ipfw,pf
|
||||
sysctl net.inet6.ip6.pfil.outbound=ipfw,pf
|
||||
sysctl net.inet6.ip6.pfil.inbound=ipfw,pf
|
||||
ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted not sockarg
|
||||
dvtws --daemon --port 989 --dpi-desync=split2
|
||||
-----------
|
||||
|
||||
|
||||
OpenBSD
|
||||
-------
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user