ಸೇವೆಯನ್ನು ಕ್ಯಾರಿಯರ್-ಗ್ರೇಡ್ NAT ಹಿಂದಿನ ಲ್ಯಾಪ್ಟಾಪ್ನಲ್ಲಿ ಇರಿಸಿ, ಆ ಲ್ಯಾಪ್ಟಾಪ್ ಅನ್ನು VPN ಮೂಲಕ VPS ಗೆ ತಿರುಗಿಸಿ, ಮತ್ತು ಹೊರಗಿನ ಯಾರೂ ಅದನ್ನು ತಲುಪಲಾರರು. ನೀವು VPS ನಲ್ಲಿ ಗಮ್ಯಸ್ಥಾನ NAT ನಿಯಮವನ್ನು ಸೇರಿಸುತ್ತೀರಿ ಮತ್ತು ಮೌನಕ್ಕಿಂತ ಕೆಟ್ಟದ್ದನ್ನು ಪಡೆಯುತ್ತೀರಿ: ಸಂಪರ್ಕಗಳು ತೆರೆದು ನಂತರ ನಿಲ್ಲುತ್ತವೆ. ಪ್ರತಿಕ್ರಿಯೆ ಕಾಣೆಯಾಗಿಲ್ಲ, ಅದು ಕ್ಲೈಂಟ್ನ ಸ್ವಂತ ಡೀಫಾಲ್ಟ್ ಮಾರ್ಗದ ಮೂಲಕ ಹೊರಹೋಗುತ್ತಿದೆ, ಅಂದರೆ ಸರ್ವರ್ ಅದನ್ನು ಎಂದೂ ನೋಡುವುದಿಲ್ಲ. ಈ ಐದು ಪರಿಶೀಲನೆಗಳನ್ನು ಕ್ರಮವಾಗಿ ಮಾಡಿ ಮತ್ತು ಮೊದಲು ನಿಲ್ಲದಿರುವಲ್ಲೇ ನಿಲ್ಲಿಸಿ.

ಸರ್ವರ್ ಎಲ್ಲಾದರೂ ಫಾರ್ವರ್ಡ್ ಮಾಡುತ್ತದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿ

ಒಂದು ಅನುವಾದವನ್ನೂ ಬರೆಯುವ ಮೊದಲು ಈ ಚೌಕವನ್ನು ಗುರುತಿಸಿ. ಕರ್ನೆಲ್ ಫಾರ್ವರ್ಡ್ ಮಾಡಲು ನಿರಾಕರಿಸುವ ಪ್ಯಾಕೆಟ್ಗೆ ಇರುವ DNAT ನಿಯಮವನ್ನು ನಿಯಮ ಪಾರ್ಸರ್ ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ನಂತರ ಫಾರ್ವರ್ಡ್ ಮಾರ್ಗವು ಅದನ್ನು ಬಿಸಾಡುತ್ತದೆ, ಇದು ಫೈರ್ವಾಲ್ ಸಮಸ್ಯೆಯಂತೆ ಕಾಣುವ ಟೈಮೌಟ್ ಉಂಟುಮಾಡುತ್ತದೆ.

sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1

ಚಾಲನೆಯಲ್ಲಿರುವ ಕರ್ನೆಲ್ನಲ್ಲಿ ಅದನ್ನು ಹೊಂದಿಸುವುದು ಮರುಬೂಟ್ ಅವಧಿಯಲ್ಲಿ ಹೊಂದಿಸುವುದಕ್ಕೆ ಸಮವಲ್ಲ. net.ipv4.ip_forward=1 ಅನ್ನು /etc/sysctl.d/ ಅಡಿಯಲ್ಲಿನ ಕಡತಕ್ಕೆ ಬರೆಯಿರಿ, sysctl --system ಚಲಾಯಿಸಿ, ನಂತರ ಕಡತವನ್ನು ಎತ್ತಿಕೊಳ್ಳಲಾಗಿದೆ ಎಂದು ನಂಬುವ ಬದಲು ಮೌಲ್ಯವನ್ನು ಮತ್ತೆ ಓದಿ. ತನ್ನದೇ ನೆಟ್ವರ್ಕ್ ನಾಮಸ್ಥಳವನ್ನು ನಿರ್ವಹಿಸುವ ಕಂಟೇನರ್ಗೆ ಆ ಸ್ಥಳದ ಒಳಗೆ ಅದೇ ಮೌಲ್ಯ ಬೇಕು, ಹೋಸ್ಟ್ನಲ್ಲಿ ಮಾತ್ರವಲ್ಲ.

