FreeBSD এবং Nginx ব্যবহার করে বর্তমান ব্লগটিকে IPv6-সামঞ্জস্যপূর্ণ করা হয়েছে

9 min

language: ja bn en es hi pt ru zh-cn zh-tw

নমস্কার, আমি অযোগ্য।

আমার বাড়ির স্মার্টফোন পরিবেশ থেকে আমার সাইটে একটি অনুরোধ পাঠানোর সময় প্রতিক্রিয়ার গতি কিছুটা ধীর ছিল, এবং আমি ভেবেছিলাম এটি আমার কল্পনা হতে পারে, কিন্তু যখন আমি au-এর মোবাইল নেটওয়ার্কে স্যুইচ করে অ্যাক্সেস করলাম, তখন এটি দ্রুত হয়ে গেল। তাই আমি ভাবলাম এটি আমার কল্পনা নয়, এবং সম্ভবত IPv6 সমর্থন না থাকাই এর কারণ ছিল।

কাজ

AAAA রেকর্ড নিবন্ধন

এটি কিছুটা বিভ্রান্তিকর কারণ আমি এখন এটি নিয়ে কাজ করছি, তবে আমি একটি AAAA রেকর্ড নিবন্ধন করব।

$ dig www.soulminingrig.com AAAA

; <<>> DiG 9.20.16 <<>> www.soulminingrig.com AAAA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20103
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.soulminingrig.com.         IN      AAAA

;; ANSWER SECTION:
www.soulminingrig.com.  300     IN      CNAME   edge.soulminingrig.com.
edge.soulminingrig.com. 300     IN      CNAME   pool.soulminingrig.com.
pool.soulminingrig.com. 300     IN      AAAA    2400:8500:2002:3317:163:44:113:145

;; Query time: 50 msec
;; SERVER: 192.168.1.1#53(192.168.1.1) (UDP)
;; WHEN: Tue Apr 07 20:38:20 JST 2026
;; MSG SIZE  rcvd: 116

Nginx

যেমন আছে, Nginx IPv6-এ শুনছে না, তাই আমি সেটিংস পরিবর্তন করব।

