Network Engineering & Security

Exposing Termux Localhost to the Internet: Cloudflare Zero Trust Tunnel Setup

মোবাইল এনভায়রনমেন্ট বা টারমাক্সে কোনো কাস্টম নোড এপিআই, লোকাল ডাটাবেজ বা অটোমেশন স্ক্রিপ্ট তৈরি করার পর সেটিকে ইন্টারনেটে লাইভ করার জন্য আমরা সাধারণত ngrok বা localtunnel ব্যবহার করি। তবে এগুলোর ফ্রি প্ল্যানে র্যান্ডম ইউআরএল জেনারেট হয়, ব্যান্ডউইথ লিমিটেশন থাকে এবং সিকিউরিটি নিয়ে প্রশ্ন ওঠে।

এই সমস্যার সবচেয়ে নিখুঁত ও এন্টারপ্রাইজ-লেভেল সলিউশন হলো **Cloudflare Zero Trust (Tunnels)**। এটি আপনার লোকাল মোবাইল ডিভাইস এবং ক্লাউডফ্লেয়ার এজ নেটওয়ার্কের মধ্যে একটি স্থায়ী আউটবাউন্ড-ওনলি এনক্রিপ্টেড টানেল তৈরি করে। এর জন্য কোনো পোর্ট ফরওয়ার্ডিং বা পাবলিক আইপির প্রয়োজন হয় না এবং সম্পূর্ণ ফ্রিতে আপনি আপনার কাস্টম ডোমেনকে (যেমন: api.ahyancreations.top) সরাসরি লোকালহোস্ট পোর্টের সাথে কানেক্ট করে দিতে পারবেন।

ধাপ ১: ক্লাউডফ্লেয়ার ড্যাশবোর্ডে টানেল তৈরি

  1. আপনার ব্রাউজারে গিয়ে ক্লাউডফ্লেয়ার ড্যাশবোর্ডে লগইন করুন এবং বামদিকের মেনু থেকে **Zero Trust** প্যানেল ওপেন করুন।
  2. **Networks ➔ Tunnels ➔ Create a Tunnel** অপশনে ক্লিক করুন।
  3. টানেলের একটি নাম দিন (যেমন: "Termux-Core") এবং সেভ করুন।
  4. পরবর্তী পেজে আপনাকে একটি ইউনিক **Tunnel Token** বা সিক্রেট কি দেখানো হবে। সেটি কপি করে আলাদা জায়গায় রাখুন।

ধাপ ২: টারমাক্সে `cloudflared` বাইনারি সেটআপ

এবার আমাদের অ্যান্ড্রয়েড আর্কিটেকচার (সাধারণত ARM64) অনুযায়ী অফিশিয়াল ক্লাউডফ্লেয়ার টানেল ডেমন বাইনারি ফাইলটি মোবাইলের ভেতর ইনস্টল করতে হবে:

# ১. ডিরেক্টরি সেটআপ ও ডাউনলোড
pkg update && pkg install wget libc++ -y
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64

# ২. বাইনারি ফাইলটিকে এক্সিকিউটেবল পারমিশন দেওয়া
chmod +x cloudflared-linux-arm64
mv cloudflared-linux-arm64 $PREFIX/bin/cloudflared

# ৩. ইনস্টলেশন ভেরিফাই করা
cloudflared --version

ধাপ ৩: টানেল এক্সিকিউশন ও ডোমেন রাউটিং

টারমাক্সে আপনার কাস্টম নোড বা পাইথন ব্যাকএন্ড সার্ভারটি যেকোনো পোর্টে সচল করুন (ধরুন পোর্ট 5000)। এবার নিচের কমান্ডের মাধ্যমে আপনার ড্যাশবোর্ড থেকে কপি করা টোকেনটি দিয়ে টানেল স্টার্ট করুন:

cloudflared tunnel run --token YOUR_COPIED_SECRET_TOKEN_HERE

কমান্ডটি রান করার সাথে সাথে টার্মিনালে কানেকশন সাকসেসফুল মেসেজ দেখাবে। এবার ক্লাউডফ্লেয়ার ড্যাশবোর্ডে ফিরে গিয়ে **Public Hostname** ট্যাবে ক্লিক করে আপনার কাস্টম ডোমেনের সাবডোমেন সিলেক্ট করুন (যেমন: api.yourdomain.com) এবং Service Type হিসেবে **HTTP**, URL বক্সে **`localhost:5000`** লিখে সেভ করুন।

নিরাপত্তা মেকানিজম (Zero Trust Firewall): এই আর্কিটেকচারের সবচেয়ে বড় সুবিধা হলো, আপনার লোকাল সার্ভার ইন্টারনেটে উন্মুক্ত হলেও ক্লাউডফ্লেয়ারের গ্লোবাল ডিডস (DDoS) প্রোটেকশন, ডব্লিউএএফ (WAF) ফায়ারওয়াল এবং এসএসএল (HTTPS) সার্টিফিকেট সরাসরি ডোমেনের ওপর একটিভ থাকবে। আপনি চাইলে জিরো ট্রাস্ট ড্যাশবোর্ড থেকে নির্দিষ্ট আইপি বা জিয়ো-লোকেশন ব্লক পলিসি যোগ করে আপনার লোকাল মোবাইল ইনফ্রাস্ট্রাকচারকে শতভাগ হ্যাকার-প্রুফ করে তুলতে পারবেন।