Open DeAlexPesh opened 1 month ago
wan интерфейс - тот, на котором сидит ип от провайдера номера правил могут быть одни и те же они нужны для последовательности их обработки и если удалять по номеру - снесутся все
фильтр с ип не нужен если идет трансмит на инет, то этого уже достаточно
а если нужен не any
а ограниченное число ip или только подсеть?
при применении правил не закроются ли все остальные явно не прописанные соединения?
теоретически вот так должно работать?
#!/bin/sh
SERVICE_NAME="dvtws"
SERVICE_CMD="/usr/local/sbin/dvtws"
NETIF="pppoe1"
is_service_running() {
pgrep -f "${SERVICE_CMD}" > /dev/null && return 0 || return 1
}
require_module() {
if ! kldstat | grep "${1}" > /dev/null; then
if ! kldload "${1}"; then
exit 1
fi
fi
echo "Модуль ${1} загружен."
return 1
}
mng_service() {
if [ "${1}" = "start" ]; then
require_module ipdivert
require_module ipfw
ipfw delete 100
ipfw add 100 divert 989 tcp from any to any 80,443 out not diverted xmit "$NETIF"
ipfw add 100 divert 989 tcp from any 80,443 to any tcpflags syn,ack in not diverted recv "$NETIF"
ipfw add 100 divert 989 udp from any to any 443 out not diverted xmit "$NETIF"
${SERVICE_CMD} \
--debug=1 \
--daemon \
--port=989 \
--параметры \
--hostlist=/opt/zapret.auto \
--hostlist-exclude=/opt/zapret.exclude \
| logger -t "${SERVICE_NAME}" >/dev/null 2>&1 &
elif [ "${1}" = "stop" ]; then
ipfw delete 100
pkill -f "${SERVICE_CMD}"
fi
}
show_service_status() {
if is_service_running; then
echo "Сервис ${SERVICE_NAME} запущен."
else
echo "Сервис ${SERVICE_NAME} не работает."
fi
}
case "${1}" in
start)
mng_service start
;;
stop)
mng_service stop
;;
status)
show_service_status
;;
restart)
mng_service stop
sleep 2
mng_service start
;;
*)
echo "Usage: ${SERVICE_NAME} {start|stop|status|restart}"
exit 1
;;
esac
а если нужен не
any
а ограниченное число ip или только подсеть? при применении правил не закроются ли все остальные явно не прописанные соединения?
значит пишите from если несколько адресов, может быть имеет смысл сделать table и еще надо в --debug посмотреть приходят ли пакеты до или после nat после nat уже нет локального адреса
дивертится лишь то, что попадает под правило если не будет dvtws, то все по этому правилу будет дропнуто перестанет работать только веб, тк прописаны порты
получается вот эта запись верна?
SUBNET="192.168.0.0/16"
NETIF="pppoe1"
...
ipfw delete 100
ipfw add 100 divert 989 tcp from "$SUBNET" to any 80,443 out not diverted xmit "$NETIF"
ipfw add 100 divert 989 tcp from "$SUBNET" 80,443 to any tcpflags syn,ack in not diverted recv "$NETIF"
ipfw add 100 divert 989 udp from "$SUBNET" to any 443 out not diverted xmit "$NETIF"
Если кроме 192.168.0.0/16 кто-то еще ходит через этот шлюз, тогда from имеет смысл. Иначе - нет. так же from $SUBNET некорректно для recv. там source будет инетовский адрес
в общем сделал так:
#!/bin/sh
SERVICE_NAME="dvtws"
SERVICE_CMD="/usr/local/sbin/dvtws"
# SUBNET="192.168.0.0/16"
SUBNET="192.168.1.мой_ип"
NETIF="pppoe1"
is_service_running() {
pgrep -f "${SERVICE_CMD}" > /dev/null && return 0 || return 1
}
require_module() {
if ! kldstat | grep "${1}" > /dev/null; then
if ! kldload "${1}"; then
exit 1
fi
fi
echo "Модуль ${1} загружен."
return 1
}
mng_service() {
if [ "${1}" = "start" ]; then
require_module ipdivert
require_module ipfw
ipfw delete 100
ipfw add 100 divert 989 tcp from "$SUBNET" to any 80,443 out not diverted xmit "$NETIF"
ipfw add 100 divert 989 tcp from any 80,443 to "$SUBNET" tcpflags syn,ack in not diverted recv "$NETIF"
ipfw add 100 divert 989 udp from "$SUBNET" to any 443 out not diverted xmit "$NETIF"
${SERVICE_CMD} \
--debug=1 \
--port=989 \
--мои_параметры \
--hostlist=/opt/zapret.auto \
--hostlist-exclude=/opt/zapret.exclude \
| logger -t "${SERVICE_NAME}" >/dev/null 2>&1 &
elif [ "${1}" = "stop" ]; then
ipfw delete 100
pkill -f "${SERVICE_CMD}"
fi
}
show_service_status() {
if is_service_running; then
echo "Сервис ${SERVICE_NAME} запущен."
else
echo "Сервис ${SERVICE_NAME} не работает."
fi
}
case "${1}" in
start)
mng_service start
;;
stop)
mng_service stop
;;
status)
show_service_status
;;
restart)
mng_service stop
sleep 2
mng_service start
;;
*)
echo "Usage: ${SERVICE_NAME} {start|stop|status|restart}"
exit 1
;;
esac
в логах вижу и больше ничего не меняется:
read 1200 bytes from /opt/quic_initial_www_google_com.bin
adding low-priority default empty desync profile
we have 1 user defined desync profile(s) and default low priority profile 0
Loading hostlist /opt/zapret.auto
loading plain text list
Loaded 28 hosts from /opt/zapret.auto
Loading hostlist /opt/zapret.exclude
loading plain text list
Loaded 6 hosts from /opt/zapret.exclude
initializing conntrack with timeouts tcp=60:300:60 udp=60
creating divert4 socket
binding divert4 socket
set_socket_buffers fd=3 rcvbuf=131072 sndbuf=65536
fd=3 SO_RCVBUF=131072
fd=3 SO_SNDBUF=65536
initializing raw sockets
set_socket_buffers fd=4 rcvbuf=4096 sndbuf=65536
fd=4 SO_RCVBUF=4096
fd=4 SO_SNDBUF=65536
set_socket_buffers fd=5 rcvbuf=4096 sndbuf=65536
fd=5 SO_RCVBUF=4096
fd=5 SO_SNDBUF=65536
Running as UID=2147483647 GID=2147483647
где можно отладить?
с any
вместо $SUBNET
трафик вроде пошел, но локальных ip там не вижу
судя по ipfw show
проходит только recv трафик
00100 0 0 divert 989 tcp from any to any 80,443 out not diverted xmit pppoe1
00100 5332 292880 divert 989 tcp from any 80,443 to any tcpflags syn,ack in not diverted recv pppoe1
00100 0 0 divert 989 udp from any to any 443 out not diverted xmit pppoe1
65535 45775182 47653985658 allow ip from any to any
ipfw add 100 divert 989 tcp from any 80,443 to "$SUBNET" tcpflags syn,ack in not diverted recv "$NETIF"
это тоже под сомнением. если правило выполняется до nat, то будет to адрес самой системы с pfsense если так хочется фильтровать по ip клиента, xmit надо делать до nat, а recv после nat но в Pfsense nat делает pf. на каком этапе будет вызван ipfw - не факт еще, надо проверять и смотреть
чтобы Ipfw заработал под pfsense, нужно пнуть pf сначала pfctl -d; pfctl -e см docs/bsd.txt
pfctl -d; pfctl -e
только в документации нашел хотел написать что трафик пошел... теперь найти бы еще рабочий вариант дурения в сетях РТ... хотябы ютрубу
теперь найти бы еще рабочий вариант дурения в сетях РТ... хотябы ютрубу
Попробуйте ключи (и bin файлы tls и quic) из конфига этого пакета. https://github.com/Anonym-tsk/nfqws-keenetic/blob/master/etc/nfqws/nfqws.conf
В итоге удалось-ли решить вопрос с ютрубом через dvtws?
В итоге удалось ли решить вопрос с ютрубом через dvtws?
На билайне шпд dvtws на OPNsense работает отменно на всех устройствах в сети.
--dpi-desync=fake,split \
--dpi-desync-split-pos=2 \
--dpi-desync-autottl=1:3-20 \
--dpi-desync-fooling=md5sig,badsum \
Везёт Вам. Попробовал Ваши параметры, увы не работают. Провайдер JustLan. До этого хорошо работало с tpws, но лавочку прикрыли.
Можно поподробнее описание как установить чтоб решить проблемы с фаерволами ?
У кого-то получилось завезти эту связку? Возможно, глупый вопрос, но как можно завернуть трафик на divert порт? стандартными средствами pfctl это реально ну или скриптом при запуске dvtws? или, возможно, используя tpws как прокси без "дурения"? запускаю так:
не совсем понимаю как работает ipfw нашел правила и немного изменил под себя (ориентируясь по ощущениям)
но почему все правила под номером 100 и можно ли сделать так чтобы учитывался только трафик из внутренней сети
$SUBNET
во внешнюю сеть! $SUBNET
? и не заблокирует ли мне оно все остальное после применения этих правил? igb1 - должен быть физический WAN интерфейс или если это ppoe1 подключение им?