ಮತ್ತೆ ಓದಿದಾಗಲೂ ಶೂನ್ಯವಿದ್ದರೆ, ಇಲ್ಲೇ ನಿಲ್ಲಿಸಿ. ಕೆಳಗೆ ಯಾವುದೂ ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ.

ಯಾವುದೇ ನಿಯಮ ಅದನ್ನು ಉಲ್ಲೇಖಿಸುವ ಮೊದಲು ಸುರಂಗದ ವಿಳಾಸವನ್ನು ಪಿನ್ ಮಾಡಿ

ಪೂಲ್ ವಿಳಾಸಗಳನ್ನು ಸಂಪರ್ಕ ಕ್ರಮದಲ್ಲಿ ಹಂಚುತ್ತದೆ, ಆದ್ದರಿಂದ ಇಂದಿನ ಗುತ್ತಿಗೆಗಾಗಿ ಬರೆದ ನಿಯಮವು ಮುಂದಿನ ವಾರ ಮೌನವಾಗಿ ಬೇರೆ ಕ್ಲೈಂಟ್ ಅನ್ನು ತೋರಿಸಬಹುದು. ವಿಳಾಸವನ್ನು ಆಗಮನ ಕ್ರಮಕ್ಕಲ್ಲ, ಪ್ರಮಾಣಪತ್ರದ ಗುರುತಿಗೆ ಬಿಗಿಯಿರಿ.

client-config-dir /etc/openvpn/ccd
ifconfig-push 10.77.0.14 10.77.0.13

ಆ ಜೋಡಿ ಪಾಯಿಂಟ್-ಟು-ಪಾಯಿಂಟ್ ಸುರಂಗದ ಕ್ಲೈಂಟ್ ತುದಿ ಮತ್ತು ಪೀರ್ ತುದಿ, ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರದ ಸಾಮಾನ್ಯ ಹೆಸರಿಗೆ ಕೀಲಿಸಲಾಗಿದೆ. ಸಬ್ನೆಟ್ ಟೋಪೊಲಜಿಯಲ್ಲಿ ಎರಡನೇ ಮೌಲ್ಯವನ್ನು ಬದಲಿಗೆ ನೆಟ್ಮಾಸ್ಕ್ ಆಗಿ ಓದಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಬಳಕೆಯಲ್ಲಿರುವ ಟೋಪೊಲಜಿಗೆ ಹೊಂದುವ ರೂಪವನ್ನು ಬರೆಯಿರಿ. ನಂತರ ಕ್ಲೈಂಟ್ ಅನ್ನು ಮತ್ತೆ ಸಂಪರ್ಕಿಸಿ ಮತ್ತು ವಿಳಾಸವನ್ನು ಕ್ಲೈಂಟ್ನಲ್ಲೇ ಓದಿ, ಏಕೆಂದರೆ ಪೂಲ್ ಬಗ್ಗೆ ಸರ್ವರ್ನ ದೃಷ್ಟಿ ಕ್ಲೈಂಟ್ ಏನನ್ನು ಸಂರಚಿಸಿದೆ ಎಂಬುದಕ್ಕೆ ಸಾಕ್ಷಿಯಲ್ಲ.

