බ්‍රවුසරයක් https://203.0.113.10:8443 ඉල්ලා සිටී, proxy එක සම්බන්ධතාවය පිළිගනී, සහ WireGuard peer එකේ සේවාව කිසිදා පිළිතුරු නොදෙයි. DNAT රීතිය තම කාර්යය කරයි; අසාර්ථක වන්නේ පිළිතුරයි. පැකට්ටුව අනුවාද දෙක හරහා අනුගමනය කරන්න, එවිට නැතිවූ රීතිය පැහැදිලි වේ. විසඳුම නම් නිවැරදි hook එකේ තවත් NAT ප්‍රකාශයක්, නව ටනල් එකක් නොවේ.

එක් ඉල්ලීමක් ආරම්භයේ සිට අවසානය දක්වා අනුගමනය කරන්න

ඉල්ලීම proxy එකේ පොදු අතුරුමුහුණතට පැමිණේ, මූලාශ්‍රය ග්‍රාහකයාගේ පොදු ලිපිනය සහ ගමනාන්තය proxy ලිපිනයයි. nat PREROUTING තුළ DNAT රීතිය ගමනාන්තය peer එකේ ටනල් ලිපිනය වන 10.90.0.2 වෙත නැවත ලියයි. පසුව මාර්ග නිර්ණය පැකට්ටුව wg0 හරහා පිටතට යවයි, සහ යැවීමේ මාර්ගය සම්පූර්ණ වේ.

peer එකේ පැකට්ටුව දැන් මුල් පොදු මූලාශ්‍ර ලිපිනය දරයි, මන්ද කිසිවක් එය නැවත ලියා නැත. සේවාව සම්බන්ධතාවය පිළිගෙන තම පිළිතුර තම පෙරනිමි ගේට්වේ වෙත යවයි, එය peer එක ඉදිරිපිට ඇති ගෘහ රවුටරයයි. එම රවුටරයට කිසිදා නොදුටු ප්‍රවාහයක් සඳහා තත්ත්වයක් නැති බැවින් එය පැකට්ටුව ඉවතලයි හෝ තම පොදු ලිපිනයට පරිවර්තනය කරයි, ග්‍රාහකයා එය පිළිනොගනු ඇත.

අසමමිතිය මුළු ගැටලුවයි: ඉල්ලීම proxy හරහා යයි, පිළිතුර සෘජුව යාමට උත්සාහ කරයි. proxy හි සම්බන්ධතා නිරීක්ෂණය උපකාරී වන්නේ පිළිතුර proxy හරහා ආපසු පැමිණෙන විට පමණි, සහ මූලාශ්‍ර ලිපිනය තවමත් මුල් ග්‍රාහකයා වෙත යොමු වන තාක් එය එහි ආපසු යා නොහැක.

ආපසු පරිවර්තනය එකතු කරන්න

යවනු ලබන ප්‍රවාහයේ මූලාශ්‍රය peer වෙත යාමට පෙර proxy හි ටනල් ලිපිනයට නැවත ලියන්න. ඉන්පසු සේවාව 10.90.0.1 වෙත පිළිතුරු දෙයි, proxy එය ලබා ගනී, සහ පැකට්ටුව ග්‍රාහකයා වෙත ආපසු යාමට පෙර සම්බන්ධතා නිරීක්ෂණය අනුවාද දෙකම පෙරළයි.

iptables -t nat -A PREROUTING -p tcp -m multiport --dports 8080,8443 -j DNAT --to-destination 10.90.0.2
iptables -t nat -A POSTROUTING -d 10.90.0.2 -o wg0 -p tcp -m multiport --dports 8080,8443 -j SNAT --to-source 10.90.0.1

POSTROUTING රීතිය හිතාමතාම පටුය: එය පරිවර්තිත ගමනාන්තය සහ ටනල් අතුරුමුහුණත සමඟ ගැළපේ, එබැවින් wg0 හරහා අහම්බෙන් පිටවන අදාළ නොවන රථවාහන නැවත ලියන්නේ නැත. පුළුල් masquerade රීතියක් ද ග්‍රාහක ලිපිනය සඟවනු ඇත, නමුත් එය සෑම ප්‍රවාහයකටම කරන අතර NAT වගුව විග්‍රහ කිරීම දුෂ්කර කරයි.

ටනල් එක ඇති තැන රීති තබන්න

ටනල් ලිපිනය හෝ අතුරුමුහුණත සඳහන් කරන රීති wg-quick එය වින්‍යාස කිරීමෙන් පසු ක්‍රියාත්මක විය යුතුය. අතුරුමුහුණත PreUp ට පෙර සාදනු ලැබේ, නමුත් ලිපින, MTU, DNS සහ මාර්ග පසුව යෙදේ, සහ ඒ සියල්ල තැනට පත් වූ පසු PostUp ක්‍රියාත්මක වේ. එකතු කිරීම් PostUp තුළද ඉවත් කිරීම් PreDown තුළද තබන්න.