# git diff
diff --git a/site/soulminingrig.com.conf b/site/soulminingrig.com.conf
index 35f96e0..10c99d6 100644
--- a/site/soulminingrig.com.conf
+++ b/site/soulminingrig.com.conf
@@ -12,12 +12,14 @@ map $uri $static_cache {
 
 server {
     listen 80;
+    listen [::]:80;
     server_name soulminingrig.com www.soulminingrig.com;
     return 301 https://$host$request_uri;
 }
 
 server {
     listen 443 ssl;
+    listen [::]:443 ssl;
     listen 443 quic reuseport;
     listen [::]:443 quic reuseport;
     http2 on;

আমি একেবারেই খেয়াল করিনি, কিন্তু শুধুমাত্র QUICK অপ্রয়োজনীয়ভাবে IPv6-সামঞ্জস্যপূর্ণ ছিল... যদিও এটি আপস্ট্রিম দ্বারা ব্লক করা হয়েছিল, তাই এর কোনো অর্থ ছিল না...

pf

FreeBSD-এর PacketFilter সেটিংস সম্পাদনা করা হচ্ছে।

set skip on lo
set block-policy drop
set optimization conservative

wanint="vtnet0"

exsrv1 = 163.44.113.145

wg_net = "10.1.0.0/24"
wg_clients="{ 10.1.0.4, 10.1.0.2, 10.1.0.22 }"
wg_ports="{51820}"

scrub in on $wanint all random-id max-mss 1360
scrub out on $wanint all random-id max-mss 1360
scrub in all
scrub out all

nat on $wanint inet from $wg_clients to any -> $wanint

pass in on $wanint proto udp from any to ($wanint) port $wg_ports

block all
pass out quick keep state

~~~

pass in on $wanint proto udp to ($wanint) port 443 keep state
pass in on $wanint proto tcp to ($wanint) port {80, 443} keep state

আমি বর্তমানে pf সেটিংস পর্যালোচনা করছি, তাই কিছু ভুল বিবরণ থাকতে পারে, তবে আমি ($wanint) হিসাবে গতিশীল রাউটিং করছি। এর মানে হল যে যদি এটি IPv6 থেকে আসে, তাহলে নিয়মটি সরাসরি IPv6-এ প্রয়োগ করা হবে, এবং যদি এটি IPv4 হয়, তাহলে এটি সরাসরি IPv4-এ প্রয়োগ করা হবে। এটি অপ্রয়োজনীয় NAT রূপান্তরগুলি দূর করে।

তবে, এইবার আমি শুধুমাত্র HTTP-সম্পর্কিত ট্রাফিকের জন্য সেটিংস পরিবর্তন করেছি। আমার কাছে মেইল সার্ভারের জন্য সেটিংসও আছে যা শুধুমাত্র আমি ব্যবহার করি, কিন্তু একটি মেইল সার্ভারকে IPv6-সামঞ্জস্যপূর্ণ করার খুব বেশি মানে হয় না যখন আমি প্রায় একমাত্র ব্যক্তি যে এটি শুধুমাত্র মেইল ​​গ্রহণের জন্য ব্যবহার করি, তাই আমি এইবার এটি করব না।

যাচাই

$ curl -vvv -so /dev/null https://www.soulminingrig.com 2>&1 | head
20:59:59.614252 [0-x] * [READ] client_reset, clear readers
20:59:59.680564 [0-0] * Host www.soulminingrig.com:443 was resolved.
20:59:59.680678 [0-0] * IPv6: 2400:8500:2002:3317:163:44:113:145
20:59:59.680806 [0-0] * IPv4: 163.44.113.145, 91.98.169.80
20:59:59.680958 [0-0] * [HTTPS-CONNECT] adding wanted h2
20:59:59.681086 [0-0] * [HTTPS-CONNECT] added
20:59:59.681188 [0-0] * [HTTPS-CONNECT] connect, init
20:59:59.681324 [0-0] *   Trying [2400:8500:2002:3317:163:44:113:145]:443...
20:59:59.681605 [0-0] * [HTTPS-CONNECT] connect -> 0, done=0
20:59:59.681721 [0-0] * [HTTPS-CONNECT] Curl_conn_connect(block=0) -> 0, done=0

সম্পন্ন!

আসলে, গতবার যখন ConoHa-এর DNS রেকর্ডে একাধিক A রেকর্ড ছিল এবং একটি A রেকর্ড দ্বারা নির্দেশিত একটি সার্ভার ডাউন হয়ে গিয়েছিল, তখন ট্র্যাফিক স্বয়ংক্রিয়ভাবে একটি লাইভ সার্ভারের A রেকর্ডে রুট করা হয়েছিল, যদিও এটি কেবল রাউন্ড-রবিন ছিল। মনে হচ্ছে HTTP ক্লায়েন্ট পক্ষ রিট্রাই বা অন্য কোনো উপায়ে এটি ভালোভাবে পরিচালনা করছিল।

এভাবে, স্টারলিঙ্ক আইপি থেকে, যেখানে এক্সিট আইপি মূলত একটি গ্লোবাল IPv6 আইপি, NAT রূপান্তর এবং প্রতিক্রিয়ার বিলম্বের মতো সমস্যাগুলি সফলভাবে দূর হয়েছে। আহা, এটা ভালো হয়েছে।

ভবিষ্যতের কথা

বাস্তবে, "IPv6 মনে রাখুন" মানুষের পক্ষে মনে রাখা এবং পরিচালনা করা বেশ কঠিন বলে মনে হয়, এবং মনে হচ্ছে ভবিষ্যতে এটি অপব্যবহারের জন্য বেশ ব্যবহৃত হবে।

একই সময়ে, এই পরিবর্তনের সাথে, আমি fail2ban সেটিংস পুনরায় পরীক্ষা করেছি যাতে IPv6-এর সাথে কোনো সমস্যা না হয়।

আমরা এমন একটি যুগে আছি যেখানে NAT রূপান্তর ইত্যাদির মাধ্যমে সহাবস্থান সম্ভব, কিন্তু একটি উন্মুক্ত ইন্টারনেট হিসাবে, WWW হিসাবে CGNAT একটি বন্ধ ইন্টারনেট তৈরি করার মতো মনে হয়, এবং সম্ভবত IPv6 এখন একটি মুক্ত ইন্টারনেটের জন্য আরও উপযুক্ত। তবে, যদি জিজ্ঞাসা করা হয় যে আমি সচেতনভাবে IPv6 ব্যবহার করতে চাই কিনা, তাহলে এটি একটি "হুম" অনুভূতি।

আমার সার্ভারের লগ ফাইল থেকে যতদূর দেখতে পাচ্ছি, প্রায় 90% ক্লায়েন্ট এখনও IPv4 বলে মনে হচ্ছে, তবে এটিও কারণ প্রচুর বট আসছে। প্রকৃত ব্যবহারকারীর অনুরোধের কতটুকু IPv6, তা বলতে গেলে, এটি সত্যিই বেশ বিস্তৃত হতে পারে।

তবে, সমর্থন করা বা না করার বিষয়ে, শুধুমাত্র HTTP-এর জন্য বললে, এটি সমর্থন করা ভালো বলে মনে হয়। কিন্তু ঝুঁকি হল নিরাপত্তা দুর্বলতার ঝুঁকি। একে মানুষের অলসতাও বলা হয়। গতিশীল WAF এবং অনুরূপ সিস্টেমগুলি শুধুমাত্র IPv4-এর জন্য কনফিগার করা থাকতে পারে এমন সম্ভাবনা উড়িয়ে দেওয়া যায় না, এবং যদি এটি একটি উল্লেখযোগ্য স্কেলে বাস্তবায়ন হয়, তাহলে WAF এবং নেটওয়ার্ক নিয়মগুলি সংগঠিত করা থেকে শুরু করা ভালো হতে পারে বলে আমি মনে করি।

Related Posts