Loading docs/bsd.en.md +20 −2 Original line number Diff line number Diff line Loading @@ -312,7 +312,7 @@ In OpenBSD default `tpws` bind is ipv6 only. To bind to ipv4 specify Use `--bind-addr=0.0.0.0 --bind-addr=::` to achieve the same default bind as in others OSes. `tpws` for forwarded traffic only : `tpws` for forwarded traffic only (OLDER OS versions): `/etc/pf.conf`: ``` Loading @@ -323,13 +323,31 @@ pass in quick on em1 inet6 proto tcp to port {80,443} rdr-to ::1 port 988 Then: ``` pfctl -f /etc/pf.conf tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 --enable-pf ``` Its not clear how to do rdr-to outgoing traffic. I could not make route-to scheme work. rdr-to support is done using /dev/pf, that's why transparent mode requires root. `tpws` for forwarded traffic only (NEWER OS versions): ``` pass on em1 inet proto tcp to port {80,443} divert-to 127.0.0.1 port 989 pass on em1 inet6 proto tcp to port {80,443} divert-to ::1 port 989 ``` Then: ``` pfctl -f /etc/pf.conf tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 ``` tpws must be bound exactly to diverted IPs, not `0.0.0.0` or `::`. It's also not clear how to divert connections from local system. `dvtws` for all traffic: `/etc/pf.conf`: Loading docs/bsd.md +27 −3 Original line number Diff line number Diff line Loading @@ -392,7 +392,11 @@ rdr pass on em1 inet6 proto tcp from any to any port = https -> fe80::20c:29ff:5 Но лучше все же так не делать, а сажать на определенные внутренние адреса или интерфейсы. ### tpws для проходящего трафика ### tpws для проходящего трафика (старая схема, не работает в новых версиях) В этом варианте tpws обращается явно к редиректору pf и пытается от него получить оригинальный адрес назначения. Как показывает практика, это не работает на новых версиях OpenBSD. Возвращается ошибка ioctl. Последняя проверенная версия, где это работает, - 6.8 . Между 6.8 и 7.4 разработчики сломали этот механизм. `/etc/pf.conf`: ``` Loading @@ -402,7 +406,7 @@ pass in quick on em1 inet6 proto tcp to port {80,443} rdr-to ::1 port 988 ```sh $ pfctl -f /etc/pf.conf $ tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 $ tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 --enable-pf ``` > [!NOTE] Loading @@ -411,6 +415,26 @@ $ tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 > Поэтому этот вариант годится для squid, берущего адрес из протокола прикладного уровня, но не годится для tpws, полагающегося на метаданные ОС. > Поддержка rdr-to реализована через `/dev/pf`, поэтому прозрачный режим **требует root**. ### tpws для проходящего трафика (новые системы) В новых версиях предлагается использовать divert-to вместо rdr-to. Минимально проверенная версия, где это работает, 7.4. Может работать или не работать на более старых - исследование не проводилось. `/etc/pf.conf`: ``` pass on em1 inet proto tcp to port {80,443} divert-to 127.0.0.1 port 989 pass on em1 inet6 proto tcp to port {80,443} divert-to ::1 port 989 ``` tpws должен иметь бинд на точно такой адрес, который указан в правилах pf. `0.0.0.0` или `::` не работает. ```sh $ pfctl -f /etc/pf.conf $ tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 ``` > [!NOTE] > Так же не понятно как делать divert с самой системы, где работает tpws. ### Запуск dvtws Loading docs/bsdfw.txt +13 −0 Original line number Diff line number Diff line Loading @@ -56,14 +56,27 @@ sysctl net.inet6.ip6.forwarding=1 OpenBSD PF : (OLD OpenBSD versions) ; dont know how to rdr-to from local system. doesn't seem to work. only works for routed traffic. /etc/pf.conf pass in quick on em1 inet proto tcp to port {80,443} rdr-to 127.0.0.1 port 988 pass in quick on em1 inet6 proto tcp to port {80,443} rdr-to ::1 port 988 pfctl -f /etc/pf.conf /opt/zapret/tpws/tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 --enable-pf (NEW OpenBSD versions) ; dont know how to divert-to from local system /etc/pf.conf pass on em1 inet proto tcp to port {80,443} divert-to 127.0.0.1 port 989 pass on em1 inet6 proto tcp to port {80,443} divert-to ::1 port 989 pfctl -f /etc/pf.conf /opt/zapret/tpws/tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 ; dvtws works both for routed and local pass in quick on em0 proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state Loading Loading
docs/bsd.en.md +20 −2 Original line number Diff line number Diff line Loading @@ -312,7 +312,7 @@ In OpenBSD default `tpws` bind is ipv6 only. To bind to ipv4 specify Use `--bind-addr=0.0.0.0 --bind-addr=::` to achieve the same default bind as in others OSes. `tpws` for forwarded traffic only : `tpws` for forwarded traffic only (OLDER OS versions): `/etc/pf.conf`: ``` Loading @@ -323,13 +323,31 @@ pass in quick on em1 inet6 proto tcp to port {80,443} rdr-to ::1 port 988 Then: ``` pfctl -f /etc/pf.conf tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 --enable-pf ``` Its not clear how to do rdr-to outgoing traffic. I could not make route-to scheme work. rdr-to support is done using /dev/pf, that's why transparent mode requires root. `tpws` for forwarded traffic only (NEWER OS versions): ``` pass on em1 inet proto tcp to port {80,443} divert-to 127.0.0.1 port 989 pass on em1 inet6 proto tcp to port {80,443} divert-to ::1 port 989 ``` Then: ``` pfctl -f /etc/pf.conf tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 ``` tpws must be bound exactly to diverted IPs, not `0.0.0.0` or `::`. It's also not clear how to divert connections from local system. `dvtws` for all traffic: `/etc/pf.conf`: Loading
docs/bsd.md +27 −3 Original line number Diff line number Diff line Loading @@ -392,7 +392,11 @@ rdr pass on em1 inet6 proto tcp from any to any port = https -> fe80::20c:29ff:5 Но лучше все же так не делать, а сажать на определенные внутренние адреса или интерфейсы. ### tpws для проходящего трафика ### tpws для проходящего трафика (старая схема, не работает в новых версиях) В этом варианте tpws обращается явно к редиректору pf и пытается от него получить оригинальный адрес назначения. Как показывает практика, это не работает на новых версиях OpenBSD. Возвращается ошибка ioctl. Последняя проверенная версия, где это работает, - 6.8 . Между 6.8 и 7.4 разработчики сломали этот механизм. `/etc/pf.conf`: ``` Loading @@ -402,7 +406,7 @@ pass in quick on em1 inet6 proto tcp to port {80,443} rdr-to ::1 port 988 ```sh $ pfctl -f /etc/pf.conf $ tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 $ tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 --enable-pf ``` > [!NOTE] Loading @@ -411,6 +415,26 @@ $ tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 > Поэтому этот вариант годится для squid, берущего адрес из протокола прикладного уровня, но не годится для tpws, полагающегося на метаданные ОС. > Поддержка rdr-to реализована через `/dev/pf`, поэтому прозрачный режим **требует root**. ### tpws для проходящего трафика (новые системы) В новых версиях предлагается использовать divert-to вместо rdr-to. Минимально проверенная версия, где это работает, 7.4. Может работать или не работать на более старых - исследование не проводилось. `/etc/pf.conf`: ``` pass on em1 inet proto tcp to port {80,443} divert-to 127.0.0.1 port 989 pass on em1 inet6 proto tcp to port {80,443} divert-to ::1 port 989 ``` tpws должен иметь бинд на точно такой адрес, который указан в правилах pf. `0.0.0.0` или `::` не работает. ```sh $ pfctl -f /etc/pf.conf $ tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 ``` > [!NOTE] > Так же не понятно как делать divert с самой системы, где работает tpws. ### Запуск dvtws Loading
docs/bsdfw.txt +13 −0 Original line number Diff line number Diff line Loading @@ -56,14 +56,27 @@ sysctl net.inet6.ip6.forwarding=1 OpenBSD PF : (OLD OpenBSD versions) ; dont know how to rdr-to from local system. doesn't seem to work. only works for routed traffic. /etc/pf.conf pass in quick on em1 inet proto tcp to port {80,443} rdr-to 127.0.0.1 port 988 pass in quick on em1 inet6 proto tcp to port {80,443} rdr-to ::1 port 988 pfctl -f /etc/pf.conf /opt/zapret/tpws/tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 --enable-pf (NEW OpenBSD versions) ; dont know how to divert-to from local system /etc/pf.conf pass on em1 inet proto tcp to port {80,443} divert-to 127.0.0.1 port 989 pass on em1 inet6 proto tcp to port {80,443} divert-to ::1 port 989 pfctl -f /etc/pf.conf /opt/zapret/tpws/tpws --port=988 --user=daemon --bind-addr=::1 --bind-addr=127.0.0.1 ; dvtws works both for routed and local pass in quick on em0 proto tcp from port {80,443} flags SA/SA divert-packet port 989 no state Loading