VPN-এ Wake-on-LAN কাজ করছে না? ARP এন্ট্রি ঠিক করুন
ম্যাজিক প্যাকেট টানেল পার হয়, কিন্তু রাউটারের ARP এন্ট্রির মেয়াদ শেষ হলে রাউটার সেগুলো ফেলে দেয়। তিনটি ডেলিভারি পথ তুলনা করুন, তারপর MAC ঠিকানাটি স্থায়ীভাবে পিন করুন।
শাটডাউনের ঠিক পরেই একটি ওয়েক প্যাকেট পাঠান, পিসি ফিরে আসে; পরদিন সকালে একই কমান্ড কিছুই করে না। VPN কনফিগারেশনে কিছুই বদলায়নি, এবং পোর্ট ফরওয়ার্ড এখনও সঠিক ঠিকানাতেই নির্দেশ করছে। পার্থক্যটা সময়ে: রাউটারের নেবার টেবিল ঘুমন্ত মেশিনটিকে ভুলে গেছে, তাই ফ্রেমে বসানোর মতো কোনো MAC ঠিকানা তার কাছে নেই। টানেল নয়, এই মেয়াদোত্তীর্ণতাই VPN-এর ওপর বেশিরভাগ Wake-on-LAN ব্যর্থতার ব্যাখ্যা দেয়।
প্রথম ওয়েক কাজ করে, পরেরটি করে না
রাউটার তার নেবার টেবিলে গন্তব্য খুঁজে একটি ফ্রেম ব্যক্তিগত ঠিকানায় পাঠায়। মেশিন চলাকালীন সে ARP-এর উত্তর দেয়, তাই ম্যাপিংটা তাজা থাকে। একবার বন্ধ হলে কেউ উত্তর দেয় না, কয়েক মিনিটে এন্ট্রিটি পুরোনো হয়ে যায়, এবং ওই ঠিকানার পরবর্তী ফ্রেমগুলো ফেলে দেওয়া হয়, যদিও IP ও পোর্ট ফরওয়ার্ড বৈধ থাকে।
প্যাটার্নটা বলে দেয় আপনার কোন ব্যর্থতা। যে ওয়েক একেবারেই কাজ করে না তা ডেলিভারির দিকে ইঙ্গিত করে: ভুল পোর্ট, ভুল গন্তব্য, বা এমন ফায়ারওয়াল যা প্যাকেটটি LAN-এ পৌঁছানোর আগেই ফেলে দেয়। যে ওয়েক একবার কাজ করে তারপর ঘণ্টার পর ঘণ্টা ব্যর্থ হয় তা নেবার এন্ট্রির দিকে ইঙ্গিত করে। যে ওয়েক DHCP লিজ বদলানো পর্যন্ত কাজ করে তা ঠিকানাকরণের দিকে ইঙ্গিত করে, যা একটি রিজার্ভেশন ঠিক করে দেয়।
ARP স্পর্শ করার আগে ঠিকানাটি স্থিতিশীল কিনা নিশ্চিত করুন। লিজ শেষে ঘুমন্ত মেশিন নতুন ঠিকানা নিলে পুরোনো ঠিকানার জন্য পিন করা নেবার এন্ট্রি একইসঙ্গে স্থায়ী ও অকেজো হবে। আগে একটি DHCP রিজার্ভেশন দিন যাতে ঠিকানাটি রিবুটেও টিকে থাকে।
ম্যাজিক প্যাকেটের নেটওয়ার্ক থেকে কী দরকার
পেলোড সহজ: ছয়টি 0xFF বাইটের পর লক্ষ্য MAC ঠিকানা ষোলোবার, মোট 102 বাইট, সাধারণত UDP পোর্ট 9-এ পাঠানো হয়। সমতল LAN-এ এটি ব্রডকাস্ট হিসেবে বেরোয়, প্রতিটি পোর্ট সেটি পায়, আর বন্ধ নেটওয়ার্ক কার্ড নিজের ঠিকানা চিনে নেয়।
VPN-এর মধ্য দিয়ে প্যাকেটটি রাউটারে পৌঁছায় ব্যক্তিগত ঠিকানায় ইউনিকাস্ট হিসেবে, বা সাবনেট-নির্দেশিত ব্রডকাস্ট হিসেবে। ইউনিকাস্ট ক্ষেত্রে রাউটারকে LAN-এ ফ্রেম বসানোর আগে গন্তব্যটি MAC ঠিকানায় সমাধান করতে হয়, আর ঠিক সেই সমাধানটাই ব্যর্থ হয় যখন হোস্ট ঘুমায়।
কিছু টুল 9-এর বদলে পোর্ট 7-এ পাঠায়, আর কিছু অ্যাপ্লায়েন্স ডিফল্টভাবে নির্দেশিত ব্রডকাস্ট ব্লক করে। এগুলো ডেলিভারির ব্যর্থতা, ARP-এর নয়, তাই নেবার টেবিল বদলানোর আগে গন্তব্য ও পোর্ট দেখে নিন।
ঘুমন্ত হোস্টে পৌঁছানোর তিনটি পথ
ফ্রেমটি LAN-এ আনতে আপনার তিনটি বাস্তব উপায় আছে, আর সঠিক পছন্দ নির্ভর করে আপনি কী নিয়ন্ত্রণ করেন তার ওপর।
| Method | What it needs | Where it breaks |
|---|---|---|
| Subnet-directed broadcast | A wake tool that accepts a broadcast address and a router that forwards it | Broadcast filtering, or a tool that only takes a MAC |
| Helper on the LAN | An always-on host such as the VPN server | No suitable host, or the host cannot reach the target VLAN |
| Permanent neighbour entry | Router shell access and the target MAC | NIC replacement or address change |
হেল্পার হোস্ট থাকলে সেটিই বেছে নিন, কারণ এটি লিঙ্কেই ব্রডকাস্ট করে এবং রাউটারে কোনো ব্যতিক্রম দরকার হয় না। রাউটার আগে থেকেই অনুমতি দিলে এবং ওয়েক টুল ঠিকানা সমর্থন করলে নির্দেশিত ব্রডকাস্ট বেছে নিন। দুটোর কোনোটিই না থাকলে এবং রাউটারে কমান্ড চালাতে পারলে স্ট্যাটিক এন্ট্রি বেছে নিন।
এগুলো পরস্পরবিরোধী নয়। স্থায়ী এন্ট্রি ইউনিকাস্ট পথটিকেও ঘুম পার হতে দেয়, যা তখন কাজে লাগে যখন VPN ক্লায়েন্ট কেবল নির্দিষ্ট একটি ঠিকানাতেই পাঠাতে পারে।
নেবার এন্ট্রিটি স্থায়ী করুন
Linux শেলসহ রাউটারে একটি কমান্ডই ম্যাপিং পিন করে। এখানকার মানগুলো একটি উদাহরণ LAN-এর, সেগুলো আপনার নিজের মান দিয়ে বদলাতে হবে:
ip neigh replace 192.168.50.23 lladdr 3c:7c:3f:12:9a:4e dev br0 nud permanent
ip neigh show dev br0 | grep 192.168.50.23এই nud permanent অবস্থাটি ARP টাইমআউট জুড়ে এন্ট্রিটি ধরে রাখে এবং মেশিন বন্ধ থাকলেও ফরওয়ার্ডিংয়ে ব্যবহার করে। দ্বিতীয় কমান্ডটি প্রমাণ করে এন্ট্রিটি আছে এবং দেখায় এটি কোন ইন্টারফেসের, যা আলাদা গেস্ট ব্রিজ বা VLAN-যুক্ত রাউটারে গুরুত্বপূর্ণ।
ফার্মওয়্যার যে হুকই দিক না কেন, সেটির মাধ্যমে রিবুটেও টিকিয়ে রাখুন: /jffs/scripts-এ একটি স্ক্রিপ্ট, গেটওয়ে হিসেবে কাজ করা Linux সার্ভারে একটি systemd oneshot ইউনিট, systemd-networkd-এ Neighbor= stanza, অথবা যে ফাইলে স্থানীয় টুলিং পড়ে সেই /etc/ethers-এ একটি এন্ট্রি। শেলে টাইপ করা কমান্ড পরের রিস্টার্টে হারিয়ে যায়, আর এটাই সবচেয়ে সাধারণ কারণ যার জন্য কাজ করা সমাধান হঠাৎ কাজ করা বন্ধ করে বলে মনে হয়।
বাইরে থেকে পরীক্ষা করুন এবং কখন সরাতে হবে জানুন
মেশিনটি ঘুম পাড়ান এবং অন্তত দশ মিনিট অপেক্ষা করুন, যেকোনো ডায়নামিক এন্ট্রি পুরোনো হওয়ার জন্য এতটুকু যথেষ্ট। তারপর VPN ক্লায়েন্ট থেকে ওয়েক অনুরোধ পাঠান এবং রাউটারের দুই দিকই লক্ষ্য করুন:
tcpdump -ni tun0 udp port 9
tcpdump -ni br0 ether proto 0x0806 or udp port 9প্রথম ক্যাপচার প্রমাণ করে প্যাকেটটি টানেল থেকে এসেছে; দ্বিতীয়টি প্রমাণ করে রাউটার LAN-এ একটি ফ্রেম বসিয়েছে। বৈধ ম্যাজিক প্যাকেট 102 বাইট হিসেবে দেখা যায় যেখানে MAC পুনরাবৃত্ত, তাই গন্তব্যের সঙ্গে দৈর্ঘ্যও দেখুন। ফ্রেমটি LAN ব্রিজ ছেড়ে গেলেও মেশিন বন্ধ থাকে, তাহলে বাকি সমস্যা ডিভাইসে: ফাস্ট স্টার্টআপ, ডিপ স্লিপ বা BIOS সেটিং যা নেটওয়ার্ক কার্ডের বিদ্যুৎ কেটে দেয়।
নেটওয়ার্ক কার্ড বদলালে এন্ট্রিটি সরান, আর মেশিন অন্য ঠিকানায় সরালে সেটি হালনাগাদ করুন। স্থায়ী ম্যাপিং একটি সচেতন ব্যতিক্রম, আর কেউ মনে না রাখা ব্যতিক্রমই একদিনের ল্যাপটপকে অবসরপ্রাপ্ত ডেস্কটপের জন্য নির্ধারিত ফ্রেম পাইয়ে দেয়।