
Shadowsocks ও Xray: যখন VPN ব্লক হয়
সূচিপত্র
আমি কাজের মধ্যে VPN নিয়ে প্রায়ই কাজ করি। এটি আমার কাছে তাত্ত্বিক বিষয় নয়, বরং বাস্তব অপারেশন: সাইট সংযোগ করা, গ্রাহকদের কোম্পানির নেটওয়ার্কে প্রবেশ করানো, সার্ভার reachable রাখা, firewall কনফিগার করা, certificate নবায়ন করা, IPsec tunnel স্থিতিশীল করা, SSL VPN client debug করা এবং কোনো location হঠাৎ কেন connect করছে না তা বোঝা।
সাধারণত এটি নির্ভরযোগ্য, কিছুটা একঘেয়ে নেটওয়ার্ক কাজ। সেটাই কাম্য।
কিন্তু কিছু ক্ষেত্রে technically সঠিক VPN-ও যথেষ্ট নয়। China বা Russia-এর মতো কড়া নিয়ন্ত্রিত Internet-ওয়ালা দেশের গ্রাহকদের ক্ষেত্রে দেখা যায়, প্রচলিত VPN protocols block, disrupt বা targetedভাবে detect হয়। আমি Dubai-তে খুব international customer base নিয়ে কাজ করি, তাই এটি abstract বিষয় নয়। অপারেশনাল প্রশ্ন হলো: connection যখন পথে filter হচ্ছে, তখন নিজের infrastructure-এ বৈধ access কীভাবে ধরে রাখা যায়?
এই জায়গায় Shadowsocks, ShadowsocksR, V2Ray, Xray-core, VLESS, Trojan, REALITY বা XHTTP-এর মতো নাম আসে। শুরুতে এগুলো project, fork এবং abbreviation-এর confusing মিশ্রণ মনে হয়। সত্যি বলতে, এর কিছু অংশ আসলেই তাই।
VPN যদি login-এ না, বরং network-এর পথেই fail করে, তাহলে শুধু encryption নয়, recognizability নিয়েও কথা বলতে হয়।
Shadowsocks কেন তৈরি হয়েছিল
Shadowsocks traditional enterprise VPN world থেকে আসেনি। এটি সুন্দর site-to-site solution বানানোর জন্য বা IPsec খুব জটিল বলে তৈরি হয়নি। এর উৎস ছিল সরাসরি: 2012 সালে clowwindy ছদ্মনামের একজন developer heavily filtered network থেকে open Internet-এ পৌঁছানোর জন্য lightweight উপায় চাইছিলেন।
এই প্রয়োজনই design ব্যাখ্যা করে। Shadowsocks হালকা, দ্রুত এবং practical হওয়ার কথা ছিল: heavy VPN client নয়, বড় gateway product নয়, identity management ও compliance reporting-সহ remote access suite নয়। বরং local SOCKS5 proxy, যা traffic encrypt করে blockade-এর বাইরে থাকা server-এ পাঠায়।
প্রয়োজন ছিল না “enterprise security features” বাড়ানো; প্রয়োজন ছিল “এমন network থেকে working exit path”, যেখানে কিছু protocol ও destination filter হয়। তাই Shadowsocks এখনো আকর্ষণীয়, কিন্তু সহজেই ভুল বোঝা যায়। এটি slim transport component হিসেবে ভালো, কিন্তু নিজে নিজে complete enterprise VPN নয়।
2015 সালে গল্পটি রাজনৈতিক হয়: clowwindy GitHub-এ লেখেন যে পুলিশ তাঁর কাছে এসেছে এবং তাঁকে কাজ বন্ধ করতে হবে। এরপর development forks ও অন্য implementations-এর মাধ্যমে চলতে থাকে। এমন tools প্রায়ই খুব concrete technical pain থেকে জন্মায়, তারপর users, developers এবং filtering infrastructure-এর বড় arms race-এর অংশ হয়।
VPN চোখে পড়ে কেন
VPN শুনলে অনেকে প্রথমে encryption ভাবেন। সেটা ঠিক, কিন্তু পুরো গল্প নয়।
কোনো censor, provider বা national firewall encrypted connection-এর content পড়তে না পারলেও সেটিকে disrupt করতে পারে। প্রায়ই envelope চিনলেই যথেষ্ট। IPsec, SSL VPN, WireGuard বা OpenVPN-এর typical features থাকে: ports, packet sizes, handshake patterns, certificate behavior, timing, UDP behavior, retries, errors বা known server IPs।
চিঠির content নয়, envelope ভাবুন। চিঠি encrypted, কিন্তু envelope-এর size, color, stamp এবং একই sender আছে। যে শুধু envelope sort করে, তাকে text পড়তে হয় না। সে তবুও বলতে পারে: এই envelope type চিনি, special inspection-এ পাঠাও।
Network traffic-ও তেমন। Deep Packet Inspection ও Traffic Classification শুধু ports দেখে না; patterns বিশ্লেষণ করে। TLS-এ Client Hello fingerprints, SNI, certificate chains বা ALPN চোখে পড়তে পারে। Fully encrypted protocols-এ early packets-এর অতিরিক্ত random look নিজেই signal হতে পারে। Great Firewall নিয়ে research দেখিয়েছে, packet lengths, entropy এবং early packets-এ printable ASCII characters-ও গুরুত্বপূর্ণ।
অস্বস্তিকর সত্য: “সবকিছু random দেখাচ্ছে” মানেই inconspicuous নয়। কখনও সেটাই suspicious।
Research কী দেখায়
মূল বিষয় শুধু censorship systems “VPN detect” করতে পারে তা নয়। সেটা broadভাবে জানা ছিল। আকর্ষণীয় হলো অনেক detection technically কত সাধারণভাবে শুরু হয়।
একটি ভালো entry point হলো GFW Report-এর measurement work, যা 2020 সালে ACM Internet Measurement Conference-এ উপস্থাপিত হয়েছিল। GFW Report product বা vendor নয়; এটি Great Firewall নিয়ে research ও measurement project।
মূল কথা: এটি কোনো magical decryption attack ছিল না। Great Firewall passive observation এবং active probing মিলিয়েছিল। প্রথমে connection প্রথম data packet-এর length ও entropy দেখে suspicious হয়। তারপর active probes আসে: censor নিজে suspected server-এ connect করে, পুরোনো বা modified packets replay করে এবং দেখে অপর পাশ Shadowsocks server-এর মতো behave করছে কি না।
Admins-এর জন্য এর মানে দুইটি defense layer:
- Traffic passive পর্যবেক্ষণে খুব obvious হওয়া যাবে না।
- Server active tests-এ proxy-এর মতো উত্তর দেবে না।
2023 সালে আরেক GFW study দেখায়, fully encrypted traffic simple heuristics দিয়েও block হতে পারে। প্রথম TCP payload যদি TLS, HTTP বা printable text-এর মতো না হয়ে random data block-এর মতো দেখায়, সেটাই signal হতে পারে। তাই “maximum random” সব সময় best camouflage নয়।
2024 সালে encapsulated TLS handshakes নিয়ে research আরেকটি point যোগ করে: outer tunnel encrypted ও well disguised হলেও inner TLS handshake nested protocol stack-এ pattern হিসেবে দেখা যেতে পারে। Random padding সীমিত সাহায্য করে; stream multiplexing promising, কিন্তু শেষে যদি একটিই application stream visible থাকে, problem নিজে নিজে মেটে না।
Timing ও cross-layer RTTs-ও গুরুত্বপূর্ণ। Proxy transport এবং application sessions-কে একে অপরের তুলনায় shift করে। এই timing differences measurable হতে পারে, client proxy-এর কাছে বা দূরে যেখানেই থাকুক। অন্য header দিয়ে এটি simply configure away করা যায় না।
সিদ্ধান্ত: protocol label নয়, পুরো setup-এর behavior-ই আসল।
Shadowsocks traditional VPN নয়
Shadowsocks-কে প্রায়ই VPN-এর সঙ্গে এক দলে রাখা হয়। দৈনন্দিন ভাষায় বোঝা যায়, কিন্তু technically inaccurate।
Shadowsocks হলো encrypted proxy, loosely SOCKS5-এর ওপর ভিত্তি করে। Local client applications-কে proxy দেয়, traffic encrypt করে remote Shadowsocks server-এ পাঠায়। Server request decrypt করে actual destination-এ connect করে এবং response encrypted path দিয়ে ফেরত পাঠায়।
এটি full VPN-এর চেয়ে lightweight। Shadowsocks পুরো operating system-কে automatically tunnel-এ টানে না। এটি selected traffic অন্য পথে পাঠানোর tool। Client, OS ও extra components দিয়ে VPN-like behavior বানানো যায়, কিন্তু basic idea proxy, site-to-site VPN নয়।
Admins-এর জন্য expectations:
- Shadowsocks clean site-to-site IPsec replace করে না।
- Shadowsocks সব detection থেকে magical protection নয়।
- Shadowsocks useful যখন restrictive network থেকে simple, fast encrypted proxy দরকার।
Shadowsocks technicalভাবে evolve করেছে। পুরোনো stream-cipher setups এখন benchmark হওয়া উচিত নয়। Modern deployments AEAD world-এ হওয়া উচিত, আর Shadowsocks 2022 pre-shared symmetric key base, BLAKE3-based derivation, replay protection ও অন্যান্য correction যোগ করে। কিন্তু specification অনুযায়ী Forward Secrecy নেই। Key compromise হলে clean rotation optional নয়।
shadowsocks-rust modern implementation এবং Docker-এও চলতে পারে। Server side-এ ssserver, client side-এ sslocal থাকে। শুধু যে কোনো password নয়; properly generated secrets, reachable port, current cipher এবং TCP, UDP বা দুটোর clear decision দরকার।
Xray-core কেন আলাদা category
Xray-core শুধু “নতুন Shadowsocks” নয়। এটি proxy ও tunnel scenarios-এর framework-এর মতো।
Xray inbound ও outbound protocols combine করতে পারে: VLESS, VMess, Trojan, Shadowsocks, WireGuard, Hysteria, SOCKS এবং HTTP। এর ওপর RAW, WebSocket, gRPC, XHTTP বা Hysteria transports এবং TLS, REALITY বা XTLS Vision ব্যবহার করা যায়। VMess অনেক পুরোনো setups-এ আছে, কিন্তু নতুন deployment-এ legacy; current Xray setups-এ সাধারণত VLESS কেন্দ্রে থাকে।
Shadowsocks দ্রুত screwdriver। Xray toolbox। Simple setup বানানো যায়, আবার এমন chain-ও বানানো যায় যেখানে local SOCKS/TUN client traffic নেয়, VLESS with REALITY দিয়ে server-এ পাঠায় এবং server freedom outbound দিয়ে Internet-এ forward করে।
VLESS camouflage নয়। এটি UUID-based authentication-সহ lightweight proxy protocol। Confidentiality ও actual camouflage নিচের transport/security layer থেকে আসে, যেমন TLS, REALITY বা XTLS Vision।
REALITY interesting কারণ এটি শুধু “আরেক TLS” করে না। বাইরে থেকে server কোনো real third-party HTTPS site-এর TLS handshake ধার করে। Observer self-made proxy certificate নয়, real website-এর real certificate দেখে। শুধুমাত্র authorized client configured key material দিয়ে বুঝতে পারে যে সে নিজের Xray server-এর সঙ্গে কথা বলছে।
এটি মূলত server-side TLS fingerprint এবং active probing layer address করে। uTLS client side-এ browser Client Hellos imitate করতে সাহায্য করে। তবুও Xray invisibility cloak নয়: timing, packet sizes, ALPN, server behavior এবং nested TLS patterns signal দিতে পারে। XTLS Vision ও XHTTP useful building blocks, guarantee নয়। Basic traffic pattern visible থাকলে সামান্য padding খুব সাহায্য করে না।
Hysteria বা QUIC-এর মতো UDP-based approaches দ্রুত হতে পারে, কিন্তু restrictive networks-এ এগুলো প্রায়ই TCP/443 outgoing-এর তুলনায় বেশি throttle বা block হয়। তাই Xray operation-এ বেশি discipline দরকার: versions pin করা, changes test করা, release notes পড়া এবং forum recommendations blindly copy না করা।
Forks ও নামের বিভ্রান্তি
Research শুরু করলে পুরোনো blog posts, GitHub forks ও half-maintained clients দ্রুত সামনে আসে। এটি tools-গুলোর ইতিহাসের ফল।
Shadowsocks protocol ও ecosystem, যার বেশ কিছু implementations আছে। Modern server চালাতে shadowsocks-rust আজ স্বাভাবিক choice। shadowsocks-libev-এর মতো পুরোনো implementations পরিচিত, কিন্তু project status অনুযায়ী এগুলো legacy বা bugfix-oriented হতে পারে।
ShadowsocksR ছিল extra obfuscation ideas-সহ historical fork। SSR অনেক পুরোনো guide-এ আছে। আজ আমি সতর্ক থাকব: কারণ সব পুরোনো installation খারাপ নয়, কিন্তু client, server, crypto, updates এবং community ভালোভাবে check করা দরকার।
Xray-core V2Ray environment থেকে এসেছে, কিন্তু independentভাবে develop করেছে। পুরোনো V2Ray tutorials সরাসরি Xray-এ প্রয়োগ করা risky। Concepts মিলতে পারে, কিন্তু configurations, features ও recommendations বদলেছে।
V2Fly এখনও relevant, V2Ray community project হিসেবে conservative toolkit। Xray-core REALITY, XTLS Vision ও XHTTP-এর মতো features-এ বেশি aggressive। sing-box-ও modern universal platform হিসেবে আছে। এই article Xray-এ focus করে, কিন্তু lab-এ আমি sing-box-ও দেখব।
Practical advice:
- নতুন simple setup: current implementation-সহ Shadowsocks।
- কঠিন network: clean current design-সহ Xray-core।
- পুরোনো SSR/V2Ray guides: project status ও security আগে check করুন।
- production customer scenario: বুঝে না নিয়ে copy-paste করবেন না।
দুই পাশে কী দরকার
Minimal setup-এ সবসময় দুই side থাকে।
Remote side-এ restrictive network-এর বাইরে server দরকার: VPS, datacenter-এ নিজের server বা customer site থেকে reachable কোনো controlled infrastructure। Server hardened, patched, monitored ও documented হতে হবে। সস্তা instance তুলে ভুলে গেলে long-term risk তৈরি হয়।
Client side-এ suitable program দরকার। Shadowsocks-এ প্রায়ই local SOCKS client বা system proxy সেট করা app থাকে। Xray-এ Xray-based client, TUN mode, router setup বা profile import করা app হতে পারে।
এর মধ্যে দরকার:
- clear purpose
- clean authentication
- current software versions
- controlled DNS resolution
- unnecessary customer data ছাড়া logging
- reachability monitoring
- servers, ports ও secrets rotation plan
- legal ও contractual review
শেষ point decoration নয়। কিছু দেশে এমন tools ব্যবহার আইনগতভাবে problematic হতে পারে। Company context-এও স্পষ্ট হওয়া দরকার: আপনি নিজের systems reachable করছেন, customer networks চালাচ্ছেন, না employees-কে general Internet access দিচ্ছেন।
DNS প্রায়ই underestimated। Browser বা OS যদি destination domain local provider দিয়ে resolve করে, tunnel অর্ধেক helpful। Content proxy দিয়ে গেলেও DNS query destination বলে দেয়। তাই DNS path, IPv6 এবং tunnel break হলে behavior separately test করতে হবে।
Logging sensitive। Troubleshooting-এর জন্য tunnel alive কি না দেখা দরকার; privacy-এর জন্য যত কম সম্ভব store করা দরকার। ভালো setup technical states, latency, error rates ও volume indicators collect করে, full connection lists নয়। Debug logs, TLS keylogs বা unmasked access logs production-এ permanent থাকা উচিত নয়।
Monitoring শুধু container চলছে কি না দেখে শেষ নয়। Real test path tunnel দিয়ে যাচ্ছে কি না, DNS correctly routed কি না, target regions block হয়েছে কি না এবং affected country থেকে behavior আলাদা কি না দেখতে হবে।
Operationalভাবে আমি এটিকে কীভাবে দেখি
আমার কাছে Shadowsocks বা Xray firewall architecture, Zero Trust, MFA বা clean segmentation-এর replacement নয়। এটি special cases-এর transport tool।
Sensible company approach:
- আগে SSL VPN, IPsec বা WireGuard stable কাজ করছে কি না দেখুন।
- Block হলে DNS, port, protocol, server IP, TLS fingerprint ও UDP throttling measure করুন।
- তারপর Shadowsocks বা Xray-core test করুন।
- Tunnel শুধু required destinations-এর জন্য ব্যবহার করুন।
- Server side-এ internal services restrict করুন।
- Monitoring বানান, যাতে customer জানানোর আগে block ধরা পড়ে।
- Fallback রাখুন: second exit, অন্য provider, region বা protocol।
- Secrets ও client profiles per site/user আলাদা করুন।
- Logs ও metrics operation-friendly, কিন্তু unnecessary trails ছাড়া বানান।
Customer access হারালে “আবার চলছে” success মনে হওয়া স্বাভাবিক। কিন্তু পরে cleanup ও documentation জরুরি। নইলে temporary workaround অদৃশ্য production path হয়ে যায়।
Blockades কেন পিছিয়ে এসে ধরে
অন্য পক্ষ detection ক্রমাগত বদলায়।
অনেকে একই Docker Compose, একই port, একই TLS fingerprint, একই domain strategy এবং একই VPS provider ব্যবহার করলে pattern দেখা যায়। তখন abstract “Xray” বা “Shadowsocks” নয়, concrete pattern block হয়: handshakes, packet sizes, IP ranges, typical clients, bad fallbacks বা suspicious error responses।
Camouflage শুধু tool feature নয়। Camouflage operation: একই tools, অন্য domains, অন্য providers, অন্য client profiles এবং অন্য traffic patterns বাস্তবে খুব আলাদা দেখাতে পারে।
তাই project/community claims নিয়ে আমি সতর্ক। Tool যদি বলে undetectable, সেটি project claim। Paper যদি দেখায় real network-এ নির্দিষ্ট feature detect হয়েছে, তার weight আলাদা। Practice-এ দুটোই দরকার: projects-এর innovation speed এবং research-এর sobriety।
আমার মূল্যায়ন
Shadowsocks তখন ভালো, যখন slim, fast, relatively simple encrypted proxy দরকার: first tests, temporary access এবং অত্যন্ত aggressive detection নেই এমন environments।
Xray-core তখন ভালো, যখন network কঠিন, multiple transports দরকার বা VLESS, REALITY, WebSocket, gRPC বা XHTTP consciously ব্যবহার করতে হবে। কিন্তু বেশি understanding দরকার এবং flexibility misconfiguration বাড়ায়।
Customer environments-এ আমি এগুলোকে “VPN replacement” হিসেবে বিক্রি করব না। আমি বলব legitimate access-এর alternative transport path। কম নাটকীয়, কিন্তু বেশি honest।
সবচেয়ে গুরুত্বপূর্ণ পার্থক্য Shadowsocks বনাম Xray নয়। প্রশ্ন হলো: আমি কোন problem solve করছি তা কি বুঝি? Normal remote access হলে normal VPN technology। State বা provider-side protocol detection হলে recognizability, fingerprints এবং operational strategy নিয়ে কথা বলতে হবে। যদি আমি তা পরিষ্কার বুঝিয়ে বলতে না পারি, customer production-এ চালানো উচিত নয়।
উপসংহার
Shadowsocks এবং Xray-core এমন বিশ্বের tools যেখানে network connections শুধু “চলে” বা “চলে না” নয়। কখনও সেগুলো classify, throttle, actively test বা block হয়। International customers support করলে এই বাস্তবতার মুখোমুখি হওয়া অবশ্যম্ভাবী।
বিষয়টি আমার কাছে আকর্ষণীয় কারণ এটি networking-কে concrete করে: encryption, patterns, fingerprints, routing, DNS, operations, law, responsibility এবং working tunnel automatically good design নয়।
আমার next step পরিষ্কার: ছোট lab-এ Shadowsocks ও Xray-core reproduce করতে চাই। Blindly censorship bypass করার জন্য নয়, বরং classic VPN কেন কখনও visible হয় এবং কোন alternatives technically seriousভাবে operate করা যায় তা বুঝতে।
পরের বার পর্যন্ত,
Joe


