ಸರ್ವರ್ ಅಥವಾ ಕ್ಲೈಂಟ್: ದ್ವಿಪಾತ್ರದ Pi ಯಲ್ಲಿ ಯಾವ OpenVPN ಘಟಕ
ಎರಡು OpenVPN ದೃಷ್ಟಾಂತಗಳು ಒಂದು Pi ಯನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತವೆ: ಒಂದು ಸಂಚರಿಸುವ ಬಳಕೆದಾರರನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ, ಇನ್ನೊಂದು ಮೇಲ್ಮಟ್ಟದ ಪೂರೈಕೆದಾರರಿಗೆ ಸಂಪರ್ಕಿಸುತ್ತದೆ. ಯಾವುದನ್ನಾದರೂ ಮರುಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ಘಟಕದ ಹೆಸರು ಮತ್ತು ಕೋಶವನ್ನು ಓದಿ.
ಒಂದು Pi ಯಲ್ಲಿ ಎರಡು OpenVPN ಪ್ರಕ್ರಿಯೆಗಳು ಚಲಿಸುತ್ತವೆ, ಅದು ಒಂದೇ ಸಮಯದಲ್ಲಿ ಸಂಚರಿಸುವ ಬಳಕೆದಾರರನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಮೇಲ್ಮಟ್ಟದ ಪೂರೈಕೆದಾರರನ್ನು ತಲುಪುತ್ತದೆ, ಮತ್ತು ಅವು ಯಂತ್ರಾಂಶವನ್ನು ಬಿಟ್ಟು ಬಹುತೇಕ ಏನನ್ನೂ ಹಂಚಿಕೊಳ್ಳುವುದಿಲ್ಲ. ಒಂದು ಒಳಬರುವ ಸುರಂಗಗಳಿಗೆ ಕೇಳುತ್ತದೆ, ಇನ್ನೊಂದು ಹೊರಗೆ ಡಯಲ್ ಮಾಡುತ್ತದೆ. ಪ್ರತಿಯೊಂದೂ ತನ್ನದೇ ಕೋಶವನ್ನು ಓದುತ್ತದೆ, ಮತ್ತು ಪ್ರತಿಯೊಂದಕ್ಕೂ ತನ್ನದೇ ವೈಫಲ್ಯ ವಿಧಾನವಿದೆ. ತಪ್ಪಾದ ಘಟಕವನ್ನು ಮರುಪ್ರಾರಂಭಿಸುವುದು ಕ್ಲೈಂಟ್ ಸರಿಪಡಿಸುವಿಕೆಯು ಬದಲಿಗೆ ಕೇಳುಗನನ್ನು ಅಲ್ಲಾಡಿಸುವ ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ದಾರಿ.
ಘಟಕದ ಹೆಸರನ್ನು ಅದು ಲೋಡ್ ಮಾಡುವ ಕೋಶಕ್ಕೆ ಹೊಂದಿಸಿ
Upstream 2.6 ಎರಡು ಟೆಂಪ್ಲೇಟ್ ಘಟಕಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ, [email protected] ಮತ್ತು [email protected]. ಸರ್ವರ್ ಟೆಂಪ್ಲೇಟ್ /etc/openvpn/server ನಲ್ಲಿ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ ಮತ್ತು ಅಲ್ಲಿಂದ %i.conf ಅನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ. ಕ್ಲೈಂಟ್ ಟೆಂಪ್ಲೇಟ್ /etc/openvpn/client ನಲ್ಲಿ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. roaming ಎಂಬ ದೃಷ್ಟಾಂತವು ಒಂದೇ ಸಮಯದಲ್ಲಿ ಎರಡೂ ಸ್ಥಳಗಳಲ್ಲಿ ಇರಬಹುದು, ಸರ್ವರ್ ಮತ್ತು ಕ್ಲೈಂಟ್ ಆಗಿ, ಎರಡು ಅಸಂಬಂಧಿತ ಸಂರಚನೆಗಳೊಂದಿಗೆ ಮತ್ತು ಸ್ಟ್ರಿಂಗ್ ಹೊರತುಪಡಿಸಿ ಅವುಗಳ ನಡುವೆ ಯಾವುದೇ ಕೊಂಡಿ ಇಲ್ಲದೆ.
ಕಡತ ವ್ಯವಸ್ಥೆಯ ಬದಲು systemd ಅನ್ನು ಕೇಳಿ, ಏಕೆಂದರೆ ಪ್ಯಾಕೇಜ್ ತಯಾರಕರು ಕೆಲಸದ ಕೋಶ ಅಥವಾ ಬೈನರಿ ಪಡೆಯುವ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ಬದಲಿಸಬಹುದಾದ ಹೆಚ್ಚುವರಿ ಕಡತಗಳನ್ನು ಸೇರಿಸುತ್ತಾರೆ.
systemctl list-units --type=service 'openvpn-*@*' systemctl cat [email protected] systemctl show -p WorkingDirectory -p ExecStart [email protected]
ಮೊದಲ ಆಜ್ಞೆ ಪ್ರತಿ ರಚಿಸಲಾದ ಘಟಕವನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ, ವಿಫಲವಾಗಿ ಲೋಡ್ ಆಗಿ ಉಳಿದವುಗಳೂ ಸೇರಿ. ಎರಡನೆಯದು ಘಟಕ ಕಡತವನ್ನು ಯಾವುದೇ ಅತಿಕ್ರಮಣದೊಂದಿಗೆ ಮುದ್ರಿಸುತ್ತದೆ. ಮೂರನೆಯದು ಪ್ರಶ್ನೆಯನ್ನು ನಿರ್ಧರಿಸುವ ಎರಡು ಸಂಗತಿಗಳನ್ನು ನೋಡುವ ಅತ್ಯಂತ ವೇಗದ ದಾರಿ: ಪ್ರಕ್ರಿಯೆ ಪ್ರಾರಂಭವಾಗುವ ಕೋಶ, ಮತ್ತು ಅದಕ್ಕೆ ನೀಡಿದ ಸಂರಚನಾ ಮಾರ್ಗ.
ಪ್ಯಾಕೆಟ್ ದಿಕ್ಕಿನಿಂದ ನಿರ್ಧರಿಸಿ, ಇಂಟರ್ಫೇಸ್ ಹೆಸರಿನಿಂದ ಅಲ್ಲ
ಸರ್ವರ್ ದೃಷ್ಟಾಂತವು ಕೇಳುವ ಸಾಕೆಟ್ ಹೊಂದಿದೆ ಮತ್ತು ಸಂಪರ್ಕಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ. ಅದರ ಎನ್ಕ್ರಿಪ್ಟ್ ಆದ ಸಾಗಣೆ Pi ಯಲ್ಲಿ ಸ್ಥಳೀಯ ಇನ್ಪುಟ್ ಮತ್ತು ಸ್ಥಳೀಯ ಔಟ್ಪುಟ್ ಆಗಿದೆ, ಆದರೆ ಬಳಕೆದಾರರಿಗೆ ಅದು ಮುಂದೊಯ್ಯುವ ಸಂಚಾರವು ಮುಂದೊಯ್ಯುವ ಮಾರ್ಗವನ್ನು ಅನುಸರಿಸುತ್ತದೆ ಮತ್ತು ಬೇರೆ ನಿಯಮಗಳ ಗುಂಪಿಗೆ ಒಳಪಡುತ್ತದೆ. ಕ್ಲೈಂಟ್ ದೃಷ್ಟಾಂತಕ್ಕೆ ಆ ಅರ್ಥದಲ್ಲಿ ಕೇಳುಗನಿಲ್ಲ: ಅದು ಸಹವರ್ತಿಗೆ ಡಯಲ್ ಮಾಡುತ್ತದೆ, ಆದ್ದರಿಂದ ಅದರ ಎನ್ಕ್ರಿಪ್ಟ್ ಆದ ಸಾಗಣೆ ಕೆಳ ಪದರದ ಕಡೆಗೆ ಸ್ಥಳೀಯ ಔಟ್ಪುಟ್.
ಆ ವ್ಯತ್ಯಾಸವು ನಿಯಮವು ಎಲ್ಲಿ ಸೇರುತ್ತದೆ ಎಂದು ಹೇಳುತ್ತದೆ. ಮುಂದೊಯ್ಯುವ ಸರಣಿಯೊಳಗಿನ ಇಂಟರ್ಫೇಸ್ಗೆ ಹೊಂದುವ ನಿಯಮವು ರೂಟಿಂಗ್ ಈಗಾಗಲೇ ಆಯ್ಕೆ ಮಾಡಿದ ಸಂಚಾರಕ್ಕೆ ಮಾತ್ರ ಅನುಮತಿ ನೀಡುತ್ತದೆ; ಅದು ಎಂದಿಗೂ ಮಾರ್ಗವನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದಿಲ್ಲ. ಸಂಚರಿಸುವ ಬಳಕೆದಾರರ ಪ್ಯಾಕೆಟ್ಗಳು ತಪ್ಪು ದಾರಿಯಿಂದ ಹೊರಟಾಗ, ಪರಿಶೀಲಿಸಬೇಕಾದ ಸರಣಿ forward, output ಅಲ್ಲ.
ಸಿದ್ಧಾಂತ ಮಾಡುವ ಮೊದಲು ಸಾಕೆಟ್ಗಳನ್ನು ನೋಡಿ. udp/1194 ಗೆ ಬದ್ಧವಾದ ಸರ್ವರ್ ಕೇಳುವ ಸಾಕೆಟ್ ತೋರಿಸುತ್ತದೆ. ಕ್ಲೈಂಟ್ ಪೂರೈಕೆದಾರರ ವಿಳಾಸದೊಂದಿಗೆ ಸಂಬಂಧ ತೋರಿಸುತ್ತದೆ ಮತ್ತು ಕೇಳುವ ಯಾವುದೂ ಇಲ್ಲ.
ss -lunp | grep openvpn ss -unp state established '( dport = :1194 or sport = :1194 )'
ಒಂದು ದೃಷ್ಟಾಂತದ ಡಿಫಾಲ್ಟ್ ಮಾರ್ಗವು ಇನ್ನೊಂದರ ಉತ್ತರಗಳನ್ನು ಹಿಡಿಯಬಹುದು
ಮೇಲ್ಮಟ್ಟದ ಕ್ಲೈಂಟ್ ತಳ್ಳುವ redirect-gateway ಯಂತ್ರದ ಮೇಲಿನ ಎಲ್ಲದರೊಂದಿಗೂ ಸ್ಪರ್ಧಿಸುವ ಡಿಫಾಲ್ಟ್ ಮಾರ್ಗವನ್ನು ಸ್ಥಾಪಿಸುತ್ತದೆ, ಅದರಲ್ಲಿ ಸರ್ವರ್ ಸಂಚರಿಸುವ ಬಳಕೆದಾರರಿಗೆ ಕಳುಹಿಸುವ ಉತ್ತರಗಳು ಸಹ ಸೇರಿವೆ. OpenVPN ಸುರಂಗವು ತಲುಪಬಹುದಾದಂತೆ ಉಳಿಯಲು ತನ್ನದೇ ಸಹವರ್ತಿ ವಿಳಾಸಕ್ಕೆ ವಿನಾಯಿತಿ ಮಾಡುತ್ತದೆ, ಆದರೆ ಆ ವಿನಾಯಿತಿ ಹೋಟೆಲ್ ಜಾಲದಲ್ಲಿ ಕುಳಿತಿರುವ ದೂರವಾಣಿ ಬಗ್ಗೆ ಏನನ್ನೂ ಹೇಳುವುದಿಲ್ಲ.
ಲಕ್ಷಣ ಸಾಮಾನ್ಯವಾಗಿ ಅಸಮಮಿತೀಯ. ಕೈಹಿಡಿತ ಪೂರ್ಣಗೊಳ್ಳುತ್ತದೆ, ಕ್ಲೈಂಟ್ ಸಂಪರ್ಕಿತ ಎಂದು ವರದಿ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಮೊದಲ ಉತ್ತರ ಪ್ಯಾಕೆಟ್ ನಂತರ ಸಂಚಾರ ಸಾಯುತ್ತದೆ. ಮೂಲ ಆಧಾರಿತ ನೀತಿ ರೂಟಿಂಗ್, ಅಥವಾ --mark ಮೂಲಕ ಸರ್ವರ್ ದೃಷ್ಟಾಂತದಲ್ಲಿ ಹಾಕಿದ ಪ್ಯಾಕೆಟ್ ಗುರುತು, ಎರಡು ಹರಿವುಗಳನ್ನು ಬೇರೆಯಾಗಿ ಇಡುತ್ತದೆ; ಅವುಗಳಲ್ಲಿ ಯಾವುದೂ ಒಂಟಿಯಾಗಿ ಪೂರ್ಣ ನಿಯಮ ಗುಂಪಲ್ಲ, ಮತ್ತು ಎರಡೂ ತಾವು ಆಯ್ಕೆ ಮಾಡುವ ಕೋಷ್ಟಕದಲ್ಲಿ ಮಾನ್ಯ ಮಾರ್ಗಗಳನ್ನು ಬೇಕಾಗುತ್ತವೆ.
ಸುರಂಗದ ಸ್ಥಿತಿಯ ಬದಲು ಸ್ಥಳೀಯ ನಿರ್ಣಯವನ್ನು ಪರೀಕ್ಷಿಸಿ, ಏಕೆಂದರೆ ಕರ್ನಲ್ OpenVPN ಪ್ಯಾಕೆಟ್ ನೋಡುವ ಮೊದಲೇ ಮೂಲ ಮತ್ತು ಇಂಟರ್ಫೇಸ್ ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ.
ip route get 203.0.113.44 ip rule show
ಒಂದು ಪಾತ್ರವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಇನ್ನೊಂದು ಉಳಿದುಕೊಂಡಿತು ಎಂದು ಸಾಬೀತು ಮಾಡಿ
ಎರಡೂ ಪಾತ್ರಗಳು ಒಂದೇ ಕೆಳ ಪದರವನ್ನು ಅವಲಂಬಿಸಿದಾಗ ಕ್ರಮ ಮುಖ್ಯ. ಬಳಕೆದಾರ ಸಂಚಾರವನ್ನು ಮುಂದೊಯ್ಯುವ ಮೊದಲು ಮೇಲ್ಮಟ್ಟದ ಮಾರ್ಗ ಇರಬೇಕಿದ್ದರೆ ಮೊದಲು ಕ್ಲೈಂಟ್ ಮರುಪ್ರಾರಂಭಿಸಿ, ಮತ್ತು ಅದರ ಕೇಳುಗ ಅಥವಾ ಅದರ ಕೊಳವನ್ನು ಮಾತ್ರ ಬದಲಿಸುತ್ತಿದ್ದರೆ ಮೊದಲು ಸರ್ವರ್ ಮರುಪ್ರಾರಂಭಿಸಿ. ಹೇಗಾದರೂ ನಂತರ ಎರಡೂ ಘಟಕಗಳನ್ನು ದೃಢೀಕರಿಸಿ, ಏಕೆಂದರೆ ವಿಫಲ ಮರುಪ್ರಾರಂಭವು ಇನ್ನೊಂದು ಪಾತ್ರವನ್ನು ಹಳೆಯ ಸ್ಥಿತಿಯಲ್ಲಿ ಚಲಿಸುತ್ತಿರಲು ಬಿಡಬಹುದು.
ಬದಲಾವಣೆಯ ಮೊದಲು ನಿಲ್ಲಿಸುವ ಷರತ್ತನ್ನು ಬರೆಯಿರಿ: ಮೇಲ್ಮಟ್ಟದ ಸುರಂಗ ಕಳೆದುಕೊಂಡರೆ ಸಂಚರಿಸುವ ಬಳಕೆದಾರರು ತಡೆಯಾಗುತ್ತಾರೆಯೇ, ಅಥವಾ Pi ಯ ಸ್ವಂತ ಮೇಲ್ಮುಖ ಕೊಂಡಿಗೆ ಹಿಂತಿರುಗುತ್ತದೆಯೇ? DNS ಮತ್ತು IPv6 ಗೂ ಸ್ಪಷ್ಟ ಉತ್ತರ ಬೇಕು, ಏಕೆಂದರೆ ತಳ್ಳಿದ ರಿಜಾಲ್ವರ್ ತಾನು ಉಪಯುಕ್ತವಾಗಿಸಿದ ಮಾರ್ಗಕ್ಕಿಂತ ಹೆಚ್ಚು ಕಾಲ ಬದುಕುತ್ತದೆ.
systemctl restart [email protected] systemctl is-active [email protected] journalctl -u [email protected] -n 20 --no-pager
ಮೂರು ವಿಷಯಗಳು ಒಂದೇ ಸಮಯದಲ್ಲಿ ನಿಜವಾದಾಗ ಮಾತ್ರ ಬದಲಾವಣೆಯನ್ನು ಸ್ವೀಕರಿಸಿ: ಹೊಸ ಒಳಬರುವ ಸಂಪರ್ಕ ಪೂರ್ಣಗೊಳ್ಳುತ್ತದೆ, ಮುಂದೊಯ್ದ ಅಪ್ಲಿಕೇಶನ್ ಉದ್ದೇಶಿತ ನಿರ್ಗಮನದ ಮೂಲಕ ತನ್ನ ಗಮ್ಯಸ್ಥಾನ ತಲುಪುತ್ತದೆ, ಮತ್ತು ಎರಡೂ ಪ್ರಕ್ರಿಯೆಗಳು ಇನ್ನೂ ತಮ್ಮ ನಿರೀಕ್ಷಿತ ಸಹವರ್ತಿಯನ್ನು ವರದಿ ಮಾಡುತ್ತವೆ. ಮೂರರಲ್ಲಿ ಒಂದು ವಿಫಲವಾದರೆ, ನೀವು ತಪ್ಪು ದೃಷ್ಟಾಂತ ಅಥವಾ ತಪ್ಪು ಮಾರ್ಗವನ್ನು ಬದಲಿಸಿದ್ದೀರಿ, ಮತ್ತು ಮುಂದಿನ ಹೆಜ್ಜೆ ಬೇರೆ ಏನನ್ನಾದರೂ ಮರುಪ್ರಾರಂಭಿಸುವುದಲ್ಲ, ಘಟಕವನ್ನು ಮತ್ತೆ ಓದುವುದು.