රටවල් සංස්කරණය කිරීමෙන් ඔබට වැඩසටහනක් සම්පූර්ණ උමගක් සහිත WireGuard සත්කාරකයෙන් නිදහස් කළ නොහැක. රටවල් ගමනාන්තය අනුව මාර්ගය තෝරයි, සහ ඔබ නිදහස් කිරීමට අවශ්‍ය වන්නේ ක්‍රියාවලියක් බැවින් කර්නලයට ගැලපීමට කිසිවක් නැත. ක්‍රියාත්මක වන ප්‍රවේශය වන්නේ එම ක්‍රියාවලියට එහිම ජාල සන්දර්භය දීමයි: තමන්ගේම අතුරුමුහුණතක්, ලිපින සහ පෙරනිමි මාර්ගයක් සහිත නාම අවකාශයක්, veth යුගලයකින් සත්කාරකයට සම්බන්ධ කර ඇත. මම මෙය Ubuntu 24.04 මත wireguard-tools 1.0.20210914 සමඟ ධාවනය කළ අතර, නාම අවකාශය කිසිදා ගැටලුවක් නොවීය — සත්කාරකයේ යැවීම් ප්‍රතිපත්තිය සහ උමගේ ලකුණු කිරීම් නීති ගැටලුව විය.

පළමුව ඔබට අවශ්‍ය සන්දර්භ වර්ගය තෝරන්න

ප්‍රායෝගිකව ආකාර දෙකක් දිස්වේ. සත්කාරකය සම්පූර්ණ උමගක් ධාවනය කරන අතර එක් වැඩසටහනක් ISP මාර්ගයෙන් පිටවිය යුතු නම්, ඔබ දෙවන නාම අවකාශයක් ගොඩනගා එය සත්කාරකයට සම්බන්ධ කර සත්කාරකයට ඒ සඳහා රථවාහන යැවීමට හා පරිවර්තනය කිරීමට ඉඩ දෙයි. නාම අවකාශයක් දැනටමත් VPN අතුරුමුහුණතක් දරන අතර ඔබට අවශ්‍ය වන්නේ එහි ඇතුළත ආරම්භ වන විධානයක් පමණක් නම්, එය සාමාන්‍ය ip netns exec අවස්ථාව වන අතර මාර්ගගත කිරීමේ බොහෝ කටයුතු දැනටමත් අවසන්.

කිසිදු ආකාරයක් ඔබට එක් ක්‍රියාවලි හැඳුනුම්පතකට සීමා වූ නියමයක් ලබා නොදේ. Netfilter ලිපින, තොටුපළ, ලකුණු සහ අතුරුමුහුණත් ගැලපෙයි; එක් එක් ක්‍රියාවලිය සඳහා මාර්ගගත වගුවක් නැත. ලකුණු කිරීමට රථවාහන යොමු කළ හැක, නමුත් ලකුණ ඔබ දැනටමත් හඳුනාගත් පැකට්ටු මත තැබිය යුතු අතර, එය එක් ස්තරයක් පහළ එම ගැටලුවයි. නාම අවකාශය එම ක්‍රියාවලි ගස සඳහා සම්පූර්ණ තට්ටුව වෙන් කරයි, එබැවින් එය සාමාන්‍ය පිළිතුරයි.

අවශ්‍යතාව සැබවින්ම උමගෙන් කිසිවක් පිට නොයා යාම නම්, ඒ වෙනුවට උමග නවත්වන්න. නාම අවකාශය මිශ්‍ර අවස්ථාව සඳහා පවතී: එක් වැඩසටහනක් පිටතට, අනෙක් සියල්ල ඇතුළට, එකම යන්ත්‍රයේ, එකම වේලාවේ.

දෙවන සන්දර්භය ගොඩනගා එය සත්කාරකයට සම්බන්ධ කරන්න