ಮತ್ತೆ ಸಂಪರ್ಕಿಸಿದ ನಂತರ ವಿಳಾಸ ಬದಲಾದರೆ, ನಿಲ್ಲಿಸಿ. ಚಲಿಸುವ ಗುರಿಯನ್ನು ಅನುಸರಿಸುವ NAT ನಿಯಮವು ಮಧ್ಯೆ ಮಧ್ಯೆ ವಿಫಲವಾಗುತ್ತದೆ ಮತ್ತು ನಿಮಗೆ ಏನನ್ನೂ ಕಲಿಸುವುದಿಲ್ಲ.

ಎರಡೂ ದಿಕ್ಕುಗಳಲ್ಲಿ ಅನುವಾದಿಸಿ

ಗಮ್ಯಸ್ಥಾನ ಅನುವಾದವು ಒಳಬರುವ ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಕ್ಲೈಂಟ್ಗೆ ಕಳುಹಿಸುತ್ತದೆ. ಮೂಲ ಅನುವಾದವೇ ಕ್ಲೈಂಟ್ನ್ನು ಮೂಲ ಕಳುಹಿಸುವವರಿಗಲ್ಲ, ಸರ್ವರ್ಗೆ ಉತ್ತರಿಸುವಂತೆ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಅದೇ ಜನರು ಬಿಟ್ಟುಬಿಡುವ ನಿಯಮ.

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 29443 -j DNAT --to-destination 10.77.0.14:29443
iptables -t nat -A POSTROUTING -d 10.77.0.14 -p tcp --dport 29443 -j SNAT --to-source 10.77.0.13

ಎರಡನೇ ನಿಯಮವಿಲ್ಲದೆ ಕ್ಲೈಂಟ್ ತನ್ನ ISP ಮೇಲ್ಮುಖ ಕೊಂಡಿಯ ಮೂಲಕ ಉತ್ತರಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ದೂರದ ಪೀರ್ ಎಂದೂ ಮಾತನಾಡದ ಮೂಲ ವಿಳಾಸವನ್ನು ನೋಡುತ್ತದೆ, ಆದರೆ ಸರ್ವರ್ನಲ್ಲಿ ಪ್ರತಿಕ್ರಿಯೆಗೆ ಯಾವುದೇ ಟ್ರ್ಯಾಕಿಂಗ್ ನಮೂದು ಇರುವುದಿಲ್ಲ. ಹೊರಗಿನ ವೀಕ್ಷಕರು ಅರ್ಧ ಪೂರ್ಣಗೊಳ್ಳುವ ಹಸ್ತಲಾಘವವನ್ನು ನೋಡುತ್ತಾರೆ, ಮತ್ತು ಅದೇ ಇಲ್ಲದ ಫೈರ್ವಾಲ್ ದೋಷವನ್ನು ಹುಡುಕಲು ಜನರನ್ನು ಕಳುಹಿಸುವ ಲಕ್ಷಣ.

iptables -t nat -S ನಿಂದ ಎರಡೂ ನಿಯಮಗಳನ್ನು ಮತ್ತೆ ಓದಿ ಮತ್ತು ಇಂಟರ್ಫೇಸ್ ಹೆಸರು ಸಾರ್ವಜನಿಕ ವಿಳಾಸವನ್ನು ಹೊತ್ತಿರುವುದೇ ಎಂದು ಖಚಿತಪಡಿಸಿ. ಈಗಾಗಲೇ nftables ನಿಂದ ಫಿಲ್ಟರ್ ಮಾಡುವ ಹೋಸ್ಟ್ನಲ್ಲಿ ಪರಿಕರಗಳನ್ನು ಮಿಶ್ರಣ ಮಾಡುವ ಬದಲು ಹೊಂದುವ ವಿಳಾಸ ಕುಟುಂಬದ nftables NAT ಸರಪಳಿಯಲ್ಲಿ ಅನುವಾದವನ್ನು ಬರೆಯಿರಿ.