PostUp = iptables -t nat -A PREROUTING -p tcp -m multiport --dports 8080,8443 -j DNAT --to-destination 10.90.0.2
PostUp = iptables -t nat -A POSTROUTING -d 10.90.0.2 -o wg0 -p tcp -m multiport --dports 8080,8443 -j SNAT --to-source 10.90.0.1
PreDown = iptables -t nat -D PREROUTING -p tcp -m multiport --dports 8080,8443 -j DNAT --to-destination 10.90.0.2
PreDown = iptables -t nat -D POSTROUTING -d 10.90.0.2 -o wg0 -p tcp -m multiport --dports 8080,8443 -j SNAT --to-source 10.90.0.1

ඉවත් කිරීම් එකතු කිරීම් සමඟ ටෝකනයෙන් ටෝකනය ගැළපිය යුතුය, multiport සහ අතුරුමුහුණත ගැළපීම් ඇතුළුව. එක් ගැළපීමකින් වෙනස් වන ඉවත් කිරීමක් කිසිවක් ඉවත් නොකරයි, සහ ඊළඟ නැවත සම්බන්ධ වීම රීතියේ දෙවන පිටපත එකතු කරයි. නැවත සම්බන්ධ වීම් කිහිපයකින් පසු වගුවේ වින්‍යාස පේළියකට ආරෝපණය කිරීමට අපහසු අනුපිටපත් ඇත.

ප්‍රතිඵලය iptables -t nat -S සමඟ නැවත සම්බන්ධ වීමෙන් පසු පරීක්ෂා කරන්න. එම රීතිය දෙවරක් දිස්වන්නේ නම් PreDown පේළිය ගැළපෙන්නේ නැති අතර පිරිසිදු කිරීම නිහඬව අසාර්ථක වේ.

යැවීම, පෙරහන සහ අනෙක් NAT

IPv4 යැවීම ස්ථිරව සක්‍රීය කරන්න, පසුව පෙරහන් වගුවේ යවනු ලබන ප්‍රවාහයට අවසර දෙන්න. DNAT FORWARD දාමයට පෙර සිදු වේ, එබැවින් පෙරහන් රීතිය පොදු ලිපිනය වෙනුවට පරිවර්තිත ගමනාන්තය සමඟ ගැළපේ. UFW මගින් firewall එක කළමනාකරණය කරන්නේ නම්, අවසරය මාර්ග රීතියක් ලෙස ප්‍රකාශ කරන්න; සාමාන්‍ය host රීතියක් යවනු ලබන රථවාහන ආවරණය නොකරයි.

proxy රීති නිවැරදි වුවද තවත් NAT ස්ථර දෙකකට මාර්ගය කැඩිය හැකිය. ගෘහ සම්බන්ධතාවයක පොදු ලිපිනය රවුටරයට අයත් වන අතර, එහි firewall එකේ පෝට් එක විවෘත කිරීම එම පෝට් එක proxy වෙත යවන පෝට්-ෆෝවර්ඩ් සටහනක් සෑදීමට සමාන නොවේ. පිටතින් විවෘත ලෙස පෙනෙන නමුත් කිසිවක් පිළිතුරු නොදෙන පෝට් එකකට බොහෝ විට එම සිතියම්කරණයම නොමැත.

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

ආපසු මාර්ගය තහවුරු කර පිරිවැය පිළිගන්න

proxy හි LAN එක නොවන ජාලයකින් සම්බන්ධ වන්න, පසුව සම්බන්ධතාවය විවෘතව ඇති විට පරිවර්තන යුගලය පරීක්ෂා කරන්න:

conntrack -L -p tcp --dport 8080
tcpdump -ni any tcp port 8080

conntrack සටහනේ මුල් tuple, පරිවර්තිත tuple සහ පිළිතුරේ දිශාව පෙන්විය යුතුය. පිළිතුර නොමැති නම් peer ටනල් හරහා නොයවයි, එය සාමාන්‍යයෙන් අදහස් වන්නේ SNAT රීතිය යෙදී නැති බව හෝ peer හිම firewall එක ප්‍රවාහය ඉවතලූ බවයි.

PostUp රීති නැවත යොදන බව ඔප්පු කිරීමට එක් වරක් නැවත අරඹන්න, පසුව ටනල් නවත්වා PreDown ඒවා ඉවත් කළ බව තහවුරු කරන්න. විසන්ධියකින් පසු ඉතිරි වන මළ රීති නම් පසුව කරන වෙනසක් අනපේක්ෂිත ලෙස හැසිරීමට හේතුවයි.

අවසාන වශයෙන්, SNAT හි පිරිවැය පිළිගන්න. සේවාව සෑම ඉල්ලීමක්ම proxy එකෙන් පැමිණි ලෙස දකී, එබැවින් ප්‍රවේශ ලොග, ග්‍රාහකයාට අදාළ වේග සීමා සහ අවසර ලත් ලිපින ලැයිස්තු තවදුරටත් පරිශීලකයන් වෙන් නොකරයි. hairpin අවස්ථාවට proxy හි LAN එකේ ග්‍රාහකයන් සඳහා තම මූලාශ්‍ර පරිවර්තනය අවශ්‍යයි. peer එකට සැබෑ ග්‍රාහක ලිපින අවශ්‍ය නම්, විකල්පය ග්‍රාහක ජාලය වෙත ආපසු මාර්ගයයි, එය වැඩි වැඩක් නමුත් තොරතුරු රඳවා ගනී.

අදාළ ලිපි