නිදර්ශන ලෙස සැලසුම: සත්කාරකයට පෙරනිමි මාර්ගය දරන WireGuard අතුරුමුහුණතක් සහ clearnet නමින් ජාල නාම අවකාශයක් ඇත, එය veth යුගලයකින් සත්කාරකයට සම්බන්ධ කර ඇත. පහත ලිපින උදාහරණ වේ.

ip netns add clearnet
ip link add veth-clear-out type veth peer name veth-clear-in
ip addr add 192.168.100.1/24 dev veth-clear-out
ip link set veth-clear-out up
ip link set veth-clear-in netns clearnet
ip netns exec clearnet ip addr add 192.168.100.2/24 dev veth-clear-in
ip netns exec clearnet ip link set veth-clear-in up
ip netns exec clearnet ip route add default via 192.168.100.1

මෙම නාම අවකාශයට දැන් සත්කාරකයට ළඟා විය හැකි අතර වෙනත් කිසිවකට නොවේ. සත්කාරකය රථවාහන යැවිය යුතු අතර මූලාශ්‍ර ලිපිනය නැවත ලිවිය යුතුය, මන්ද 192.168.100.0/24 පුද්ගලික වන අතර ඉහළ රවුටරයට එයට නැවත යාමට මාර්ගයක් නැත:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o <wan-interface> -j MASQUERADE

ඉදිරියට යාමට පෙර නාම අවකාශයේ පැත්ත තහවුරු කරන්න.ip netns exec clearnet ip route veth මාර්ගය සහ 192.168.100.1 හරහා පෙරනිමි මාර්ගය පෙන්විය යුතු අතර එම ලිපිනයට ping පිළිතුරු දිය යුතුය. සත්කාරකයේ ලිපිනයට ping අසාර්ථක වුවහොත්, ලිපින හෝ සබැඳි තත්ත්වය වැරදි අතර කිසිදු firewall නියමයක් උදව් නොකරයි.

නම් විසඳුනත් කිසිවක් ආපසු නොඑන විට, FORWARD කියවන්න

සම්භාව්‍ය අසාර්ථකත්වය මාර්ගගත දෝෂයක් මෙන් පෙනේ: නාම අවකාශය නමක් විසඳයි, පැකට්ටුව පිටව යයි, සහ කිසිදා පිළිතුරක් නොපැමිණේ. FORWARD ප්‍රතිපත්තිය DROP වන සත්කාරකවල — බෙදාහැරීම් කිහිපයක් සහ බොහෝ දෘඩ කළ රූප එසේ කරයි — පැකට්ටුව මාර්ගයේ ඉවත දමනු ලැබේ, සහ වැඩසටහන මුද්‍රණය කරන දෝෂය පෙරීම ගැන කිසිවක් නොකියයි.

කිසිවක් එකතු කිරීමට පෙර දාමය කියවන්න:

iptables -S FORWARD
nft list chain inet filter forward

පසුව රථවාහන දිශා දෙකෙන්ම ඉඩ දෙන්න, ගණන් කරන්නන් සමඟ, නියමය කිසිදා ගැලපුනේදැයි දැන ගැනීමට:

iptables -A FORWARD -i veth-clear-out -o <wan-interface> -j ACCEPT
iptables -A FORWARD -i <wan-interface> -o veth-clear-out -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
watch -n1 'iptables -L FORWARD -v -n'

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

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

උමගේ ලකුණු කිරීම් නීති නව මාර්ගයෙන් ඈත් කර තබන්න

මෙම පියවර ක්‍රියාකාරී නාම අවකාශයක් කාන්දු වන එකක් බවට පත් කරයි. WireGuard සැකසුම් සාමාන්‍යයෙන් firewall ලකුණු ප්‍රතිපත්තියක් සමඟ තමන්ගේම මාර්ගගත නීති සහ කැපවූ වගුවක් ස්ථාපනය කරයි, එබැවින් ලකුණු නොකළ පැකට්ටු ප්‍රධාන වගුවට ආපසු වැටෙන අතර ලකුණු කළ පැකට්ටු උමගේ වගුව භාවිතා කරයි. නාම අවකාශයෙන් යැවූ රථවාහන පිටවන විට ප්‍රතිපත්ති මාර්ගගත කිරීමට එරෙහිව ඇගයේ, සහ එම නීති ලියූ ආකාරය අනුව එය උමගේ වගුවට වැටිය හැක.