ಫಿಲ್ಟರ್ ಕೋಷ್ಟಕವನ್ನು ಹಾದುಹೋಗಲು ಬಿಡಿ

NAT ಕೋಷ್ಟಕಗಳು ಶೀರ್ಷಿಕೆಗಳನ್ನು ಮತ್ತೆ ಬರೆಯುತ್ತವೆ; ಅವು ಅನುಮತಿ ನೀಡುವುದಿಲ್ಲ. ಡೀಫಾಲ್ಟ್ DROP ನೀತಿಯೊಂದಿಗೆ ಫಾರ್ವರ್ಡ್ ಆಗುವ ಹರಿವಿಗೆ ತನ್ನದೇ ಸ್ವೀಕಾರ ಬೇಕು, ಜೊತೆಗೆ ಹಿಂತಿರುಗುವ ದಿಕ್ಕನ್ನು ಹೆಚ್ಚಿನ ನೀತಿಗಳು ಈಗಾಗಲೇ established,related ನಿಯಮದಿಂದ ಮುಚ್ಚಿವೆ.

iptables -A FORWARD -i eth0 -o tun0 -p tcp --dport 29443 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

ಏನನ್ನಾದರೂ ಸೇರಿಸುವ ಮೊದಲು FORWARD ಸರಪಳಿಯ ನೀತಿಯನ್ನು ಪರಿಶೀಲಿಸಿ, ಏಕೆಂದರೆ ಮುಂಚಿನ DROP ನ ಕ್ರಮವು ನಿಮ್ಮ ನಿಯಮವನ್ನು ಎಂದಾದರೂ ಕೇಳಲಾಗುತ್ತದೆಯೇ ಎಂದು ನಿರ್ಧರಿಸುತ್ತದೆ. ಫಿಲ್ಟರಿಂಗ್ nftables ನಲ್ಲಿರುವ ಹೋಸ್ಟ್ನಲ್ಲಿ inet ಕೋಷ್ಟಕದ forward ಹುಕ್ಗೆ ಸಮಾನವಾದ ನಿಯಮವನ್ನು ಸೇರಿಸಿ ಮತ್ತು ಮೂಲ ಸರಪಳಿಯು ಸ್ಥಳೀಯ ಇನ್ಪುಟ್ ಮಾತ್ರವಲ್ಲ, ನಿಜವಾಗಿಯೂ ಫಾರ್ವರ್ಡ್ ಆಗುವ ಸಂಚಾರವನ್ನು ನೋಡುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿ. ಹೊಸ ನಿಯಮದ ಪ್ಯಾಕೆಟ್ ಕೌಂಟರ್ ಶೂನ್ಯದಲ್ಲೇ ಉಳಿದು NAT ಕೌಂಟರ್ಗಳು ಏರಿದರೆ, ಪ್ಯಾಕೆಟ್ ನಿಮ್ಮ ನಿಯಮಕ್ಕಿಂತ ಮೊದಲೇ ಬಿಸಾಡಲಾಗುತ್ತಿದೆ. ಅದು ಸರಪಳಿಗಳ ಕ್ರಮವನ್ನು ಓದುವ ಸೂಚನೆ, ಅದೇ ನಿಯಮದ ಎರಡನೇ ಪ್ರತಿಯನ್ನು ಸೇರಿಸುವ ಸೂಚನೆಯಲ್ಲ.

ಅದನ್ನು ಹೊರಗಿನ ನೆಟ್ವರ್ಕ್ನಿಂದ ಸಾಬೀತುಪಡಿಸಿ

