Comments (8)
ipfrag вообще большая боль. фактически он работает только для конкретных целей типа wireguard на своей VPSке, если по пути не порежут. для общего обхода не годится, поскольку сеть враждебна к ip фрагментам. не любит она их.
еще есть проблема с атакой ipfrag на проходящий пакет (forward) , когда используется masquerade.
по идее надо делать так. хватаемся с очень низким приоритетом (predefrag) на output, чтобы до conntrack пометить генеренные в nfqws пакеты как notrack. тогда их conntrack трогать не будет.
НО поскольку генеренный пакет - первый в сеансе, то в conntrack таблице еще нет информации о сеансе.
окей, сгенеренный пакет уходит. в ответ что-то приходит. и создается запись conntrack на основании вошедшего пакета. получается ломается NAT
этой проблемы нет, когда NAT не задействуется. например, в случае исходящего трафика с самой системы
в последней версии добавил переменную POSTNAT_ALL. если ее установить в 1, например в config, то схема nftables переключается на вариант обработки после nat, но в этом случае могут ломаться проходящие атаки на udp
зато нет проблем с bind_fix
from zapret.
ipfrag не будет работать при POSTNAT_ALL=0, потому что NAT не сможет заменить source address на инетовский
from zapret.
Фрагменты имеется в виду что ? ipfrag или split ?
from zapret.
Скрипты zapret хватают пакеты еще до srcnat
chain postrouting {
type filter hook postrouting priority srcnat - 1; policy accept;
......
}
nfqws получает пакеты с локальным IP и отправляет их так же. это нормально.
masquerade работает уже после , как с пропущенными через очередь оригиналами, так и с отправленными nfqws пакетами через raw socket
если адрес после masquerade сохранился, значит пакеты не были обработаны, возможно по какой-то причине свалились в состояние conntrack INVALID. но правила fw4 такое должны отсекать и не пропускать
по поводу ipfrag там вообще отдельная песня. скрипты zapret не поддерживают его использование. только ручками
from zapret.
ipfrag
ipfrag2
from zapret.
если адрес после masquerade сохранился, значит пакеты не были обработаны, возможно по какой-то причине свалились в состояние conntrack INVALID. но правила fw4 такое должны отсекать и не пропускать
Так и есть, я отключил прибивание conntrack INVALID, иначе rawsend: sendto: Operation not permitted
Как найти причины #свалиливания в состояние conntrack INVALID?
from zapret.
И в коде
`
if (!ip_frag(pkt_orig, pkt_orig_len, ipfrag_pos, ident, pkt1, &pkt1_len, pkt2, &pkt2_len))
return res;
DLOG("sending 1st ip fragment 0-%zu len=%zu : ", ipfrag_pos-1, ipfrag_pos)
hexdump_limited_dlog(pkt1,pkt1_len,IP_MAXDUMP); DLOG("\n")
if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , pkt2, pkt2_len))
return res;
DLOG("sending 2nd ip fragment %zu-%zu len=%zu : ", ipfrag_pos, len_transport-1, len_transport-ipfrag_pos)
hexdump_limited_dlog(pkt2,pkt2_len,IP_MAXDUMP); DLOG("\n")
if (!rawsend((struct sockaddr *)&dst, desync_fwmark, ifout , pkt1, pkt1_len))
`
порядок отправки перепутан специально?
from zapret.
Проверьте корректность работы при POSTNAT_ALL=0
from zapret.
Related Issues (20)
- nfqws support for desync dns over tcp HOT 1
- `tpws` gets terminated unexpectedly with SIGSYS HOT 4
- tpws начинает потреблять 100% cpu HOT 3
- TLS inspection bypass HOT 5
- [Question] adding another port than 80/443 HOT 10
- nfq_unbind_pf(): Invalid argument HOT 4
- tpws request_sock_TCP: Possible SYN flooding on port 65530 HOT 3
- Обход замедления твиттера/Twitter HOT 3
- Обход не работает в зависимости от платформы клиента HOT 35
- изи установка на android HOT 13
- Offtopic: а можно ли подобными техниками починить другие протоколы? HOT 1
- zapret along with jool HOT 17
- ya-browser HOT 51
- tpws randomly crashes HOT 5
- POSTNAT=1, UDP, nfqws FAKE, ответ не доходит до узла отправившего запрос из локалки HOT 9
- udp, ipv4, ipfrag2 - теряется фрагмент HOT 17
- Wireguard server with zapret on openwrt HOT 9
- nfqws connbytes range 1:6 HOT 2
- SSL_ERROR_SYSCALL HOT 3
- bad variable name HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zapret.