එකතු කිරීම් දෙකක් මාර්ග වෙන් කරයි. නාම අවකාශයේ උපජාලය සඳහා mangle දාමයේ කලින් ආපසු යන්න, සහ එම උපජාලය ප්‍රධාන වගුවේ තබන මූලාශ්‍ර පාදක නියමයක් එකතු කරන්න:

iptables -t mangle -I PREROUTING -s 192.168.100.0/24 -j RETURN
ip rule add from 192.168.100.0/24 lookup main priority 100

මගේ සත්කාරකයේ ප්‍රමුඛතාව 100 උමගේ නීතිවලට පෙර අනුපිළිවෙලට එයි, එබැවින් එම මූලාශ්‍රය සඳහා සාමාන්‍ය වගුව තීරණය කරයි. අංකය අන්ධ ලෙස පිටපත් නොකරන්න:wg-quick ස්ථාපනය කරන ප්‍රමුඛතා අනුවාද අතර සහ IPv4 හා IPv6 සැකසුම් අතර වෙනස් වේ, එබැවින් ධාවනය කරන්න ip rule show සහ ඔබේ යන්ත්‍රයේ උමගේ නීතිවලට පෙර වැටෙන ප්‍රමුඛතාවක් තෝරන්න.

නීති ලැයිස්තුව විශ්වාස කරනවාට වඩාමූලාශ්‍ර-විශේෂිත සෙවීමකින් තහවුරු කරන්න:

ip route get 1.1.1.1 from 192.168.100.2
ip netns exec clearnet ip route get 1.1.1.1

පළමු විධානය WireGuard අතුරුමුහුණත වාර්තා කරන්නේ නම්, නව නියමය තවම උමගේ ප්‍රතිපත්තියට පෙර නැත. එය WAN අතුරුමුහුණත වාර්තා කරන අතර දෙවැන්න තවම veth පෙරනිමි පෙන්වන්නේ නම්, සත්කාරකය සහ නාම අවකාශය එකඟ නොවේ, ඔබ මාර්ගගත වගු දෙකම නැවත කියවිය යුතුය.

සම්බන්ධතාව විවෘත කරන ක්‍රියාවලිය ආරම්භ කරන්න

විධානය ආරම්භ කිරීම එක් පේළියකි, නමුත් සොකට්ටුව සැබවින්ම සාදන ක්‍රියාවලිය ආරම්භ කරන්න.ip netns exec clearnet curl -s https://ifconfig.me කුඩාම අවංක පරීක්ෂණයයි: එය නාම අවකාශය ලෝකයට ඉදිරිපත් කරන ලිපිනය පෙන්වයි, සත්කාරකය භාවිතා කරන ලිපිනය නොවේ.

සේවාවක් සඳහා, ක්‍රියාවලිය එහි මුළු ජීවිත කාලයම තුළ රැඳී සිටීමට නාම අවකාශය මාර්ගයෙන් සම්බන්ධ කරන්න:

[Service]
NetworkNamespacePath=/run/netns/clearnet

ග්‍රැෆික් යෙදුම් යනු එක්-පේළි ප්‍රවේශය නිහඬව අසාර්ථක වන තැනය. මෙනුවකින් ආරම්භ කරන බ්‍රවුසරයක් බොහෝ විට ඉල්ලීම දැනටමත් නාම අවකාශයෙන් පිටත ධාවනය වන අවස්ථාවකට භාර දෙයි, එබැවින් නව කවුළුව පෙනේ, රථවාහන තවමත් උමගෙන් පිටව යයි. එයට වෙනම පැතිකඩක් දෙන්න, එවිට සැබවින්ම නව අවස්ථාවක් සාදනු ලැබේ, පසුව අනුමාන කරනවාට වඩා ක්‍රියාවලියේ සන්දර්භය පරීක්ෂා කරන්න:

