OpenVPN tls-ciphersuites vs tls-version-min: ಪ್ರತಿಯೊಂದೂ ಏನನ್ನು ಜಾರಿಗೊಳಿಸುತ್ತದೆ
TLS 1.3 ಸೂಟ್ ಪಟ್ಟಿ ಪ್ರೋಟೋಕಾಲ್ ಆವೃತ್ತಿಯನ್ನು ಮಿತಿಗೊಳಿಸುವುದಿಲ್ಲ, ಮತ್ತು show-tls ಸ್ಥಳೀಯ ಬೆಂಬಲವನ್ನು ಮಾತ್ರ ತೋರಿಸುತ್ತದೆ. ನೀತಿ, ಸೂಟ್ಗಳು ಮತ್ತು ಮಾತುಕತೆಯ ಫಲಿತಾಂಶಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಪರಿಶೀಲಿಸಿ.
ಹೆಚ್ಚಿನ OpenVPN TLS ಚರ್ಚೆಗಳಲ್ಲಿ ಮೂರು ವಿಭಿನ್ನ ಸಂಗತಿಗಳು ಒಂದೇ ಸಾಲಿನಲ್ಲಿ ಸೇರಿಹೋಗುತ್ತವೆ: ನಿಮ್ಮ ಕ್ಲೈಂಟ್ ನಿರ್ಮಾಣ ಏನು ಮಾಡಬಲ್ಲದು, ಪ್ರೊಫೈಲ್ ಏನನ್ನು ಅನುಮತಿಸುತ್ತದೆ ಮತ್ತು ಸೆಷನ್ ವಾಸ್ತವವಾಗಿ ಏನನ್ನು ಮಾತುಕತೆ ಮಾಡಿತು. ಚಿಕ್ಕ TLS 1.3 ಸೂಟ್ ಪಟ್ಟಿ ಮಧ್ಯದ ಪ್ರಶ್ನೆಗೆ ಅರ್ಧದಷ್ಟೇ ಉತ್ತರಿಸುತ್ತದೆ, ಮತ್ತು ಪ್ರೋಟೋಕಾಲ್ ಆವೃತ್ತಿಯ ಕೆಳಮಿತಿಯ ಬಗ್ಗೆ ಏನನ್ನೂ ಹೇಳುವುದಿಲ್ಲ. ಕೆಳಗಿನ ಪರಿಶೀಲನೆಗಳನ್ನು ಕ್ರಮವಾಗಿ ಮಾಡಿ ಮತ್ತು ಮೊದಲು ವಿಫಲವಾಗುವಲ್ಲಿ ನಿಲ್ಲಿಸಿ, ಏಕೆಂದರೆ ಪ್ರತಿ ಮುಂದಿನ ಪರಿಶೀಲನೆಯೂ ಹಿಂದಿನವು ತೀರಿಸಲ್ಪಟ್ಟಿವೆ ಎಂದು ಊಹಿಸುತ್ತದೆ.
ಯಾವುದೇ ಪಟ್ಟಿ ಓದುವ ಮೊದಲು ನಿರ್ಮಾಣವನ್ನು ಪರಿಶೀಲಿಸಿ
ಕಾನ್ಫಿಗರೇಶನ್ ಸೂಚನೆಯು ಪ್ರೋಟೋಕಾಲ್ ಬೆಂಬಲವಿಲ್ಲದ ಬೈನರಿಗೆ ಅದನ್ನು ಸೇರಿಸಲಾಗದು. ಆವೃತ್ತಿ ಬ್ಯಾನರ್ನಿಂದ ಪ್ರಾರಂಭಿಸಿ, ಅದು ಸಂಕಲಿಸಿದ ಕ್ರಿಪ್ಟೋ ಗ್ರಂಥಾಲಯವನ್ನು ಹೆಸರಿಸುತ್ತದೆ:
openvpn --version
OpenSSL ಜೊತೆ ಲಿಂಕ್ ಆದ 2.6 ನಿರ್ಮಾಣವು tls-cipher ಮತ್ತು tls-ciphersuites ಎರಡನ್ನೂ ಸ್ವೀಕರಿಸುತ್ತದೆ. mbed TLS ಜೊತೆಗಿನ ನಿರ್ಮಾಣದಲ್ಲಿ TLS 1.3 ಸೂಟ್ ಆಯ್ಕೆ ಸಂಪೂರ್ಣವಾಗಿ ಇಲ್ಲ, ಮತ್ತು 2.6 ಕೈಪಿಡಿಯು tls-ciphersuites ಅನ್ನು OpenSSL ಆಯ್ಕೆ ಎಂದು ಗುರುತಿಸುತ್ತದೆ. ಸರ್ವರ್ ಬೇರೆ ಬ್ಯಾಕೆಂಡ್ನೊಂದಿಗೆ ಮರುನಿರ್ಮಿಸಲ್ಪಟ್ಟರೆ, ಅದೇ ಪ್ರೊಫೈಲ್ ಕಾನ್ಫಿಗರೇಶನ್ನ ಒಂದು ಸಾಲೂ ಬದಲಾಗದೆ ತನ್ನ ವರ್ತನೆಯನ್ನು ಬದಲಿಸಬಹುದು.
ನೀವು ಇಲ್ಲಿರುವಾಗ openvpn --show-tls ಚಲಾಯಿಸಿ ಮತ್ತು ಔಟ್ಪುಟ್ ಉಳಿಸಿ. ಅದೇ ನಂತರ ಹೋಲಿಸುವ ದಾಸ್ತಾನು, ಮತ್ತು ಯಾರಾದರೂ ಪ್ರೊಫೈಲ್ಗಳನ್ನು ಸಂಪಾದಿಸಲು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ಅದನ್ನು ಸೆರೆಹಿಡಿಯುವುದು ಅಗ್ಗ.
ಬ್ಯಾನರ್ ಮತ್ತು ಪಟ್ಟಿಯನ್ನು ಚಾಟ್ ವಿಂಡೋದಲ್ಲಿ ಅಲ್ಲ, ಬದಲಾವಣೆ ಟಿಕೆಟ್ನಲ್ಲಿ ಬರೆಯಿರಿ. ಆರು ವಾರಗಳ ನಂತರ ಕ್ಲೈಂಟ್ ಸೂಟ್ ನೀಡಬಹುದೇ ಎಂದು ಇಬ್ಬರು ಜಗಳವಾಡಿದಾಗ, ಸೆರೆಹಿಡಿದ ಔಟ್ಪುಟ್ ಅದನ್ನು ಒಂದೇ ಸಾಲಿನಲ್ಲಿ ನಿರ್ಣಯಿಸುತ್ತದೆ.
ಆವೃತ್ತಿ ಮಿತಿಗಳನ್ನು ಸೈಫರ್ ಪಟ್ಟಿಗಳಿಂದ ಪ್ರತ್ಯೇಕವಾಗಿ ಇರಿಸಿ
2.6 ಕೈಪಿಡಿಯಲ್ಲಿ ಇವು ಒಂದಲ್ಲ, ಮೂರು ನಿಯಂತ್ರಣಗಳು:
tls-cipherTLS 1.2 ಮತ್ತು ಹಿಂದಿನ ಆವೃತ್ತಿಗಳಿಗೆ ಸೈಫರ್ ನೀತಿಯನ್ನು ನಿಗದಿಪಡಿಸುತ್ತದೆ ಮತ್ತು OpenSSL ನ ಸೈಫರ್ ಪಟ್ಟಿಗೆ ರವಾನಿಸಲ್ಪಡುತ್ತದೆ;tls-ciphersuitesTLS 1.3 ಸೂಟ್ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ;tls-version-minಮತ್ತುtls-version-maxಸಂಪರ್ಕವು ಬಳಸಬಹುದಾದ ಪ್ರೋಟೋಕಾಲ್ ಆವೃತ್ತಿಗಳನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತವೆ.
ಆದ್ದರಿಂದ ಎಚ್ಚರಿಕೆಯಿಂದ ಸವರಿದ TLS 1.3 ಸೂಟ್ ಪಟ್ಟಿ ಹಳೆಯ ಆವೃತ್ತಿ ಇನ್ನೂ ಅನುಮತಿಸಲ್ಪಟ್ಟಿದೆ ಎಂಬುದನ್ನು ಏನನ್ನೂ ಸಾಬೀತುಪಡಿಸುವುದಿಲ್ಲ. ಅಗತ್ಯ «TLS 1.3 ಮಾತ್ರ» ಆಗಿದ್ದರೆ, ಅದನ್ನು ಆವೃತ್ತಿಯ ಕೆಳಮಿತಿ ಹೊರುತ್ತದೆ, ಮತ್ತು ಸೂಟ್ ಪಟ್ಟಿ ಆ ಮಿತಿಯೊಳಗಿನ ಆಯ್ಕೆಗಳನ್ನು ಮಾತ್ರ ಸಂಕುಚಿಸುತ್ತದೆ:
tls-version-min 1.3
tls-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
ಈ ಜೋಡಿ ಎರಡು ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಒಂದು ಸಾಲನ್ನು ಅಳಿಸಿದರೆ ಇನ್ನೊಂದು ನೀವು ಭಾವಿಸುವುದಕ್ಕಿಂತ ಕಡಿಮೆ ಜಾರಿಗೊಳಿಸುತ್ತದೆ, ಮತ್ತು ಇಡೀ ಪರಿಶೀಲನೆ ಅದೇ ವೈಫಲ್ಯವನ್ನು ಹಿಡಿಯಲು ಇದೆ.
ಡೇಟಾ ಚಾನೆಲ್ ನಾಲ್ಕನೇ ನಿಯಂತ್ರಣ. data-ciphers ಸುರಂಗದೊಳಗಿನ ಸಮ್ಮಿತೀಯ ಸೈಫರ್ ಅನ್ನು ಮಾತುಕತೆ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಅದರ ಫಲಿತಾಂಶ ನಿಯಂತ್ರಣ ಚಾನೆಲ್ನ TLS ಆವೃತ್ತಿಯ ಬಗ್ಗೆ ಏನನ್ನೂ ಹೇಳುವುದಿಲ್ಲ. ಸೆಷನ್ ಸಾರಾಂಶದಲ್ಲಿ AES-256-GCM ಕಾಣುವುದು ಯಾವ ದಿಕ್ಕಿನಲ್ಲೂ TLS 1.3 ನ ಸಾಕ್ಷ್ಯವಲ್ಲ.
show-tls ಅನ್ನು ಸ್ಥಳೀಯ ದಾಸ್ತಾನು ಎಂದು ಓದಿ
--show-tls ಈ ಬೈನರಿ ಲಿಂಕ್ ಆಗಿರುವ ಕ್ರಿಪ್ಟೋ ಗ್ರಂಥಾಲಯ ಬೆಂಬಲಿಸುವ ಸೂಟ್ಗಳನ್ನು ಆದ್ಯತೆಯ ಕ್ರಮದಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ. ಇದು ಗೇಟ್ವೇಯಿಂದ ಬಂದ ವರದಿ ಅಲ್ಲ. ಪಟ್ಟಿ ಸ್ಥಳೀಯ ಗ್ರಂಥಾಲಯದಿಂದ ಬರುತ್ತದೆ ಎಂದು ಕೈಪಿಡಿ ಸ್ಪಷ್ಟವಾಗಿ ಹೇಳುತ್ತದೆ, ಅಂದರೆ OpenSSL 3.x ಇರುವ ಲ್ಯಾಪ್ಟಾಪ್ ಮತ್ತು ಹಳೆಯ ನಿರ್ಮಾಣದ ರೌಟರ್ ಒಂದೇ ಸರ್ವರ್ ಜೊತೆ ಮಾತನಾಡುತ್ತಾ ವಿಭಿನ್ನ ಪಟ್ಟಿಗಳನ್ನು ಮುದ್ರಿಸುತ್ತವೆ.
| Evidence | What it actually describes |
|---|---|
--show-tls output | Capabilities of this client build and its library |
| Profile directives | What this attempt is allowed to offer |
| Session log line | What this one negotiation selected |
ಕ್ಲೈಂಟ್ A, B ಮತ್ತು C ಸೂಟ್ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ ಮತ್ತು ಒಂದು ಸೆಷನ್ B ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ ಎಂದು ಭಾವಿಸಿ. ಅದು ಸರ್ವರ್ A ಅಥವಾ C ಗೆ ಅನುಮತಿ ನೀಡುತ್ತದೆಯೇ, ಅಥವಾ B ಅದರ ಏಕೈಕ ಅನುಮತಿಸಿದ ಆಯ್ಕೆಯೇ ಎಂಬುದನ್ನು ಏನನ್ನೂ ಸ್ಥಾಪಿಸುವುದಿಲ್ಲ. ಮೂರು ಸಾಲುಗಳನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಇರಿಸಿ, ಮತ್ತು ಗೊಂದಲದ TLS ಚರ್ಚೆಗಳ ಹೆಚ್ಚಿನವು ತಾವಾಗಿಯೇ ಪರಿಹಾರವಾಗುತ್ತವೆ.
ದಾಸ್ತಾನನ್ನು ಇಟ್ಟುಕೊಳ್ಳುವುದು ಇನ್ನೂ ಯೋಗ್ಯ. ಸೆಷನ್ ವಿಫಲವಾದಾಗ, ಗ್ರಂಥಾಲಯದ ಪಟ್ಟಿಯನ್ನು ಪ್ರೊಫೈಲ್ ಪಟ್ಟಿಯೊಂದಿಗೆ ಹೋಲಿಸುವುದು ಸರ್ವರ್ ಬಯಸಿದ್ದನ್ನು ನೀಡುವ ಅವಕಾಶ ಕ್ಲೈಂಟ್ಗೆ ಇತ್ತೇ ಎಂದು ತಿಳಿಸುತ್ತದೆ. ಬ್ಯಾಕೆಂಡ್ ಬದಲಾವಣೆಯು ಹಳೆಯ ಕ್ಲೈಂಟ್ಗಳು ಅವಲಂಬಿಸಿರುವ ಪೂಲ್ನಿಂದ TLS_CHACHA20_POLY1305_SHA256 ಅನ್ನು ಸದ್ದಿಲ್ಲದೆ ತೆಗೆದಿದೆಯೇ ಎಂದೂ ಅದು ತೋರಿಸುತ್ತದೆ — ಉಳಿದವರಿಗೆ ಏನೂ ಗಮನಕ್ಕೆ ಬಾರದೆ ಕೆಲವೇ ಬಳಕೆದಾರರು ಸಂಪರ್ಕಿಸಲಾಗದಂತೆ ಕಾಣುವ ರೀಗ್ರೆಷನ್ ಪ್ರಕಾರ.
ಗೇಟ್ವೇಗೆ ಅದು ಉತ್ತರಿಸಬಲ್ಲ ಪ್ರಶ್ನೆ ಕೇಳಿ
ನೀವು ಸೇವೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತಿದ್ದರೆ, ಡಿಸ್ಕ್ನಲ್ಲಿರುವ ಫೈಲ್ ಬದಲು ಚಾಲನೆಯಲ್ಲಿರುವ ಇನ್ಸ್ಟೆನ್ಸ್ನ ಪರಿಣಾಮಕಾರಿ ಸಂರಚನೆಯನ್ನು ಪರಿಶೀಲಿಸಿ. OpenVPN ಬೇರೆ --config ಪಥದೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಗಿರಬಹುದು, ಒಳಸೇರಿಕೆಗಳನ್ನು ಎಳೆಯಬಹುದು, ಮತ್ತು ಸಂಪಾದನೆಯ ನಂತರ ಮರುಪ್ರಾರಂಭಿಸದೇ ಇರಬಹುದು. ಚಾಲನೆಯಲ್ಲಿರುವ ಡೀಮನ್ನ ನೀತಿಯೇ ಕ್ಲೈಂಟ್ಗಳು ಎದುರಿಸುವುದು.
ನೀವು ಅದನ್ನು ನಿರ್ವಹಿಸದಿದ್ದರೆ, ಆಪರೇಟರ್ನಿಂದ ಬೆಂಬಲಿತ ಕ್ಲೈಂಟ್ ಅವಶ್ಯಕತೆಗಳು ಅಥವಾ ಸೀಮಿತ ಸ್ವೀಕಾರ ಪರೀಕ್ಷೆಯನ್ನು ಕೇಳಿ. ತಿರಸ್ಕೃತ ಪ್ರಯತ್ನ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತಿರಸ್ಕೃತ ಸೂಟ್ ಅಲ್ಲ: ಆವೃತ್ತಿಯ ಕೆಳಮಿತಿ, remote-cert-tls ನಂತಹ ಪ್ರಮಾಣಪತ್ರ ಗುರುತಿನ ಪರಿಶೀಲನೆಗಳು, ಅಥವಾ tls-auth ಮತ್ತು tls-crypt ನಡುವಿನ ಹೊಂದಾಣಿಕೆಯಿಲ್ಲದಿರುವಿಕೆ ಸೂಟ್ ಆಯ್ಕೆ ಮುಖ್ಯವಾಗುವ ಮೊದಲೇ ವಿನಿಮಯವನ್ನು ಕೊನೆಗೊಳಿಸಬಹುದು. ಕ್ಲೈಂಟ್ನ ಪಟ್ಟಿಯನ್ನು ಬದಲಿಸುವ ಮೊದಲು ಸರ್ವರ್ ದೋಷವನ್ನು ಓದಿ, ಏಕೆಂದರೆ «handshake failed» ನಾಲ್ಕು ವಿಭಿನ್ನ ಕಾರಣಗಳನ್ನು ಒಳಗೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಅವುಗಳಲ್ಲಿ ಒಂದೇ ಸೈಫರ್ ಹೊಂದಾಣಿಕೆಯಿಲ್ಲದಿರುವಿಕೆ.
VPN ಪೋರ್ಟ್ಗೆ openssl s_client ತೋರಿಸುವುದೂ ಪ್ರಶ್ನೆಯನ್ನು ಪುನರಾವರ್ತಿಸುವುದಿಲ್ಲ. ನಿಯಂತ್ರಣ ಚಾನೆಲ್ OpenVPN ನ ಸ್ವಂತ ಫ್ರೇಮಿಂಗ್ ಒಳಗೆ ಚಲಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಕಚ್ಚಾ TLS ಪ್ರೋಬ್ ಬೇರೆ ಏನನ್ನೋ ನಿರೀಕ್ಷಿಸುವ ಪೋರ್ಟ್ನಲ್ಲಿ ಬೇರೆ ಪ್ರೋಟೋಕಾಲ್ ಅನ್ನು ಪರೀಕ್ಷಿಸುತ್ತದೆ. ಅದರಿಂದ ತೆಗೆದ ಯಾವುದೇ ತೀರ್ಮಾನ ಪ್ರೋಬ್ ಬಗ್ಗೆ, ಸುರಂಗದ ಬಗ್ಗೆ ಅಲ್ಲ.
ಎರಡು ಫಲಿತಾಂಶಗಳನ್ನು ದಾಖಲಿಸಿ ಮತ್ತು ಅವನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿ ಇರಿಸಿ
ಹೊಸ ಅನುಮತಿಸಿದ ಸೆಷನ್ ಪ್ರೋಟೋಕಾಲ್ ಆವೃತ್ತಿ ಮತ್ತು ಆಯ್ಕೆಯಾದ ಸೈಫರ್ ಅನ್ನು ಹೆಸರಿಸುವ ನಿಯಂತ್ರಣ ಚಾನೆಲ್ ಸಾಲನ್ನು, ಮತ್ತು ಸುರಂಗದ ಸೈಫರ್ ಅನ್ನು ಹೆಸರಿಸುವ ಪ್ರತ್ಯೇಕ ಡೇಟಾ ಚಾನೆಲ್ ಸಾಲನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ. ಎರಡನ್ನೂ ಕ್ಲೈಂಟ್ ಆವೃತ್ತಿ ಮತ್ತು ಪ್ರೊಫೈಲ್ ಹೆಸರಿನೊಂದಿಗೆ ಸೆರೆಹಿಡಿಯಿರಿ, ಮತ್ತು ಯಾವ ಸರ್ವರ್ ಇನ್ಸ್ಟೆನ್ಸ್ ಉತ್ತರಿಸಿತು ಎಂದು ಬರೆಯಿರಿ:
openvpn --config office.ovpn --verb 4 2>&1 | tee session.txt
ನಂತರ ಆ ಎರಡು ಸಾಲುಗಳನ್ನು ನೆನಪಿನಿಂದ ಅಲ್ಲ, ಆ ಫೈಲ್ನಿಂದ ಓದಿ. ಜೋಡಿಯೇ ಸಾಕ್ಷ್ಯ; ಸೂಟ್ ಹೆಸರು ಮಾತ್ರ ಆದ್ಯತೆ, ಮತ್ತು ಆವೃತ್ತಿ ಮಿತಿ ಸರ್ವರ್ ಏನನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ ಎಂಬುದರ ಬಗ್ಗೆ ಪ್ರತ್ಯೇಕ ಹೇಳಿಕೆ.
ಪರಿಶೀಲನೆಗಳನ್ನು ಈ ಕ್ರಮದಲ್ಲಿ ಮಾಡಿ. --version ನಿಂದ ನಿರ್ಮಾಣ ಮತ್ತು ಬ್ಯಾಕೆಂಡ್ ದೃಢೀಕರಿಸಿ. ಏನನ್ನಾದರೂ ಬದಲಿಸುವ ಮೊದಲು --show-tls ಸೆರೆಹಿಡಿಯಿರಿ. ಅಗತ್ಯವಾದ ಆವೃತ್ತಿ ಕೆಳಮಿತಿಯನ್ನು ಸೂಟ್ ಪಟ್ಟಿಯಿಂದ ಪ್ರತ್ಯೇಕವಾಗಿ ಹೇಳಿ. ಚಾಲನೆಯಲ್ಲಿರುವ ಇನ್ಸ್ಟೆನ್ಸ್ನ ಪರಿಣಾಮಕಾರಿ ನೀತಿಯನ್ನು ಅದರ ಮಾಲೀಕರೊಂದಿಗೆ ದೃಢೀಕರಿಸಿ. ಒಂದು ಅನುಮತಿಸಿದ ಸೆಷನ್ ಮತ್ತು ಯೋಜನೆ ಅನುಮತಿಸಿದರೆ ಹಳೆಯ ಆವೃತ್ತಿಯ ಒಂದು ತಿರಸ್ಕೃತ ಪ್ರಯತ್ನವನ್ನು ಗಮನಿಸಿ. ನಿಯಂತ್ರಣ ಚಾನೆಲ್ ಮತ್ತು ಡೇಟಾ ಚಾನೆಲ್ ಫಲಿತಾಂಶಗಳನ್ನು ಪ್ರತ್ಯೇಕ ಸಂಶೋಧನೆಗಳಾಗಿ ದಾಖಲಿಸಿ.
ಅಗತ್ಯವಾದ ಕ್ಲೈಂಟ್ ಹೊಸ ಕನಿಷ್ಠ ಮಿತಿಯನ್ನು ಪೂರೈಸಲಾಗದಿದ್ದರೆ, ಪ್ರಯೋಗವು ಪೂರ್ಣಗೊಂಡಂತೆ ಕಾಣಲು ಸಂಬಂಧವಿಲ್ಲದ ಸ್ವೀಕಾರ ನಿಯಮವನ್ನು ಸದ್ದಿಲ್ಲದೆ ಇಳಿಸುವ ಬದಲು ಆ ವಲಸೆ ಅಥವಾ ವಿನಾಯಿತಿ ನಿರ್ಣಯವನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ತೆಗೆದುಕೊಳ್ಳಿ.