WireGuard DNS পাঠায় না: একটি ব্যক্তিগত BIND জোন পরিবেশন
হ্যান্ডশেক কী এবং অনুমোদিত IP বহন করে, কখনও রিজলভার নয়। এখানে একটি প্রস্তুত BIND 9 ব্যক্তিগত জোন এবং প্রতি-লিঙ্ক ক্লায়েন্ট নীতি দেওয়া আছে যা এটিকে রিজলভ করায়।
আপনি WireGuard চালু করেছেন, টানেল ট্রাফিক পার করছে, আর অভ্যন্তরীণ নামটি এখনও রিজলভ হচ্ছে না। পরের পদক্ষেপ সাধারণত WireGuard কনফিগারেশনে DNS সেটিং খোঁজা, যেন একটি পিয়ার অন্য কিছু VPN-এর মতো রিজলভার পাঠাতে পারে। তা পারে না। হ্যান্ডশেক কী, ইন্টারফেস ঠিকানা এবং অনুমোদিত IP বহন করে, এবং এতে DNS সার্ভার বা সার্চ ডোমেইনের কোনো ফিল্ড নেই। রিজলভার নীতি ক্লায়েন্টে থাকে, এবং ঠিক সেখানেই সমাধান।
টানেল ও রিজলভার আলাদা চুক্তি
WireGuard ইচ্ছাকৃতভাবে ছোট। আপনি যে ঠিকানাগুলো তালিকাভুক্ত করেন সেগুলোর প্যাকেট এটি সরায় এবং পিয়ার প্রমাণীকরণ করে; এই স্তরের উপরে সবকিছু আপনার নকশা। OpenVPN dhcp-option DNS পাঠাতে পারে কারণ এর নিয়ন্ত্রণ চ্যানেল কনফিগারেশন বহন করে, এবং এই পার্থক্যই দুইয়ের মধ্যে চলাচলকারীদের বিভ্রান্ত করে।
তাই একটি কার্যকর টানেল নাম রিজলভেশন সম্পর্কে কিছুই বলে না। ক্লায়েন্টের 10.90.0.1 পর্যন্ত নিখুঁত রুট থাকতে পারে এবং তবুও তার কোয়েরি পাবলিক রিজলভারে পাঠাতে পারে, তাই উপসর্গটি “VPN DNS ভেঙে দিয়েছে”-এর মতো দেখায়, অথচ DNS কখনও VPN-এর দিকে নির্দেশিত হয়নি।
পুনরাবৃত্তিমূলক রিজলভার না হয়ে জোনটি পরিবেশন করুন
সার্ভার দিকটি একটি ছোট প্রামাণিক জোন, সাধারণ রিজলভার নয়। এই উদাহরণে গেটওয়ে 10.90.0.1, ক্লায়েন্ট 10.90.0.0/24, এবং আপনার আগ্রহের অ্যাপ্লিকেশন 10.60.0.20-এ উত্তর দেয়।
দ্বিতীয় ব্লক বানানোর বদলে এই সেটিংসগুলো বিদ্যমান options ব্লকে মিলিয়ে দিন:
options {
listen-on { 127.0.0.1; 10.90.0.1; };
listen-on-v6 { none; };
allow-query { 127.0.0.1; 10.90.0.0/24; };
allow-transfer { none; };
recursion no;
};তারপর জোন ও তার ফাইল ঘোষণা করুন:
zone "corp.example" {
type primary;
file "/etc/bind/db.corp.example";
};$TTL 300
@ IN SOA ns.corp.example. hostmaster.corp.example. ( 1 3600 600 604800 300 )
@ IN NS ns.corp.example.
ns IN A 10.90.0.1
portal IN A 10.60.0.20রিলোড করার আগে যাচাই করুন, কারণ রিলোডের সময় একটি সিনট্যাক্স ত্রুটি এটি যে সব জোন পরিবেশন করে সেগুলোর জন্য পুরো সার্ভার নামিয়ে দেয়:
named-checkconf
named-checkzone corp.example /etc/bind/db.corp.exampleশুধু VPN ইন্টারফেসে UDP ও TCP 53 খুলুন। পাবলিক ইন্টারফেসে ব্যক্তিগত প্রামাণিকতা প্রকাশ করা কোয়েরি ও গণনা—দুটোই আমন্ত্রণ করে, এবং allow-transfer বন্ধ থাকা উচিত যদি না কোনো সেকেন্ডারি সত্যিই প্রয়োজন হয়।
ক্লায়েন্টকে এর দিকে নির্দেশ করুন, প্রতি লিঙ্কে
ধরে নিন NetworkManager সংযোগের মালিক এবং systemd-resolved রিজলভার। আগে বিদ্যমান নীতি পড়ুন, বিশেষত কোনো রুট রাউটিং ডোমেইন, কারণ একটি ~. এন্ট্রি আপনি যা যোগ করতে যাচ্ছেন তার চেয়ে বেশি অগ্রাধিকার পাবে।
nmcli connection modify wg-office +ipv4.dns 10.90.0.1
nmcli connection modify wg-office +ipv4.dns-search '~corp.example'টিল্ডি হলো গুরুত্বপূর্ণ অক্ষর। এটি ডোমেইনটিকে শুধু-রুট হিসেবে চিহ্নিত করে: corp.example-এর অধীন নামগুলো এই লিঙ্কের DNS সার্ভারে যায়, এবং ডোমেইনটি সংক্ষিপ্ত-নাম সার্চ প্রত্যয় হিসেবে যুক্ত হয় না। এটি ছাড়া portal টাইপ করলে portal.corp.example রিজলভ হতে শুরু করে, যা আপনার জন্য সুবিধাজনক এবং বাকি সবার জন্য বিস্ময়কর। টিল্ডিটি কোটের ভেতরে রাখুন, কারণ কোট ছাড়া একটি শেল এক্সপ্যানশন যা আপনার হোম ডিরেক্টরির দিকে নির্দেশ করার অপেক্ষায় থাকে।
ইন্টারফেসের মালিক ম্যানেজারের মাধ্যমে পরিবর্তন প্রয়োগ করুন, তারপর সংযোগটি আবার সংযুক্ত করুন। একই ইন্টারফেসের জন্য দ্বিতীয় wg-quick ইনস্ট্যান্স চালু করবেন না; দুই মালিক রুট নিয়ে লড়বে এবং তাদের একজন সবচেয়ে খারাপ মুহূর্তে জিতবে।
নামের আগে পথ যাচাই করুন
ক্লায়েন্ট থেকে নামটি কোয়েরি করুন এবং উত্তর ও তা তৈরি করা সার্ভার—দুটোই নিশ্চিত করুন:
resolvectl query portal.corp.exampleযদি এটি 10.60.0.20 ফেরত দেয়, DNS চুক্তি সম্পন্ন। যদি সময় শেষ হয়ে যায়, আগে 10.90.0.1-এর রুট দেখুন, তারপর ফায়ারওয়াল নিয়ম, তারপর সার্ভারে allow-query। এই সেটআপে নাম রিজলভেশন ব্যর্থতা প্রায় সবসময়ই পৌঁছানোর ক্ষমতা বা ACL, জোন ফাইল নয়। ক্লায়েন্ট থেকে বাইরের দিকে কাজ করুন, কারণ সার্ভার আপনাকে বলতে পারে না কেন একটি কোয়েরি কখনও পৌঁছায়নি।
মনে রাখুন অ্যাপ্লিকেশনটির এখনও নিজের রুট এবং নিজের সার্ভিস অনুমতি দরকার। একটি রিজলভ হওয়া নাম যা অগম্য ঠিকানার দিকে নির্দেশ করে তা একই পোশাকে ভিন্ন ব্যর্থতা।
যা এখনও স্বয়ংক্রিয় নয়
যেসব অ্যাপ্লিকেশনের নিজস্ব রিজলভার লজিক আছে তারা সিস্টেম রিজলভার সম্পূর্ণ উপেক্ষা করে, এবং nmcli কতবার ব্যবহার করলেও তা বদলায় না। যেসব ডিপ্লয়মেন্ট DNSSEC যাচাই করে তাদের ব্যক্তিগত জোনের জন্য স্পষ্ট ট্রাস্ট অ্যাঙ্কর নকশা দরকার; উত্তরটি যাচাই বন্ধ করার সার্বজনীন নির্দেশ নয়। আপনার ব্যবহারকারীরা যে ক্লায়েন্ট সফটওয়্যার চালান সেটি দিয়েই পরীক্ষা করুন, এমন টুল দিয়ে নয় যা ঘটনাক্রমে সিস্টেম রিজলভার ব্যবহার করে। এই দুইয়ের মধ্যের ফাঁকটাই পুরো বাগ রিপোর্ট।
ফ্লিটগুলো তাদের প্রভিশনিং সিস্টেমের মাধ্যমে এই ক্লায়েন্ট নীতি স্বয়ংক্রিয় করতে পারে, কিন্তু নীতি একজন মালিকসহ আলাদা বস্তুই থাকে। BIND 9 রেফারেন্স উপরে ব্যবহৃত লিসেনার ও কোয়েরি নিয়ন্ত্রণগুলো কভার করে, এবং আপনার ইনস্টল করা সংস্করণের আচরণ নিশ্চিত করার সঠিক জায়গা এটি।
পরের পদক্ষেপ: জোনের সিরিয়াল বৃদ্ধি এবং যাচাইয়ের কমান্ডগুলো আপনার পরিবর্তন পদ্ধতিতে যোগ করুন, যাতে একটি রেকর্ড সম্পাদনা যাচাই ছাড়া প্রোডাকশনে পৌঁছাতে না পারে।