ব্লগ পুনর্নির্মাণ এবং Starlink থেকে ConoHa VPS-এ শুধুমাত্র TCP যোগাযোগ পৌঁছাতে না পারার সমস্যার সমাধান
হ্যালো, আমি মুনো।
অনেক দিন পর আপডেট করছি। আসলে ২০২৫ সালের শেষের দিকের কিছু নিবন্ধ হারিয়ে গেছে এবং এখন এই অবস্থায় আছি।
Codex
সম্প্রতি Codex ব্যবহার শুরু করেছি এবং এর ডেভেলপমেন্ট অভিজ্ঞতা এতই ভালো যে আমি পুরোপুরি এতে মজে গেছি।
তাই এতদিন ধরে অসন্তুষ্ট থাকা Lume CMS থেকে Codex ব্যবহার করে ব্লগের রি-আর্কিটেক্ট করেছি।
SSG-এর Markdown-এ লিখতে পারা ভালো, কিন্তু আমি বেশিরভাগই ব্রাউজার থেকে আপডেট করতাম, তাই শেষ পর্যন্ত বুঝতে পারলাম যে আমার নিয়মিত ব্যবহৃত এডিটর vim-এ কষ্ট করে লেখার কোনো মানে হয় না।
বিশেষ করে ছবি সংক্রান্ত সমস্যার কারণে সহজে ব্লগ আপডেট করার ইচ্ছা হতো না...।
কোডটি এখানে প্রকাশ করা হয়েছে, তবে বর্তমানে এটি অনেক বাগে (bug) ভরা।
GitHub - haturatu/alleycat: cms
এর রক্ষণাবেক্ষণও আবার শুরু করা যাবে বলে মনে হচ্ছে, তাই আবার কাজ শুরু করেছি। আর আশ্চর্যজনকভাবে Reddit-এ যারা ফর্ক খুঁজছিল তাদের রিপ্লাই দিতে গিয়ে দেখলাম সে আমার রিপোজিটরিতেই issue তৈরি করা ব্যক্তি ছিল।
আসলেই পৃথিবীটা অনেক ছোট।
ConoHa VPS-এ নেটওয়ার্ক পৌঁছানো যাচ্ছে না
তারপর হঠাৎ একটি সমস্যা দেখা দিল।
মনে হচ্ছে Path MTU Black hole নামক কিছু একটা ঘটছিল। এটি সত্যিই অদ্ভুত, WireGuard-এর মতো UDP কমিউনিকেশন প্রয়োজন এমন কিছু বা DNS সার্ভারে পৌঁছানো গেলেও, TCP প্রয়োজন এমন SSH বা HTTP কমিউনিকেশন সিস্টেমগুলো পুরোপুরি কাজ করছিল না।
যেহেতু ConoHa VPS নিজেই FreeBSD-তে হোস্ট করা, তাই অনুসন্ধান করে দেখলাম যে প্যাকেট ফিল্টার ( pf )-এর scrub ফিচার ব্যবহার করে প্যাকেট নরমালাইজেশনের মাধ্যমে সমস্যার সমাধান করা সম্ভব। সেই তথ্য দেখে নিচের মতো সেটআপ করলাম।
set skip on lo
set block-policy drop
exsrv1 = dummy
insrv1 = dummy
insrv2 = dummy
wireguard_clients="{ dummy, dummy, dummy }"
wanint="vtnet0"
wg_ports="{51820}"
scrub in on $wanint all random-id max-mss 1360
scrub out on $wanint all random-id max-mss 1360
~~~
এর ফলে আপলোড এবং ডাউনলোড উভয়ই নরমালাইজড হবে এবং প্যাকেটের সেগমেন্ট সাইজ হবে 1360।
অদ্ভুত বিষয়
এটি ঘটার কারণ হিসেবে Starlink-এর CGNAT-এ কোনো সমস্যা থাকতে পারে বলে ধারণা করা হচ্ছে।
$ mtr -T -P 443 -n -r -c 2 163.44.113.145
Start: 2026-02-24T00:13:53+0900
HOST: thepassenger Loss% Snt Last Avg Best Wrst StDev
1.|-- 192.168.1.1 0.0% 2 1.4 1.5 1.4 1.6 0.1
2.|-- 100.64.0.1 0.0% 2 19.3 19.4 19.3 19.4 0.1
3.|-- 172.16.251.26 0.0% 2 20.1 23.4 20.1 26.8 4.8
4.|-- ??? 100.0 2 0.0 0.0 0.0 0.0 0.0
5.|-- 206.224.70.186 0.0% 2 25.9 22.3 18.8 25.9 5.0
206.224.70.182
6.|-- 210.171.225.229 0.0% 2 23.0 22.7 22.4 23.0 0.4
7.|-- ??? 100.0 2 0.0 0.0 0.0 0.0 0.0
8.|-- 172.71.208.15 0.0% 2 24.9 23.1 21.3 24.9 2.5
162.159.109.42
9.|-- 172.71.4.38 0.0% 2 21.9 23.3 21.9 24.8 2.1
172.64.212.62
10.|-- 172.71.4.35 0.0% 2 63.3 43.8 24.2 63.3 27.7
172.70.221.227
11.|-- ??? 100.0 2 0.0 0.0 0.0 0.0 0.0
12.|-- 172.70.165.3 0.0% 2 44.7 39.8 35.0 44.7 6.9
13.|-- 150.95.7.204 0.0% 2 33.4 34.0 33.4 34.6 0.8
14.|-- 150.95.7.139 0.0% 2 39.2 50.3 39.2 61.4 15.7
15.|-- 150.95.7.147 0.0% 2 36.6 37.2 36.6 37.9 0.9
16.|-- 163.44.113.145 0.0% 2 34.2 35.8 34.2 37.5 2.3
$ tracepath -n -m 30 163.44.113.145
1?: [LOCALHOST] pmtu 1500
1: 192.168.1.1 1.347 মিলিসেকেন্ড
1: 192.168.1.1 1.293 মিলিসেকেন্ড
2: 100.64.0.1 53.580 মিলিসেকেন্ড asymm 3
3: 172.16.251.26 37.025 মিলিসেকেন্ড
4: 206.224.70.208 34.552 মিলিসেকেন্ড (অসম্পূর্ণ রাউটার ত্রুটিপূর্ণ ডেটা পাঠিয়েছে) asymm 7
5: 206.224.70.184 37.307 মিলিসেকেন্ড
6: 210.171.225.229 34.518 মিলিসেকেন্ড
7: কোনো সাড়া নেই8: 172.71.4.43 34.303 মিলিসেকেন্ড
9: 162.159.109.87 39.922 মিলিসেকেন্ড
10: 162.159.109.55 33.535 মিলিসেকেন্ড
11: কোনো সাড়া নেই
12: 172.70.165.3 56.395 মিলিসেকেন্ড asymm 11
13: 150.95.7.204 46.647 মিলিসেকেন্ড asymm 10
14: 150.95.7.139 66.797 মিলিসেকেন্ড asymm 11
15: 150.95.7.147 46.542 মিলিসেকেন্ড asymm 12
16: কোনো সাড়া নেই
17: কোনো সাড়া নেই
18: কোনো সাড়া নেই
মূলত স্টারলিংক এবং আমার নেটওয়ার্ক এনভায়রনমেন্টের ডিফল্ট প্যাকেট সাইজ 1500 হলেও, আমার ধারণা ছিল যে TCP কমিউনিকেশনে এটি ঠিকঠাকভাবে কাজ করে। কিন্তু কেন এটি হঠাৎ এই মাসে ConoHa VPS <-> Starlink-এর মধ্যে ঘটল, তা আমি বুঝতে পারছিলাম না।
যদি স্টারলিংকের মূল CGNAT-এ কোনো সমস্যা থাকত, তবে এই সমস্যাটি আরও আগেই ঘটা স্বাভাবিক ছিল। কিন্তু এটি এতটাই অদ্ভুত একটি ঘটনা যে আমি এখনও এটি নিয়ে বিভ্রান্তিতে আছি।