VPN පෝට් එකට පමණක් ඉඩ දෙන ගිනිපවුර එක් නියමයක් නොවේ. එය එකම පෝට් අංකයට අහම්බෙන් අදාළ වන තනි තීරණ තුනකි: ආදාන දාමය තීරණය කරන්නේ දේශීය ක්‍රියාවලියකට ළඟා විය හැක්කේ කුමක්ද යන්නයි, යොමු දාමය තීරණය කරන්නේ ටනල් සේවාදායකයන් වෙනුවෙන් සත්කාරකය හරහා යා හැක්කේ කුමක්ද යන්නයි, සහ NAT වගුව පිටවීමේදී මූල ලිපිනය නැවත ලියයි. ඉන් එකක් වැරදුනහොත් ප්‍රතිඵලය දුර්ලභ ලෙසකදී පමණක් පිරිසිදු බාධාවක් වේ. සේවාදායකයන් පිළිගන්නා නමුත් කිසිවක් පූරණය නොකරන සත්කාරකයක්, නැතහොත් කෙනෙක් දාම අනුපිළිවෙල කියවන තුරු වසා ඇති ලෙස පෙනෙන සත්කාරකයක් ඔබට ලැබේ.

වසා දැමිය නොහැකි එකම පෝට් එක

VPN ශ්‍රෝතෘව ඔබට කල්තියා අනුමාන කළ නොහැකි ලිපිනවලින් සම්බන්ධතා පිළිගත යුතුය, එබැවින් එය අර්ථ දැක්වීමෙන්ම පොදු සේවාවකි. නිර්මාණය පදනම් වී ඇති එකම ව්‍යතිරේකය මෙයයි: OpenVPN සඳහා එක් UDP පෝට් එකක්, WireGuard සඳහා එක් UDP පෝට් එකක්, SSL VPN සඳහා එක් TCP පෝට් එකක්. අනෙක් සියල්ල ටනලය පිටුපසට අයත් වේ, එනම් යෙදුම් සේවා සියලු අතුරුමුහුණත් වෙත නොව ටනල් ලිපිනයට හෝ loopback වෙත බැඳිය යුතුය.

නමුත් බැඳීම බලාත්මක කිරීමක් නොවේ. 0.0.0.0 වෙත බැඳුණු ක්‍රියාවලියක් ළඟා විය හැක්කේ නියමයක් ඉඩ දුන්නොත් පමණක් වන අතර, පෙරනිමි ප්‍රතිපත්තිය කිසිදු නියමයකට නොගැලපුණු ගමනාගමනයට වන විකල්පයයි, පෝට් එක පාලනය කරන නියමය නොවේ. ඔබේ අත්හැරීමට ඉහළින් තබන ලද පිළිගැනීම ද පිළිගැනීමක්මය, සහ සේවාවක් පොදු ලිපිනයෙන් ඉවත් කිරීම ස්වාධීන වැඩිදියුණුවකි, දාමයට ආදේශකයක් නොවේ.

ආදානය, යොමු කිරීම සහ NAT විවිධ ප්‍රශ්නවලට පිළිතුරු දෙයි

ආදාන ගමනාගමනය සත්කාරකයටම ඉලක්ක වේ, එබැවින් VPN ශ්‍රෝතෘව සහ පරිපාලන මාර්ගය එහිම පවතී. යොමු ගමනාගමනය සත්කාරකය හරහා යයි, සහ ටනල් සේවාදායකයන්ට එය net.ipv4.ip_forward=1 සමඟ අවශ්‍ය වේ. සම්ප්‍රදායික අඩක් කැඩුණු වින්‍යාසය පිටවන ප්‍රවාහයට ඉඩ දී ආපසු එන දිශාව අමතක කරයි, එබැවින් සේවාදායකය අත්ලාන්තරය සම්පූර්ණ කර පසුව කිසිවක් පූරණය නොවේ; ස්ථාපිත සහ සම්බන්ධිත ගමනාගමනය සඳහා වන conntrack නියමය එම දිශාව ආවරණය කරයි.

NAT යනු තෙවන ප්‍රශ්නයයි. postrouting නැවත ලිවීමකින් තොරව, යොමු කළ පැකට් ටනලයේ පෞද්ගලික මූලය සමඟ පිටවී ඉහළින් ඉවත දමයි, මක්නිසාද යත් සත්කාරකයෙන් ඔබ්බට කිසිදු ජාලයක් තටාකය ආපසු මාර්ගගත කරන ආකාරය නොදන්නා බැවිනි. එම නියමයේ මූල උපසර්ගය VPN තටාකයට ගැලපිය යුතුය, සත්කාරකයේම ලිපිනයට නොව, සහ සේවාදායක උපජාලය නම් කරන යොමු නියමයට ද එයම අදාළ වේ.

IPv6 දෙවන ප්‍රතිපත්තියකි, පසු සිතුවිල්ලක් නොවේ. දැඩි IPv4 දාමයක් සහ ip6tables හි විවෘත ප්‍රතිපත්තියක් ඇති සත්කාරකයක් කිසිවක් වසා නැත; සේවා අනෙක් පවුල හරහා තවමත් ළඟා විය හැකිය. එක්කෝ ip6tables සමඟ නියම කට්ටලය පරාවර්තනය කරන්න, නැතහොත් පොදු අතුරුමුහුණතෙහි IPv6 චේතනාන්විතව අබල කරන්න, සහ ඔබ තෝරාගත්තේ කුමක්ද යන්න ලියන්න.

එක් වරකින් කියවිය හැකි පදනම

ප්‍රතික්ෂේපයෙන් ආරම්භ කර, පසුව සත්කාරකයට අවශ්‍ය දේ පමණක් එකතු කරන්න. පළමුව loopback සහ පිළිතුරු, පසුව පරිපාලන මාර්ගය, පසුව ටනල් ශ්‍රෝතෘව, පසුව සේවාදායකයන් සඳහා යොමු ප්‍රතිපත්තිය:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -m conntrack --ctstate NEW -j ACCEPT
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i tun0 -o eth0 -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

අතුරුමුහුණත් නම්, පෝට් එක සහ තටාකය ස්ථාන දරන්නන් වේ; ඒවා පිටපත් කරනවාට වඩා සේවාදායකයෙන් කියවන්න. ප්‍රතිඵලය සුරැකීම එය ලිවීම තරම්ම වැදගත් වේ, මක්නිසාද යත් මතකයේ පමණක් ජීවත් වන නියම කට්ටලයක් ඊළඟ නැවත ඇරඹුමේදී අතුරුදහන් වී සත්කාරකය නිහඬව නැවත විවෘත කරන බැවිනි. බෙදාහැරීමේ යාන්ත්‍රණයෙන් එය ස්ථිර කරන්න, සහ යන්ත්‍රය බූට් නොවන දිනය සඳහා යන්ත්‍රයෙන් පිටත පිටපතක් තබා ගන්න.

සත්කාරකය අහිමි නොවී අවසාන පෝට් එක වැසීම

නිර්මාණයේ උගුලක් ඇත. SSH ටනලය හරහා පමණක් පවතී නම්, අසාර්ථක VPN සේවාව SSH ද රැගෙන යයි, සහ ආපසු යාමට ඇති එකම මාර්ගය ඔබ කිසිදා නොවිවෘත කළ කොන්සෝලයක් විය හැකිය. අවසාන පොදු පෝට් එක වසා දැමීමට පෙර එම කොන්සෝලය පවතින බවත් ඔබට එය සැබවින්ම භාවිත කළ හැකි බවත් තහවුරු කරන්න, නැතහොත් ටනලය මත රඳා නොපවතින පටු පරිපාලන මාර්ගයක් තබා ගන්න: ස්ථිර ලිපිනයකින් SSH, යතුරු පමණක්, මුරපද සත්‍යාපනය අක්‍රීයයි.

වෙනස දැනටමත් ස්ථාපිත සැසියකින් යොදන්න, ඔබ පෙරහනට ලක් කිරීමට යන සම්බන්ධතාවය හරහා නොවේ. වැරැද්ද ස්ථිර වීම වෙනුවට කල් ඉකුත් වන පරිදි පසුගමනයක් සැලසුම් කරන්න, උදාහරණයක් ලෙස පෙර නියම කට්ටලය ප්‍රතිසාධනය කරන systemd-run --on-active=10min කාර්යයක්, සහ පළමුවැන්න පරීක්ෂා කරන අතරතුර දෙවන SSH සැසිය විවෘතව තබන්න. පසුව පසුගමන කාර්යය සැබවින්ම ක්‍රියාත්මක වන බව තහවුරු කරන්න, මක්නිසාද යත් පරීක්ෂා නොකළ ප්‍රතිසාධනය ප්‍රතිසාධනයක් නොමැති වීමට සමාන බැවිනි.

ස්ක්‍රිප්ටය නොව මාර්ගය තහවුරු කරන්න

පූරණය වූ නියම කියවන්න, ඒවා පූරණය කළ යුතුව තිබූ ගොනුව නොවේ. බලයලත් බාහිර සත්කාරකයකින් අභිප්‍රේත පෝට් පමණක් පිළිතුරු දෙන බව තහවුරු කරන්න; ටනලය තුළින් ඔබ ප්‍රකාශයට පත් කිරීමට අදහස් කළ සේවා ළඟා විය හැකි බව තහවුරු කරන්න. ටනල් ගමනාගමනය ද අවහිර කරන පෙරනිමි ප්‍රතික්ෂේප ප්‍රතිපත්තියක්, කෙනෙක් එය භාවිත කිරීමට උත්සාහ කරන තුරු ක්‍රියාකාරී අගුලු දැමීමක් මෙන්ම පෙනේ.

iptables -S
iptables -t nat -S
ss -lntup
ip -4 addr show

අවසර දුන් පෝට් එක, සේවාදායක තටාකය, ටනල් අතුරුමුහුණත, පරිපාලන මූලය සහ කොන්සෝල ක්‍රියාපටිපාටිය වින්‍යාසය අසල සටහන් කරන්න. තටාකයේ හෝ අතුරුමුහුණත් නාමයේ ඊළඟ වෙනස්කම පෙරහනේ සහ NAT නියමයේ දෙකෙහිම ගැලපිය යුතුය, නැතහොත් සත්කාරකය කිසිවෙකු නොදැන අඩක් විවෘත තත්ත්වයට නැවත යයි.

එක් පුරුද්දක් නියම කට්ටලයට වඩා වටිනවා: සෑම වෙනසකින් පසුව සේවාදායක ඉල්ලීමකින් යොමු මාර්ගය සහ දෙවන සැසියකින් ප්‍රතිසාධන මාර්ගය ඔප්පු කරන්න. ඔබ භාවිත නොකළ අගුලු දැමීමක් යනු උපකල්පනයක් පමණි.

අදාළ ලිපි