ಒಂದು OpenVPN ಕ್ಲೈಂಟ್ SSH ಮೂಲಕ ಇನ್ನೊಂದನ್ನು ತಲುಪಲು ಅನುಮತಿಸಿ, ಪೂಲ್ ತೆರೆಯದೆ
client-to-client ಆಫ್ ಆಗಿರಲಿ, ಕರ್ನೆಲ್ ಒಂದು ಹರಿವನ್ನು ಮುಂದಕ್ಕೆ ಕಳುಹಿಸಲಿ, ಪೂಲ್ನ ಉಳಿದ ಭಾಗ ಮುಚ್ಚಿರಲಿ. ಸರ್ವರ್ನಲ್ಲಿ ಎರಡು ನಿಯಮಗಳು ಮತ್ತು ಗಮ್ಯಸ್ಥಾನದಲ್ಲಿ ಒಂದು.
ಒಂದು ಕ್ಲೈಂಟ್ ಇನ್ನೊಂದು ಕ್ಲೈಂಟ್ನ SSH ಸೇವೆಯನ್ನು ತಲುಪಬೇಕು, ಮತ್ತು ಪೂಲ್ನ ಉಳಿದ ಭಾಗ ಇಂದಿಗಿಂತ ಹೆಚ್ಚು ಪ್ರತ್ಯೇಕವಾಗಿಯೇ ಇರಬೇಕು. ಆಕರ್ಷಕ ಸ್ವಿಚ್ client-to-client, ಇದು ಎಲ್ಲರಿಗೂ ಒಂದೇ ಬಾರಿಗೆ ಸಹಚರ ಪ್ರವೇಶವನ್ನು ಆನ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ನಿರ್ಧಾರವನ್ನು ಕರ್ನೆಲ್ಗೆ ಬದಲಾಗಿ OpenVPN ಗೆ ನೀಡುತ್ತದೆ. ಸಣ್ಣ ಉತ್ತರ ಆ ಸ್ವಿಚ್ ಆಫ್ ಆಗಿರಿಸಿ, ಸರ್ವರ್ನ ಸ್ವಂತ ರೂಟಿಂಗ್ ಮತ್ತು ಫೈರ್ವಾಲ್ ನಿಖರವಾಗಿ ಒಂದು ಹರಿವನ್ನು ಹೊರಲು ಬಿಡುತ್ತದೆ.
ನಿಯಮದ ಪಠ್ಯಕ್ಕಿಂತ ಕಾರ್ಯವಿಧಾನ ಮುಖ್ಯ, ಏಕೆಂದರೆ ಎರಡು ವಿಧಾನಗಳು ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಬೇರೆ ಬೇರೆ ಸ್ಥಳಗಳಲ್ಲಿ ಇಡುತ್ತವೆ. ಯಾವುದನ್ನು ಆರಿಸಿದ್ದೀರಿ ಎಂದು ತಿಳಿಯುವುದು ಏನೂ ಮಾಡದಂತೆ ಕಾಣುವ ನಿಯಮವನ್ನೂ ಮತ್ತು ಅದಿಲ್ಲದೆ ಸಂಪರ್ಕಿಸುವ ಸಹಚರನನ್ನೂ ವಿವರಿಸುತ್ತದೆ.
client-to-client ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಎಲ್ಲಿಗೆ ಸರಿಸುತ್ತದೆ
client-to-client ಆನ್ ಇರುವಾಗ ಸರ್ವರ್ ಸಹಚರನ ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಟನಲ್ ಸಾಧನದಿಂದ ಮತ್ತೆ ಹೊರಕ್ಕೆ ಕಳುಹಿಸುವ ಬದಲು ಒಳಗಿನಿಂದಲೇ ಮುಂದಕ್ಕೆ ಕಳುಹಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಪ್ಯಾಕೆಟ್ ಎಂದಿಗೂ ಕರ್ನೆಲ್ನ ಫಾರ್ವರ್ಡಿಂಗ್ ಮಾರ್ಗವನ್ನು ತಲುಪುವುದಿಲ್ಲ. ಇದು ಅನುಕೂಲಕರ ಮತ್ತು ನಿಮ್ಮ ಫೈರ್ವಾಲ್ ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬೇಕಾದ ಹರಿವನ್ನು ಎಂದಿಗೂ ನೋಡುವುದಿಲ್ಲ ಎಂದೂ ಅರ್ಥ. ಆಯ್ಕೆಯನ್ನು ಆಫ್ ಇರಿಸಿದರೆ ಸರ್ವರ್ ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಅದೇ ಇಂಟರ್ಫೇಸ್ ಮೂಲಕ ಮತ್ತೆ ಹೊರಕ್ಕೆ ಕಳುಹಿಸುತ್ತದೆ, ಇದು ಅದನ್ನು netfilter ಮುಂದೆ ಇಡುತ್ತದೆ. ಅದೇ ಇಂಟರ್ಫೇಸ್ ಒಳಗೆ, ಅದೇ ಹೊರಕ್ಕೆ, ಮತ್ತು FORWARD ಸರಪಳಿಗೆ ಮಾತಿದೆ.
ವಿನಿಮಯ ಸ್ಪಷ್ಟ: ಒಂದು ನೀತಿ ಬಿಂದುವನ್ನು ಪಡೆಯುತ್ತೀರಿ ಮತ್ತು ಶಾರ್ಟ್ಕಟ್ ನಿಮಗಾಗಿ ಮಾಡುತ್ತಿದ್ದ ರೂಟಿಂಗ್ ಹಾಗೂ ಫಾರ್ವರ್ಡಿಂಗ್ ಅನ್ನು ನೀವು ತೆಗೆದುಕೊಳ್ಳುತ್ತೀರಿ. ಆ ಕೆಲಸ ಒಂದು ಹರಿವಿಗೆ ಚಿಕ್ಕದು ಮತ್ತು ನೀವು ಸೇರಿಸುವ ಪ್ರತಿ ಅಪವಾದದೊಂದಿಗೆ ಬೆಳೆಯುತ್ತದೆ. ಅಪವಾದಗಳನ್ನು ಈಗ ಎಣಿಸಿ, ಏಕೆಂದರೆ ಸಹಚರರ ನಡುವಿನ ನೀತಿ ನಿಜವಾಗಿ ನಿಯಮ ಸಮುಚ್ಚಯದಲ್ಲೇ ವಾಸಿಸುತ್ತದೆ.
ಸಹಚರನ ಪ್ಯಾಕೆಟ್ ನಿಜವಾಗಿ ಹಾದುಹೋಗುವ ಮಾರ್ಗ
Linux Community OpenVPN 2.6 ಸೇವೆ, DCO ಬದಲು ಬಳಕೆದಾರ ಜಾಗದಲ್ಲಿ TUN ಸಂಸ್ಕರಣೆ, ಸಬ್ನೆಟ್ ಟೋಪಾಲಜಿ, tun0, ಮತ್ತು ಕ್ಲೈಂಟ್ A 10.44.0.21 ನಲ್ಲಿ, ಕ್ಲೈಂಟ್ B 10.44.0.37 ನಲ್ಲಿ ಇರುವ 10.44.0.0/24 ಪೂಲ್ ಎಂದು ಭಾವಿಸಿ. ಸಬ್ನೆಟ್ ಟೋಪಾಲಜಿಯಲ್ಲಿ A ಪಡೆದ ವಿಳಾಸ ಮತ್ತು ನೆಟ್ಮಾಸ್ಕ್ ಈಗಾಗಲೇ ಪೂಲ್ ಅನ್ನು ಆವರಿಸುತ್ತವೆ, ಆದ್ದರಿಂದ A ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ತಳ್ಳಲಾದ ಮಾರ್ಗವಿಲ್ಲದೆ ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಟನಲ್ ಸಾಧನಕ್ಕೆ ಕಳುಹಿಸುತ್ತದೆ. A ನಲ್ಲಿ ಪರಿಣಾಮಕಾರಿ ಮಾರ್ಗವನ್ನು ಪರಿಶೀಲಿಸಿ, ಊಹಿಸಬೇಡಿ.
ಸರ್ವರ್ನಲ್ಲಿ ಪ್ಯಾಕೆಟ್ B ಗೆ ವಿಳಾಸಗೊಳಿಸಿ ಬರುತ್ತದೆ, ಅದು ಸ್ಥಳೀಯ ವಿಳಾಸವಲ್ಲ, ಆದ್ದರಿಂದ ಅದು ಮುಂದಕ್ಕೆ ಕಳುಹಿಸಲ್ಪಡುತ್ತದೆ. ಇದು ಸಂಭವಿಸಲು IPv4 ಫಾರ್ವರ್ಡಿಂಗ್ ಆನ್ ಇರಬೇಕು, ಮತ್ತು ಮಾರ್ಗ ಹುಡುಕಾಟ ಪ್ಯಾಕೆಟ್ ಅನ್ನು ಮತ್ತೆ tun0 ಮೂಲಕ ಹೊರಕ್ಕೆ ಕಳುಹಿಸಬೇಕು. ಆದ್ದರಿಂದ ಫೈರ್ವಾಲ್ ಎರಡೂ ಬದಿಗಳಲ್ಲಿ ಅದೇ ಇಂಟರ್ಫೇಸ್ ಇರುವ ಫಾರ್ವರ್ಡ್ ಆದ ಹರಿವನ್ನು ನೋಡುತ್ತದೆ, ಮತ್ತು ಇದೇ ಹೆಚ್ಚಿನ ನಿಯಮ ಸಮುಚ್ಚಯಗಳು ತಪ್ಪಿಸಿಕೊಳ್ಳುವ ಸೂಕ್ಷ್ಮ ವಿಷಯ. ಇಲ್ಲಿ ಮೂಲ ಅನುವಾದದ ಅಗತ್ಯವಿಲ್ಲ, ಮತ್ತು A ಯ ವಿಳಾಸವನ್ನು ಅಸ್ಪೃಶವಾಗಿ ಇಡುವುದೇ B ತನ್ನದೇ ಮೂಲ ಆಧಾರಿತ ನಿಯಮವನ್ನು ಅನ್ವಯಿಸಲು ಅನುಮತಿಸುತ್ತದೆ.
ಸರ್ವರ್ನಲ್ಲಿ ಎರಡು ನಿಯಮಗಳು, ಈ ಕ್ರಮದಲ್ಲಿ
ಮೂರು ನಿಯಮಗಳು ಇಡೀ ಅನುಮತಿಯನ್ನು ಹೊರುತ್ತವೆ: ಫಾರ್ವರ್ಡಿಂಗ್, ಜೋಡಿ ಅಪವಾದ, ಮತ್ತು ಟನಲ್ ಜೋಡಿಗೆ ಡೀಫಾಲ್ಟ್ ಡ್ರಾಪ್. ಸ್ವೀಕೃತಿ ನಿಯಮ ಜೋಡಿ ಮತ್ತು ಸೇವೆಯನ್ನು ಹೆಸರಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಅನುಮತಿ ಬೆಳೆಯುತ್ತಿರುವ ಪೂಲ್ನಲ್ಲೂ ಉಳಿಯುತ್ತದೆ. ಟನಲ್-ಇಂದ-ಟನಲ್ ಸಂಚಾರದ ಯಾವುದೇ ಸಾರ್ವತ್ರಿಕ ನಿರಾಕರಣೆಗೆ ಮೊದಲು ಅದನ್ನು ಇರಿಸಿ, ಏಕೆಂದರೆ ಮೊದಲ ಹೊಂದಾಣಿಕೆಯೇ ಗೆಲ್ಲುತ್ತದೆ:
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i tun0 -o tun0 -s 10.44.0.21 -d 10.44.0.37 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i tun0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i tun0 -o tun0 -j DROPಆ ಆದೇಶಗಳು ಉದಾಹರಣೆಗಳು ಮತ್ತು ನಿಮ್ಮ ಹೋಸ್ಟ್ ನಿಯಮಗಳನ್ನು ಉಳಿಸಲು ಬಳಸುವ ಕಾರ್ಯವಿಧಾನಕ್ಕೆ ಸೇರಿವೆ; ಚಾಲನೆಯಲ್ಲಿರುವಾಗ ಸೇರಿಸಿದ ನಿಯಮ ಮುಂದಿನ ಬೂಟ್ನಲ್ಲಿ ಮಾಯವಾಗುತ್ತದೆ. ಸ್ಥಿತಿ ಇರುವ ನಿಯಮವೇ B ಯ ಪ್ರತಿಕ್ರಿಯೆಗಳು ಮತ್ತು TCP ಹ್ಯಾಂಡ್ಶೇಕ್ ಎರಡನೇ, ಪ್ರತಿಬಿಂಬಿತ ಸ್ವೀಕೃತಿ ಇಲ್ಲದೆ ಹಿಂತಿರುಗಲು ಅನುಮತಿಸುತ್ತದೆ.
ನಂತರ ನಿಯಮಗಳ ಪಟ್ಟಿಯಲ್ಲ, ಕೌಂಟರ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ, ಏಕೆಂದರೆ ಎಂದಿಗೂ ಹೊಂದಿಕೆಯಾಗದ ನಿಯಮ ಕೆಲಸ ಮಾಡುವಂತೆಯೇ ಕಾಣುತ್ತದೆ. ಕೌಂಟರ್ಗಳು ಶೂನ್ಯದಲ್ಲಿದ್ದರೆ, ಪ್ಯಾಕೆಟ್ ನೀವು ಭಾವಿಸುವ ಮಾರ್ಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತಿಲ್ಲ.
B ಇನ್ನೂ ಏನನ್ನು ಅನುಮತಿಸಬೇಕು
SSH ಸೇವೆಯನ್ನು B ನಡೆಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಟನಲ್ ವಿಳಾಸದಲ್ಲಿ ಏನಾದರೂ ಕೇಳುತ್ತಿದೆಯೇ ಮತ್ತು ಅದರ ಸ್ವಂತ ಹೋಸ್ಟ್ ಫೈರ್ವಾಲ್ ಮೂಲವನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆಯೇ ಎಂದು B ನಿರ್ಧರಿಸುತ್ತದೆ. ಸರ್ವರ್ನಲ್ಲಿ ನೀಡಿದ ನೆಟ್ವರ್ಕ್ ಅನುಮತಿ B ಯ ಯಾವುದೇ ಖಾತೆಗೂ ಅನುಮತಿಯಲ್ಲ, ಮತ್ತು ಹೋಸ್ಟ್ ಕೀ ಪರಿಶೀಲನೆ ಹಾಗೂ ಬಳಕೆದಾರ ದೃಢೀಕರಣ ಬೇರೆಲ್ಲಿಂದ ಬಂದರೂ ಅನ್ವಯವಾಗುತ್ತವೆ.
ಮೊದಲು ಸಕಾರಾತ್ಮಕ ಸಂದರ್ಭವನ್ನು ಪರೀಕ್ಷಿಸಿ: A ಯಿಂದ B ಯ ಟನಲ್ ವಿಳಾಸಕ್ಕೆ ಹೊಸ SSH ಸಂಪರ್ಕ, ನಿರೀಕ್ಷಿತ ಹೋಸ್ಟ್ ಕೀಯೊಂದಿಗೆ ಸ್ವೀಕೃತವಾಗಬೇಕು. ನಂತರ ಇನ್ನೊಬ್ಬ ಸಹಚರ ಅಥವಾ ಇನ್ನೊಂದು ಪೋರ್ಟ್ ಪರೀಕ್ಷಿಸಿ ಅದು ತಿರಸ್ಕರಿಸಲ್ಪಡುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿ, ಏಕೆಂದರೆ ಸದ್ದಿಲ್ಲದೆ ಎಲ್ಲವನ್ನೂ ಅನುಮತಿಸುವ ಅನುಮತಿ ಅದು ಮುಖ್ಯವಾಗುವವರೆಗೆ ಕೆಲಸ ಮಾಡುವುದರಿಂದ ಬೇರ್ಪಡಿಸಲಾಗದು. ಆ ಪರೀಕ್ಷೆಯ ಎರಡೂ ಭಾಗಗಳು ಅಗತ್ಯ, ಮತ್ತು ಎರಡನೆಯದೇ ಜನರು ಬಿಟ್ಟುಬಿಡುವುದು.
ನಿಗದಿಪಡಿಸಿದ ವಿಳಾಸಗಳು, ಎರಡೂ ಕ್ಲೈಂಟ್ಗಳಲ್ಲಿ ಪರಿಣಾಮಕಾರಿ ಮಾರ್ಗಗಳು ಮತ್ತು ಸರ್ವರ್ ಹಾಗೂ B ಯಲ್ಲಿ ನಿಖರ ನಿಯಮಗಳನ್ನು ದಾಖಲಿಸಿ. ಗೇಟ್ವೇಗೆ ಯಶಸ್ವಿ ping ಅಥವಾ ಸರ್ವರ್ನಲ್ಲಿ ತೆರೆದ ಪೋರ್ಟ್ ಇವುಗಳಲ್ಲಿ ಯಾವುದನ್ನೂ ಸಾಬೀತುಪಡಿಸುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ಸಹಚರರ ನಡುವಿನ ಫಾರ್ವರ್ಡಿಂಗ್ ಇನ್ನೂ ತಡೆಹಿಡಿಯಲ್ಪಟ್ಟಿರುವಾಗ ಎರಡೂ ನಿಜವಾಗಿರಬಹುದು. ಆ ಸಂಖ್ಯೆಗಳನ್ನು ಟನಲ್ ಮೇಲಿರುವಾಗ ಬರೆಯಿರಿ, ಏಕೆಂದರೆ ಮತ್ತೆ ಸಂಪರ್ಕಿಸಿದ ನಂತರ ಕ್ಲೈಂಟ್ ಪಡೆಯುವ ವಿಳಾಸ ಬೇರೆಯಾಗಿರಬಹುದು.