radkesvat / WaterWall

WaterWall is an unidentifiable mechanism for bypassing GFW. This includes the new trojan protocol, explains its underlying ideas, and provides a guide to it.
Mozilla Public License 2.0
377 stars 40 forks source link

سوال در مورد Free Bind #114

Closed lostsoul6 closed 1 month ago

lostsoul6 commented 1 month ago

درود وقت بخیر @radkesvat

داخل روش Free Bind مثالی که زدید تانل tls تک پورت هست . این تانل رو قبلا دیدم افرادی گفتن که هر دو روز دامنه رو میزنن و فیلتر میشه . لطفا اینو با یک روش دیگه که فکر میکنید بهتر هست و مسدودی نداره ترکیب کنید و example بزارید داخل داکیومنت که استفاده کنیم . اگر میشه با mux و halfduplex هم ترکیبش کرد ، لطفا داخل مثال بزارید . تشکر

radkesvat commented 1 month ago

سلام برای اعمال free بایند ؛ تغییر خیلی جزیی لازمه که روی نود های Tcp connector و Tcp listnener اعمال شده ؛ درسته برای مثال از Tls تانل استفاده شده ولی تغییرات روی همین دوتا نود انجام شده فقط ؛ شما کانفیگ مد نظرتونو که قصد دارید استفاده کنید رو اول به صورت ساده ستاپ کنید ؛ بعدش همین تغییرات رو براش انجام بدید ؛ کل تغییراتش در حد ۲ خط هست که توی نود connector اومدیدم ادرس ایپی رو با رنجش قرار دادیم و توی نود listener هم ادرس رو برابر :: قرار دادیم ؛ یه کامند هم روی سرور خارج اجرا کردیم و تمام.

بازم اگه دیدید مبهم هست بگید قرار میدم داخل همون مثال ولی من نظرم فعلا اینه که شلوغ میشه

lostsoul6 commented 1 month ago

درود مهندس @radkesvat

من کانفیگ reality با mux و halfduplex رو خواستم با free bind ترکیب کنم نتونستم . خیلی مبهم شد . اگر امکانش هست همون کانفیگی که توی wiki هست رو با free bind ترکیب کنید و اینجا ایران و خارجش رو بفرستید اگر نمیخواید wiki شلوغ بشه . تشکر

radkesvat commented 1 month ago

سرور ایران:

{
    "name": "iran",
    "nodes": [
        {
            "name": "input",
            "type": "TcpListener",
            "settings": {
                "address": "0.0.0.0",
                "port": [23,65535],
                "nodelay": true
            },
            "next": "port_header"
        },
        {
            "name": "port_header",
            "type": "HeaderClient",
            "settings": {
                "data": "src_context->port"
            },
            "next": "pbclient"
        },
        {
            "name": "pbclient",
            "type": "ProtoBufClient",
            "settings": {},
            "next": "h2client"
        },
        {
            "name": "h2client",
            "type": "Http2Client",
            "settings": {
                "host": "mysni.com",
                "port": 443,
                "path": "/",
                "content-type": "application/grpc",
                "concurrency": 64
            },
            "next": "halfc"
        },
        {
            "name": "halfc",
            "type": "HalfDuplexClient",
            "settings": {},
            "next": "reality_client"
        },
        {
            "name": "reality_client",
            "type": "RealityClient",
            "settings": {
                "sni": "mysni.com",
                "password": "passwd"
            },
            "next": "outbound_to_kharej"
        },
        {
            "name": "outbound_to_kharej",
            "type": "TcpConnector",
            "settings": {
                "nodelay": true,
                "address": "2a01:4f8:1c1b:276c::1/64",
                "port": 443
            }
        }
    ]
}

سرور خارج


{
    "name": "kharej",
    "nodes": [
        {
            "name": "input",
            "type": "TcpListener",
            "settings": {
                "address": "::",
                "port": 443,
                "nodelay": true
            },
            "next": "reality_server"
        },
        {
            "name": "reality_server",
            "type": "RealityServer",
            "settings": {
                "destination": "reality_dest",
                "password": "passwd"
            },
            "next": "halfs"
        },
        {
            "name": "halfs",
            "type": "HalfDuplexServer",
            "settings": {},
            "next": "h2server"
        },
        {
            "name": "h2server",
            "type": "Http2Server",
            "settings": {},
            "next": "pbserver"
        },
        {
            "name": "pbserver",
            "type": "ProtoBufServer",
            "settings": {},
            "next": "port_header"
        },
        {
            "name": "port_header",
            "type": "HeaderServer",
            "settings": {
                "override": "dest_context->port"
            },
            "next": "output"
        },
        {
            "name": "output",
            "type": "TcpConnector",
            "settings": {
                "nodelay": true,
                "address": "127.0.0.1",
                "port": "dest_context->port"
            }
        }
    ]
}
lostsoul6 commented 1 month ago

مهندس جان ممنون بابت پاسخ @radkesvat

کانفیگ ایران مشکلی نداشت اما خارج مشکل داره به نظر و سرویس waterwall اجرا نمیشه

ارور Fatal هم داره :

2024-07-13 14:19:26.983 DEBUG NodeManager: starting node "output"
2024-07-13 14:19:26.983 DEBUG NodeManager: starting node "port_header"
2024-07-13 14:19:26.983 DEBUG NodeManager: starting node "pbserver"
2024-07-13 14:19:26.983 DEBUG NodeManager: starting node "h2server"
2024-07-13 14:19:26.983 DEBUG NodeManager: starting node "halfs"
2024-07-13 14:19:26.983 DEBUG NodeManager: starting node "reality_server"
2024-07-13 14:19:26.983 FATAL RealityServer: destination node not found

امکانش هست کانفیگ خارج رو اصلاح کنید برامون ؟ تشکر

radkesvat commented 1 month ago

بله میفرستم حتما

radkesvat commented 1 month ago

سرور خارج:


{
    "name": "kharej",
    "nodes": [
        {
            "name": "input",
            "type": "TcpListener",
            "settings": {
                "address": "::",
                "port": 443,
                "nodelay": true
            },
            "next": "reality_server"
        },
        {
            "name": "reality_server",
            "type": "RealityServer",
            "settings": {
                "destination": "reality_dest",
                "password": "passwd"
            },
            "next": "halfs"
        },
        {
            "name": "halfs",
            "type": "HalfDuplexServer",
            "settings": {},
            "next": "h2server"
        },
        {
            "name": "h2server",
            "type": "Http2Server",
            "settings": {},
            "next": "pbserver"
        },
        {
            "name": "pbserver",
            "type": "ProtoBufServer",
            "settings": {},
            "next": "port_header"
        },
        {
            "name": "port_header",
            "type": "HeaderServer",
            "settings": {
                "override": "dest_context->port"
            },
            "next": "output"
        },
        {
            "name": "output",
            "type": "TcpConnector",
            "settings": {
                "nodelay": true,
                "address": "127.0.0.1",
                "port": "dest_context->port"
            }
        },
        {
            "name": "reality_dest",
            "type": "TcpConnector",
            "settings": {
                "nodelay": true,
                "address": "mysni.com",
                "port": 443
            }
        }
    ]
}