ಸಂಬಂಧವಿಲ್ಲದ ನೆಟ್ವರ್ಕ್ನಿಂದ ಪರೀಕ್ಷಿಸಿ. ಅದೇ LAN ನಲ್ಲಿನ ಇನ್ನೊಂದು ಯಂತ್ರದಿಂದ ಪರಿಶೀಲನೆ hairpin NAT ಬೆಂಬಲದ ಮೂಲಕ ಹಾದುಹೋಗಬಹುದು ಮತ್ತು ದೂರದ ಕ್ಲೈಂಟ್ ಬಳಸುವ ಮಾರ್ಗವನ್ನು ಎಂದೂ ಅಭ್ಯಾಸ ಮಾಡುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ ಅಲ್ಲಿನ ಹಸಿರು ಫಲಿತಾಂಶ ತಪ್ಪಾದದ್ದನ್ನು ಸಾಬೀತುಪಡಿಸುತ್ತದೆ.

tcpdump -ni any port 29443
conntrack -L | grep 29443

ಸರ್ವರ್ನಲ್ಲಿ ಮತ್ತು ಕ್ಲೈಂಟ್ನಲ್ಲಿ ಒಂದೇ ಸಮಯದಲ್ಲಿ ಕ್ಯಾಪ್ಚರ್ ಚಲಾಯಿಸಿ. ಸರ್ವರ್ನ ಕ್ಯಾಪ್ಚರ್ ಅನುವಾದಿತ ಪ್ಯಾಕೆಟ್ ಸುರಂಗದ ಕಡೆ ಹೊರಡುತ್ತದೆಯೇ ಎಂದು ತೋರಿಸುತ್ತದೆ; ಕ್ಲೈಂಟ್ನ ಕ್ಯಾಪ್ಚರ್ ವಿನಂತಿ ಬರುತ್ತದೆಯೇ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆ ಎಲ್ಲಿಗೆ ಸಂಬೋಧಿಸಲಾಗಿದೆ ಎಂದು ತೋರಿಸುತ್ತದೆ. conntrack -L ನಲ್ಲಿ ಅನುವಾದ ನಮೂದು ನಿಯಮ ಹೊಂದಿಕೆಯಾದುದನ್ನು ಸಾಬೀತುಪಡಿಸುತ್ತದೆ, ಮತ್ತು ಅದರ ಅನುಪಸ್ಥಿತಿ ಪ್ಯಾಕೆಟ್ ಎಂದೂ NAT ಸರಪಳಿಯನ್ನು ತಲುಪಲಿಲ್ಲ ಎಂದು ಸಾಬೀತುಪಡಿಸುತ್ತದೆ.

ಪೋರ್ಟ್ ಸ್ಕ್ಯಾನರ್ಗಳು ದುರ್ಬಲ ಸಾಕ್ಷ್ಯ. ಅಪ್ಲಿಕೇಶನ್ ಬದ್ಧವಾಗಿ ಆಲಿಸುವವರೆಗೆ ಅವು ಪೋರ್ಟ್ ಅನ್ನು ಮುಚ್ಚಿದೆ ಎಂದು ವರದಿ ಮಾಡುತ್ತವೆ, ಆದ್ದರಿಂದ ನಿಜವಾದ ಸೇವೆಗೆ ನಿಜವಾದ ಸಂಪರ್ಕವನ್ನು ಬಳಸಿ. ಕೊನೆಗೆ ಕೆಲಸ ಮಾಡಿದಾಗ, ಒಡ್ಡುವಿಕೆಯನ್ನು ಆ ಒಂದೇ ಪೋರ್ಟ್ನಲ್ಲಿ ಇರಿಸಿ: ಮೊದಲ ನಿಯಮ ಅಸ್ವಸ್ಥವೆನಿಸಿದ್ದರಿಂದ SSH ಅಥವಾ ನಿರ್ವಾಹಕ ಪ್ಯಾನಲ್ ಅನ್ನು ಫಾರ್ವರ್ಡ್ ಮಾಡುವುದು ಸೇವೆಯನ್ನು ಪ್ರಕಟಿಸುವುದಕ್ಕಿಂತ ದೊಡ್ಡ ನಿರ್ಣಯ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು