ನಿಮ್ಮ ಟನೆಲ್ ಎದ್ದಿದೆ, ಸೇವೆ ಕೇಳುತ್ತಿದೆ, ಮತ್ತು ಕಚೇರಿಯ LAN ಇನ್ನೂ ಏನನ್ನೂ ಹಿಂತಿರುಗಿಸಿ ಪಡೆಯುತ್ತಿಲ್ಲ. ಯಾರೂ VPN ಅನ್ನು ಮುರಿದಿಲ್ಲ. LAN ಕಡೆಯಿಂದ, ಲ್ಯಾಪ್ಟಾಪ್ನ ಟನೆಲ್ ವಿಳಾಸವು ಯಾವುದೋ ಒಂದು LAN ಗೆ ಅಲ್ಲಿಗೆ ಹೇಗೆ ತಲುಪಬೇಕೆಂದು ಹೇಳುವವರೆಗೆ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲ, ಮತ್ತು ವಿನಂತಿ ಹೊರಟ ಅದೇ ದಾರಿಯಲ್ಲಿ ಉತ್ತರವು ಹಿಂತಿರುಗಬೇಕು. ಸಂಪೂರ್ಣವಾಗಿ ಆರೋಗ್ಯಕರವಾದ ಟನೆಲ್ ಅನ್ನು ಯಾರಾದರೂ ಹಿಂತಿರುಗುವ ಮಾರ್ಗವನ್ನು ನೋಡುವ ಮೊದಲು ಮೂರು ಬಾರಿ ಮತ್ತೆ ಕಟ್ಟಿದ್ದನ್ನು ನಾನು ನೋಡಿದ್ದೇನೆ.

ಮುರಿದದ್ದು ಟನೆಲ್ ಅಲ್ಲ

ಎರಡೂ ತುದಿಗಳು ಖಾಸಗಿ ಶ್ರೇಣಿಗಳಲ್ಲಿ ಕುಳಿತಿವೆ, ಇದು ಸಾಮಾನ್ಯ ಸಂದರ್ಭ ಮತ್ತು ತಪ್ಪು ಸಂರಚನೆ ಅಲ್ಲ. 10.8.0.6 ನಂತಹ ವಿಳಾಸವು ಟನೆಲ್ನ ಒಳಗೆ ನಿಜವಾದದ್ದು ಮತ್ತು ಬೇರೆ ಎಲ್ಲೂ ಇಲ್ಲ, ಆದ್ದರಿಂದ LAN ಗೆ ಅಲ್ಲಿಗೆ ಏನನ್ನಾದರೂ ಕಳುಹಿಸಲು ಕಾರಣವಿಲ್ಲ. ರೂಟಿಂಗ್ ಮುಟ್ಟುವ ಮೊದಲು ಸೇವೆಯು ಟನೆಲ್ನ ಒಳಗೆ ಎಲ್ಲಾದರೂ ತಲುಪಬಹುದೇ ಎಂದು ಖಚಿತಪಡಿಸಿ: ಕ್ಲೈಂಟ್ನಲ್ಲಿ ss -ltn, ಆಲಿಸುವವನು 127.0.0.1, LAN ಇಂಟರ್ಫೇಸ್ ಅಥವಾ ಟನೆಲ್ ವಿಳಾಸಕ್ಕೆ ಬದ್ಧವಾಗಿದೆಯೇ ಎಂದು ತೋರಿಸುತ್ತದೆ. ಕೇವಲ loopback ಗೆ ಬದ್ಧವಾದ ಡೀಮನ್ ತನ್ನನ್ನು ಹೊರತುಪಡಿಸಿ ಯಾರಿಗೂ ಉತ್ತರಿಸುವುದಿಲ್ಲ, ಮತ್ತು ಯಾವುದೇ ರೂಟ್, DNAT ಅಥವಾ ಪೋರ್ಟ್ ಫಾರ್ವರ್ಡಿಂಗ್ ಅದನ್ನು ಬದಲಿಸುವುದಿಲ್ಲ.

ಪೋರ್ಟ್ 80 ಅಥವಾ 443 ನಲ್ಲಿನ ಪ್ರಾಕ್ಸಿ ಬೇರೆ ಗೋಚರತೆಯ ಬೇರೆ ಸಾಧನ. ಇದು ಪ್ಯಾಕೆಟ್ಗಳನ್ನಲ್ಲ, ವಿನಂತಿಗಳನ್ನು ಸರಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಕಚ್ಚಾ ಡೇಟಾಬೇಸ್ ಸಂಪರ್ಕಕ್ಕೆ ಇದು ತಪ್ಪು ಪದರ, ಮತ್ತು ಅದರ ಕಡೆಗೆ ಕೈಚಾಚುವುದೇ ಯಾರಾದರೂ ಏನನ್ನಾದರೂ ಅಳೆಯುವ ಮೊದಲು ಈ ಸಮಸ್ಯೆಯನ್ನು ಮೂರು ಸಾಧನಗಳ ಆಳಕ್ಕೆ ಒಯ್ಯುವ ದಾರಿ.

ರೂಟ್ನ ಆಕಾರ: ಕೊಳ ಎಲ್ಲಿದೆ ಎಂದು LAN ಗೆ ಹೇಳಿ

LAN ಗೇಟ್ವೇಯಲ್ಲಿನ ಸ್ಥಿರ ರೂಟ್, LAN ಮತ್ತು ಟನೆಲ್ ಕೊಳವು ಒಂದರ ಮೇಲೊಂದು ಬಾರದಿದ್ದಾಗ ಅತ್ಯಂತ ಸ್ವಚ್ಛ ಉತ್ತರ. ಕೊಳವನ್ನು ಟನೆಲ್ ಮುಗಿಸುವ ಯಂತ್ರದ ಕಡೆಗೆ ತಿರುಗಿಸಿ:

ip route add 10.8.0.0/24 via 192.168.1.12
route add -p 10.8.0.0 mask 255.255.255.0 192.168.1.12   # Windows, persistent

ಅದು ಒಂದು ದಿಕ್ಕನ್ನು ಮಾತ್ರ ಸರಿಪಡಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಈ ಬದಲಾವಣೆಯ ಅರ್ಧಮುಗಿದ ಆವೃತ್ತಿಗಳು ಪ್ರಗತಿಯಂತೆ ಕಾಣುತ್ತವೆ. ಟನೆಲ್ ಬದಿಗೂ ಹೊಂದುವ ಅರ್ಧ ಬೇಕು, ಇಲ್ಲದಿದ್ದರೆ ಉತ್ತರವು ಕ್ಲೈಂಟ್ನಿಂದ ಅದರ ಸ್ವಂತ ಡೀಫಾಲ್ಟ್ ರೂಟ್ ಮೂಲಕ ಹೊರಟು ದಾರಿಯಲ್ಲೇ ಸಾಯುತ್ತದೆ:

push "route 192.168.1.0 255.255.255.0"

ಸರ್ವರ್ನ ಹಿಂದೆ ಅಲ್ಲ, ಒಂದು ಕ್ಲೈಂಟ್ನ ಹಿಂದೆ ಇರುವ ಸಬ್ನೆಟ್ಗೆ ಸರ್ವರ್ಗೆ ಸಿಸ್ಟಮ್ ರೂಟ್ ಮತ್ತು ಆ ಕ್ಲೈಂಟ್ನ ಫೈಲ್ನಲ್ಲಿ iroute ನಮೂದು ಎರಡೂ ಬೇಕು, ಮತ್ತು ಆ ಫೈಲ್ client-config-dir ಅಡಿಯಲ್ಲಿದೆ. iroute ಇಲ್ಲದೆ, OpenVPN ಪ್ರಿಫಿಕ್ಸ್ ಇದೆ ಎಂದು ತಿಳಿದಿದೆ ಮತ್ತು ಯಾವ ಕ್ಲೈಂಟ್ ಅದನ್ನು ಹೊಂದಿದೆ ಎಂದು ಗೊತ್ತಿಲ್ಲ: ಪ್ಯಾಕೆಟ್ಗಳು ಬರುತ್ತವೆ ಮತ್ತು ಡೀಮನ್ಗೆ ಅವನ್ನು ಹೊಂದಿಸಲು ಏನೂ ಇಲ್ಲ.

ಇಲ್ಲಿ ಹೆಸರು ಕೊಡಲು ಯೋಗ್ಯವಾದ ಪುರಾಣವಿದೆ. ರೂಟ್ ವಿಳಾಸವನ್ನು ತಲುಪಬಹುದಾದಂತೆ ಮಾಡುತ್ತದೆ; ಅದು ಎದುರು ಬದಿಯನ್ನು ಉತ್ತರಿಸಲು ಸಿದ್ಧಗೊಳಿಸುವುದಿಲ್ಲ. ಸೈಟ್-ಟು-ಸೈಟ್ ಸಹವರ್ತಿಗಳು ಮೇಲೆ ಇನ್ನೊಂದು ಪದರ ಸೇರಿಸುತ್ತವೆ, ಏಕೆಂದರೆ ದೂರದ ಗೇಟ್ವೇ ತನ್ನ ನೀತಿಯಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡಿದ ಪ್ರಿಫಿಕ್ಸ್ಗಳ ಒಳಗಿನ ಮೂಲಗಳನ್ನು ಮಾತ್ರ ಸ್ವೀಕರಿಸುತ್ತದೆ, ಮತ್ತು ಮನೆಯ ಕೊಳದಿಂದ ಬರುವ ಲ್ಯಾಪ್ಟಾಪ್ ಅವುಗಳ ಒಳಗಿಲ್ಲ.

NAT ನ ಆಕಾರ: ಒಳಗೆ DNAT, ಮತ್ತು ಎಲ್ಲರೂ ಬಿಟ್ಟುಬಿಡುವ SNAT ಸಾಲು

LAN ಗೇಟ್ವೇಯನ್ನು ಮುಟ್ಟಲಾಗದಿದ್ದಾಗ, ಅಥವಾ ನಿಖರವಾಗಿ ಒಂದು ಪೋರ್ಟ್ ಅನ್ನು ಪ್ರಕಟಿಸಲು ಬಯಸಿದಾಗ, VPN ಹೋಸ್ಟ್ನಲ್ಲಿನ ಅನುವಾದವು LAN ನಲ್ಲಿ ಯಾವುದೇ ರೂಟ್ ಇಲ್ಲದೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಪೋರ್ಟ್ ಅನ್ನು ಪ್ರಕಟಿಸಿ, ಅದನ್ನು ಮುಂದಕ್ಕೆ ಕಳುಹಿಸಿ, ಮತ್ತು ಟನೆಲ್ಗೆ ಹೋಗುವ ದಾರಿಯಲ್ಲಿ ಮೂಲವನ್ನು ಅನುವಾದಿಸಿ:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 10.8.0.6:3000
iptables -A FORWARD -i eth0 -o tun0 -p tcp -d 10.8.0.6 --dport 3000 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -d 10.8.0.6 -p tcp --dport 3000 -j SNAT --to-source 10.8.0.1

ಮೂರನೇ ಸಾಲು ಕಾಣೆಯಾಗುವ ಸಾಲು. ಅದನ್ನು ಬಿಟ್ಟುಬಿಟ್ಟರೆ ಕ್ಲೈಂಟ್ ಮೂಲ LAN ವಿಳಾಸವನ್ನು ಮೂಲವಾಗಿ ನೋಡುತ್ತದೆ, ತನ್ನದೇ ಡೀಫಾಲ್ಟ್ ರೂಟ್ ಮೂಲಕ ಉತ್ತರಿಸುತ್ತದೆ, ಮತ್ತು ಆ ಉತ್ತರವು LAN ಕಡೆಗೆ ಹಿಂತಿರುಗುವ ಬದಲು ಟನೆಲ್ಗೆ ಹೋಗುತ್ತದೆ. ಸಂಪರ್ಕ ಉಳಿಯುತ್ತದೆಯೇ ಎಂಬುದು ನೀವು ಎಂದೂ ಯೋಜಿಸದ ರೂಟಿಂಗ್ ಮೇಲೆ ಅವಲಂಬಿತವಾಗುತ್ತದೆ. SNAT ಇದ್ದರೆ ಕ್ಲೈಂಟ್ ಸರ್ವರ್ನ ಟನೆಲ್ ವಿಳಾಸವನ್ನು ನೋಡುತ್ತದೆ, ಆದ್ದರಿಂದ ಉತ್ತರವು ಟನೆಲ್ ಮೂಲಕ ಹಿಂತಿರುಗಿ ಅನುವಾದವನ್ನು ರದ್ದು ಮಾಡಬಲ್ಲ ಏಕೈಕ ಹೋಸ್ಟ್ ತಲುಪುತ್ತದೆ.

ಗ್ರಾಹಕ ಫರ್ಮ್ವೇರ್ ತನ್ನದೇ ಸರಪಳಿ ಹೆಸರುಗಳನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಆ ಅನುವಾದವನ್ನು ನಿಮಗಾಗಿ ಸೃಷ್ಟಿಸುವುದಿಲ್ಲ. Tomato ನಲ್ಲಿ ಒಳಬರುವ ನಿಯಮವು WANPREROUTING ಗೆ ಬೀಳುತ್ತದೆ ಮತ್ತು ನಂತರ wanin ನಂತಹ ಫಿಲ್ಟರ್ ಸರಪಳಿಗೆ, ಮತ್ತು ಪೂರ್ಣವಾಗಿ ಕಾಣುವ ನಿಯಮಗಳ ಗುಂಪಿಗೂ ಇನ್ನೂ ಕೈಯಿಂದ ಬರೆದ POSTROUTING ಸಾಲು ಬೇಕು. ಅದು ಫರ್ಮ್ವೇರ್ ದೋಷವಲ್ಲ; ಅದು ಒಳಬರುವ ಸಂಚಾರಕ್ಕೆ ಮಾತ್ರ ಬರೆದ ನಿಯಮಗಳ ಗುಂಪು.

ಸರಿಯಾಗಿ ಕಾಣುವ ನಿಯಮವೂ ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಏಕೆ ಬಿಡುತ್ತದೆ

ಈ ವೈಫಲ್ಯಗಳ ಬಹುಪಾಲು ನೀವು ನೋಡುತ್ತಿರುವ ನಿಯಮದಲ್ಲಿಲ್ಲ. ಈ ಕ್ರಮದಲ್ಲಿ ನಾಲ್ಕು ವಿಷಯಗಳನ್ನು ಪರಿಶೀಲಿಸಿ, ಮತ್ತು ನಿಲ್ಲದ ಮೊದಲನೆಯದರಲ್ಲಿ ನಿಲ್ಲಿಸಿ:

  • ಸರಪಳಿ ಕ್ರಮ. iptables -I ಮೇಲೆ ಸೇರಿಸುತ್ತದೆ ಮತ್ತು -A ಕೊನೆಯಲ್ಲಿ ಸೇರಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಹಿಂದಿನ ಅನುಮತಿ ಅಥವಾ ತಡೆ ನಿಯಮವೇ ಮೊದಲು ನಿರ್ಧರಿಸುತ್ತದೆ.
  • ತಪ್ಪು ಸರಪಳಿ. ರೂಟರ್ಗೆ ತಾನೇ ಉದ್ದೇಶಿಸಿದ ಸಂಚಾರವು INPUT ದಾಟುತ್ತದೆ, ಮತ್ತು ಮುಂದಕ್ಕೆ ರವಾನಿಸಿದ ಸಂಚಾರವು ಅದನ್ನು ಎಂದಿಗೂ ಮುಟ್ಟುವುದಿಲ್ಲ. ಒಂದು ಸೇವೆಯನ್ನು ಪ್ರಕಟಿಸಲು ಎರಡರಲ್ಲೂ ನಿಯಮಗಳು ಬೇಕಾಗಬಹುದು.
  • ದಿಕ್ಕಿನ ಧ್ವಜಗಳು. -i tun0 ಕ್ಲೈಂಟ್ಗಳಿಂದ ಬರುವ ಸಂಚಾರಕ್ಕೆ ಹೊಂದುತ್ತದೆ ಮತ್ತು -o tun0 ಅವರ ಕಡೆಗೆ ಹೋಗುವ ಸಂಚಾರಕ್ಕೆ. ತಪ್ಪು ಧ್ವಜದೊಂದಿಗೆ REJECT ನೀವು ಉದ್ದೇಶಿಸದ ಯಾವುದನ್ನೋ ತಡೆಯುತ್ತದೆ.
  • ಮೂಲ ನಿರ್ಬಂಧ. ಒಂದು ಕ್ಲೈಂಟ್ ವಿಳಾಸವನ್ನು ಸ್ವೀಕರಿಸುವ ಫಾರ್ವರ್ಡ್ ಆ ಕ್ಲೈಂಟ್ನಿಂದ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ಇತರ ಮೂಲವನ್ನು ಒಂದು ಮಾತೂ ಇಲ್ಲದೆ ಬಿಡುತ್ತದೆ.

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

ಸ್ಥಳೀಯ ಫಾರ್ವರ್ಡಿಂಗ್, LAN ನಲ್ಲಿ ಏನನ್ನೂ ಬದಲಿಸಲಾಗದಿದ್ದಾಗ

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

ssh -N -f -L 3000:10.8.0.6:3000 user@vpn-host

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

ಇನ್ನೊಂದು ನಿಯಮ ಸೇರಿಸುವ ಮೊದಲು ಎರಡೂ ದಿಕ್ಕುಗಳನ್ನು ಪರಿಶೀಲಿಸಿ

ಅನುವಾದವು ಗುರುತುಗಳನ್ನು ಬಿಡುತ್ತದೆ, ಮತ್ತು ಅವನ್ನು ಓದುವುದು ಊಹಿಸುವುದಕ್ಕಿಂತ ಉತ್ತಮ. VPN ಹೋಸ್ಟ್ನಲ್ಲಿ, conntrack -L ಅನುವಾದವು ನಿಜವಾಗಿ ನಡೆಯಿತೇ ಎಂದು ತೋರಿಸುತ್ತದೆ, iptables -t nat -L -n -v ಕೌಂಟರ್ಗಳು ಚಲಿಸಿದವೇ ಎಂದು ತೋರಿಸುತ್ತದೆ, ಮತ್ತು tcpdump -ni any port 3000 ಯಾವ ಮೂಲ ವಿಳಾಸವು ನಿಜವಾಗಿ ಬಂದಿತು ಎಂದು ತೋರಿಸುತ್ತದೆ. ಕ್ಲೈಂಟ್ನಲ್ಲಿ, ss -ltn ಆಲಿಸುವವನು ಟನೆಲ್ ತಲುಪಬಹುದಾದ ವಿಳಾಸದಲ್ಲಿದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.

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

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