|
|
@ -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`: |
|
|
|
``` |
|
|
@ -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] |
|
|
@ -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 |
|
|
|
|
|
|
|