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 ನಿಯಮ ಎರಡರಲ್ಲೂ ಹೊಂದಬೇಕು, ಇಲ್ಲದಿದ್ದರೆ ಹೋಸ್ಟ್ ಯಾರಿಗೂ ಗಮನಕ್ಕೆ ಬಾರದೆ ಅರ್ಧ ತೆರೆದ ಸ್ಥಿತಿಗೆ ಮರಳುತ್ತದೆ.

ಒಂದು ಅಭ್ಯಾಸ ನಿಯಮಗಳ ಗುಂಪಿಗಿಂತ ಹೆಚ್ಚು ಮೌಲ್ಯದ್ದು: ಪ್ರತಿ ಬದಲಾವಣೆಯ ನಂತರ ಕ್ಲೈಂಟ್ ವಿನಂತಿಯಿಂದ ಫಾರ್ವರ್ಡ್ ಮಾರ್ಗವನ್ನು ಮತ್ತು ಎರಡನೇ ಸೆಷನ್‍ನಿಂದ ಮರುಪ್ರಾಪ್ತಿ ಮಾರ್ಗವನ್ನು ಸಾಬೀತು ಮಾಡಿ. ನೀವು ಬಳಸದ ಲಾಕ್‍ಡೌನ್ ಕೇವಲ ಒಂದು ಊಹೆ.

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