readlink /proc/$(pgrep -f clearnet-profile | head -1)/ns/net
readlink /run/netns/clearnet

ප්‍රතිදාන දෙකම ගැලපිය යුතුය. එම පරීක්ෂාවම දිගු කලක් ධාවනය වන ඕනෑම වැඩසටහනකට ක්‍රියා කරයි, සහ ආරම්භකයා ඔබ අදහස් කළ දේ කළා යැයි උපකල්පනය කරනවාට වඩා එය එක් එක් යෙදුම සඳහා එක් වරක් කිරීම වටී.

නම් විසඳීමට තමන්ගේම තීරණයක් අවශ්‍යයි. නාම අවකාශයක් සෑදීම එයට විසඳන්නාගේ වින්‍යාසයක් ලබා නොදේ; එක් එක් නාම අවකාශය සඳහා ගොනු මගින් සහාය දක්වයි/etc/netns/<name>/resolv.conf, සහ එයක් නොමැතිව ඔබ වැරදි ලෙස කියවීමට පහසු හැසිරීමක් උරුම කර ගනී. IPv6 ට ද එම ආකලනය අවශ්‍යයි: නාම අවකාශයට v6 පෙරනිමි මාර්ගයක් නොමැති අතර යෙදුම v6 ට මුල්‍තැන දෙන්නේ නම්, ඉල්ලීම් ආපසු වැටීමට පෙර සිර විය හැක, එය කැඩුණු උමගක් මෙන් පෙනේ.

රාමුව පරීක්ෂා කරන්න, පිටවන ලිපිනය පමණක් නොවේ

ක්‍රියාකාරී පොදු ලිපිනයක් මාර්ගය සනාථ කරයි, සම්පූර්ණ අවශ්‍යතාව නොවේ. ඉතිරිය මෙම අනුපිළිවෙලින් කරන්න:

  • ip netns exec clearnet ip route get 1.1.1.1 veth පෙරනිමි පෙන්වයි, WireGuard අතුරුමුහුණත නොවේ.
  • ඉල්ලීමක් ධාවනය වන අතරතුර නීති දෙකෙහිම FORWARD ගණන් කරන්නන් වැඩි වේ.
  • යෙදුම් ක්‍රියාවලිය ඔබ අපේක්ෂා කරන නාම අවකාශ inode වාර්තා කරයි.
  • නැවත ආරම්භයෙන් පසු සේවාව ආරම්භ වීමට පෙර නාම අවකාශය පවතී; කලින් ධාවනය වන unit අසාර්ථක වේ, නැතහොත් ඊටත් වඩා නරක ලෙස, නාම අවකාශයෙන් පිටත ධාවනය වේ.

පසුව උමග වැටෙන විට කුමක් සිදුවිය යුතුද යන්න තීරණය කරන්න. නාම අවකාශය දිගටම ක්‍රියා කරයි, එය මෙම අභ්‍යාසයේ අරමුණ වන අතර එමෙන්ම අවදානම ද වේ: නිදහස් කළ වැඩසටහන සම්බන්ධව පවතින අතර අනෙක් සියල්ල නතර වේ. එය ප්‍රතිපත්ති තේරීමක් ලෙස සටහන් කරන්න, සහ නිදහස් කිරීම කුමක් ආවරණය නොකරන්නේද යන්න පැහැදිලි කරන්න — ගිණුම් අනන්‍යතාව, සුරකින ලද බ්‍රවුසර තත්ත්වය සහ ඔබේ DNS සපයන්නා සියල්ලම ජාල නාම අවකාශයක විෂය පථයෙන් පිටත ය, සහ නිදහස් කිරීම නිර්නාමිකත්වය ලෙස සැලකීම වින්‍යාසයට වඩා දිගු කල් පවතින වැරැද්දයි.

අදාළ ලිපි