VPN ಪೋರ್ಟ್ ಅಗತ್ಯಗಳು: ಹೋಲಿಸುವ ಮೊದಲು ಬರೆಯಬೇಕಾದ ಮೂರು ಸಾಲುಗಳು
ನಿಮಗೆ ನಿಜವಾಗಿ ಯಾವ ಪೋರ್ಟ್ ಪ್ರಶ್ನೆ ಇದೆ ಎಂದು ಕಂಡುಕೊಳ್ಳಿ: ಹೊರಹೋಗುವ ಗಮ್ಯಸ್ಥಾನ, ಒಳಗಿನ ಪ್ರಕಟಣೆ, ಅಥವಾ ಸುರಂಗದ ಸ್ವಂತ ಸಾಗಣೆ. ನಂತರ ಪೂರೈಕೆದಾರರನ್ನು ಅದನ್ನಷ್ಟೇ ಕೇಳಿ.
VPN ಸೇವೆಗಳ ಪೋರ್ಟ್ ಪಟ್ಟಿಗಳು ಹೋಲಿಕೆ ಪುಟಗಳ ನಡುವೆ ಅವು ಮುಖ್ಯವೇ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುವ ವಿವರವಿಲ್ಲದೆ ನಕಲಿಸಲ್ಪಡುತ್ತವೆ: ಸಂಪರ್ಕವನ್ನು ಯಾರು ಪ್ರಾರಂಭಿಸುತ್ತಾರೆ. ಹೊರಹೋಗುವ TCP 443 ಅನ್ನು ಅನುಮತಿಸುವ ನಿಯಮವು ನಿಮ್ಮ ಯಂತ್ರದಲ್ಲಿನ ಕೇಳುಗರನ್ನು ಇನ್ನೊಂದು ಆತಿಥೇಯ ತಲುಪಬಹುದೇ ಎಂಬುದರ ಬಗ್ಗೆ ಏನನ್ನೂ ಹೇಳುವುದಿಲ್ಲ. ಒಂದೇ ಯೋಜನೆಯನ್ನು ಹೋಲಿಸುವ ಮೊದಲು ಮೂರು ಪ್ರತ್ಯೇಕ ಅಗತ್ಯಗಳನ್ನು ಬರೆಯಿರಿ ಮತ್ತು ನಿಮ್ಮ ಕಾರ್ಯಕ್ಕೆ ನಿಜವಾಗಿ ಯಾವುದು ಬೇಕು ಎಂಬುದನ್ನು ಗುರುತಿಸಿ. ಆ ಹಾಳೆ ಇದ್ದರೆ ಹೆಚ್ಚಿನ ಹೋಲಿಕೆಗಳು ಒಂದೇ ಸಣ್ಣ ಪ್ರಶ್ನೆಗೆ ಇಳಿಯುತ್ತವೆ.
ಯಾವುದೇ ಪೋರ್ಟ್ ಪಟ್ಟಿಯನ್ನು ಓದುವ ಮೊದಲು ಅಗತ್ಯವನ್ನು ಬೇರ್ಪಡಿಸಿ
ಮೂರು ಸಾಲುಗಳು ಬಹುತೇಕ ಎಲ್ಲಾ ಸಂದರ್ಭಗಳನ್ನು ಒಳಗೊಳ್ಳುತ್ತವೆ: ಸುರಂಗದ ಆಚೆಗಿನ ಗಮ್ಯಸ್ಥಾನವನ್ನು ತಲುಪುವುದು, ಇತರರು ಒಳಗೆ ಸಂಪರ್ಕಿಸಲು ಏನನ್ನಾದರೂ ಪ್ರಕಟಿಸುವುದು, ಮತ್ತು ಸುರಂಗವನ್ನೇ ಸಾಗಿಸುವುದು. ಪ್ರತಿ ಸಾಲೂ ಬೇರೆ ಕಾರಣಕ್ಕೆ ವಿಫಲವಾಗುತ್ತದೆ, ಮತ್ತು ಒಂದನ್ನು ಪೂರೈಸುವ ಪೂರೈಕೆದಾರರ ನೀತಿ ಉಳಿದೆರಡನ್ನು ಮುಟ್ಟದೆ ಬಿಡಬಹುದು. ನಿಮ್ಮ ಕಾರ್ಯವನ್ನು ಸರಿಯಾದ ಸಾಲಿಗೆ ಇಡಲು ಐದು ನಿಮಿಷ ಬೇಕು ಮತ್ತು ನಂತರ ಒಂದು ವಾದವನ್ನು ಉಳಿಸುತ್ತದೆ.
| Line | Who starts it | What can block it | Question for the provider |
|---|---|---|---|
| Outbound destination | Your application | Egress filter on the exit node | Is this protocol and port allowed to that destination? |
| Inbound publishing | A remote peer | No mapping, no public address, short lifetime | Which protocol, which external port, and how long does the mapping last? |
| Tunnel transport | Your client to the gateway | The access network drops that protocol | Does the client offer a fallback the local network permits? |
ಮಾರ್ಕೆಟಿಂಗ್ ಹೇಳಿಕೆಗಳು ಮೂರು ಸಾಲುಗಳನ್ನು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಮಸುಕುಗೊಳಿಸುತ್ತವೆ. P2P ಅನುಮತಿ ಗಮ್ಯಸ್ಥಾನದ ನೀತಿಯನ್ನು ವಿವರಿಸುತ್ತದೆ, ಮೀಸಲಾದ ವಿಳಾಸವು ವಿಳಾಸವನ್ನು ವಿವರಿಸುತ್ತದೆ, ಮತ್ತು ಪೋರ್ಟ್ ನಿರ್ಬಂಧಗಳಿಲ್ಲ ಎಂಬ ಹೇಳಿಕೆ ಸಾಮಾನ್ಯವಾಗಿ ಯೋಜನೆಯು ಅವುಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುವುದಿಲ್ಲ ಎಂದು ಅರ್ಥ. ಆ ನುಡಿಗಟ್ಟುಗಳಲ್ಲಿ ಯಾವುದೂ ಉಳಿದವಕ್ಕೆ ಉತ್ತರಿಸುವುದಿಲ್ಲ.
ಒಂದು ನಿರ್ದಿಷ್ಟ ಹರಿವನ್ನು ಆರಿಸಿ ಮತ್ತು ಅದನ್ನು ವಾಕ್ಯವಾಗಿ ಬರೆಯಿರಿ: ಪ್ರಾರಂಭಿಸುವವರು, ಸಾಗಣೆ, ಪೋರ್ಟ್, ವಿಳಾಸ ಕುಟುಂಬ, ದಿಕ್ಕು. ದೂರದ ಆತಿಥೇಯಕ್ಕೆ ಅಪ್ಲೋಡ್ ಮಾಡುವ ರಾತ್ರಿಯ ಬ್ಯಾಕಪ್ ಕ್ಲೈಂಟ್ ಹೊರಹೋಗುವುದು ಮಾತ್ರ. ನಿಮ್ಮ ಮೇಜಿನ ಮೇಲಿನ ಸ್ನೇಹಿತರು ಸೇರುವ ಆಟದ ಸರ್ವರ್ ಒಳಬರುವುದು. ಎರಡನ್ನೂ ಒಂದೇ ಸುರಂಗದ ಮೂಲಕ ಓಡಿಸುವುದು ಎಂದರೆ ಹಾಳೆಗೆ ಎರಡೂ ಸಾಲುಗಳು ಬೇಕು, ಅವುಗಳ ನಡುವೆ ರಾಜಿಯಲ್ಲ.
ಹೊರಹೋಗುವ ಪ್ರವೇಶವು ಸುರಂಗದಲ್ಲಿ ಅಲ್ಲ, ಗಮ್ಯಸ್ಥಾನದ ನೀತಿಯಲ್ಲಿ ವಿಫಲವಾಗುತ್ತದೆ
ಅನುವಾದಿಸುವ ಗೇಟ್ವೇ ಮೂಲಕ ಹೊರಹೋಗುವ ಸಂಚಾರವು ಸ್ಥಿತಿಯನ್ನು ಸೃಷ್ಟಿಸುತ್ತದೆ. ಒಳಗಿನ ವಿಳಾಸ ಮತ್ತು ಪೋರ್ಟ್ನಿಂದ ಮೊದಲ ಪ್ಯಾಕೆಟ್ ಅನುವಾದ ನಮೂದನ್ನು ನಿರ್ಮಿಸುತ್ತದೆ, ಮತ್ತು ಪ್ರತ್ಯುತ್ತರಗಳು ಅದಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುತ್ತವೆ, ಇದು RFC 3022 ನಲ್ಲಿ ವಿವರಿಸಲಾದ ಮ್ಯಾಪಿಂಗ್ ವರ್ತನೆ. ಬ್ರೌಸರ್ ಟ್ಯಾಬ್ ಸಾಮಾನ್ಯವಾಗಿ ಯಾವುದೇ ಪೋರ್ಟ್ ವಿನಂತಿಯಿಲ್ಲದೆ ಕೆಲಸ ಮಾಡುವುದಕ್ಕೆ ಈ ಕಾರ್ಯವಿಧಾನವೇ ಕಾರಣ.
ಎರಡು ವಿಷಯಗಳು ಇನ್ನೂ ಅದನ್ನು ಮುರಿಯುತ್ತವೆ. ನಿರ್ಗಮನ ನೋಡ್ ದುರುಪಯೋಗಪಡಿಸಬಹುದು ಎಂದು ಪರಿಗಣಿಸುವ ಗಮ್ಯಸ್ಥಾನಗಳನ್ನು ಅಥವಾ ಪೋರ್ಟ್ ಸಂಖ್ಯೆಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಬಹುದು, ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ನಿರ್ಗಮನ ನೀತಿ ಎಂದಿಗೂ ನಿರೀಕ್ಷಿಸದ ಪೋರ್ಟ್ನಲ್ಲಿ ಕೇಳುತ್ತಿರಬಹುದು. ಒಳಬರುವ ನಿಯಮಗಳ ಬಗ್ಗೆ ಅಲ್ಲ, ಗಮ್ಯಸ್ಥಾನದ ಜೋಡಿಯ ಬಗ್ಗೆ ಕೇಳಿ, ಮತ್ತು TCP ಹಾಗೂ UDP ಗೆ ವಿಭಿನ್ನ ಉತ್ತರಗಳನ್ನು ನಿರೀಕ್ಷಿಸಿ.
ವಾದಿಸುವ ಮೊದಲು ಅಳೆಯಿರಿ. ಸುರಂಗದ ಹಿಂದೆ ಇರಲಿರುವ ಯಂತ್ರದಲ್ಲಿ ಇವನ್ನು ಓಡಿಸಿ, ಒಮ್ಮೆ ಸುರಂಗ ಆಫ್ ಆಗಿರುವಾಗ ಮತ್ತು ಒಮ್ಮೆ ಆನ್ ಆಗಿರುವಾಗ:
ss -lntup | sort
nc -vz -w 3 203.0.113.10 443
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://example.com
ಅದೇ ಆದೇಶಗಳು, ಅದೇ ಗಮ್ಯಸ್ಥಾನ, ಸುರಂಗದ ಎರಡು ಸ್ಥಿತಿಗಳು, ನಿರ್ವಾಹಕರಿಗೆ ಅದರ ಮೇಲೆ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದಾದ ಮೊದಲು-ನಂತರದ ಹೋಲಿಕೆಯನ್ನು ನೀಡುತ್ತವೆ. ದಾಖಲೆ ವಿಳಾಸವನ್ನು ನಿಮಗೆ ನಿಜವಾಗಿ ಬೇಕಾದ ಆತಿಥೇಯದಿಂದ ಬದಲಾಯಿಸಿ; ಮುಖ್ಯವಾದದ್ದು ಹೋಲಿಕೆ ಪುನರಾವರ್ತನೆಯಾಗುವುದು, ಯಾವುದಾದರೂ ಸಂಖ್ಯೆ ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಕಾಣುವುದಲ್ಲ.
ಒಳಗಿನ ಪ್ರಕಟಣೆಗೆ ಮ್ಯಾಪಿಂಗ್, ವಿಳಾಸ ಮತ್ತು ಆಯುಷ್ಯ ಬೇಕು
ಸಾರ್ವಜನಿಕ ಬದಿಯಲ್ಲಿ ಏನಾದರೂ ಅದನ್ನು ಎಲ್ಲಿ ತಲುಪಿಸಬೇಕೆಂದು ತಿಳಿಯದ ಹೊರತು ಹೊರಗಿನ ಯಾವುದೂ ನಿಮ್ಮ ಕೇಳುಗರೊಂದಿಗೆ ಸಂಪರ್ಕವನ್ನು ಪ್ರಾರಂಭಿಸಲಾರದು. ನಿರ್ವಾಹಕರು ಇಟ್ಟುಕೊಂಡಿರುವ ಸ್ಥಿರ ಪೋರ್ಟ್ ಕಾಯ್ದಿರಿಸುವಿಕೆ, ಕ್ಲೈಂಟ್ UPnP, NAT-PMP ಅಥವಾ PCP ಮೂಲಕ ಕೋರಿದ ಮ್ಯಾಪಿಂಗ್, ಮತ್ತು ಮಾರ್ಗೀಕರಿಸಿದ ಸಾರ್ವಜನಿಕ ವಿಳಾಸ — ಇವು ಮೂರು ವಿಭಿನ್ನ ಉತ್ಪನ್ನಗಳು, ಮೂರು ವಿಭಿನ್ನ ಮಿತಿಗಳೊಂದಿಗೆ.
ಅವುಗಳಲ್ಲಿ ಯಾವುದಾದರೂ ಬಗ್ಗೆ ಐದು ಪ್ರಶ್ನೆಗಳನ್ನು ಕೇಳಿ: ಯಾವ ಪ್ರೋಟೋಕಾಲ್, ಯಾವ ಬಾಹ್ಯ ಪೋರ್ಟ್, ಬಾಹ್ಯ ಪೋರ್ಟ್ ಸ್ಥಳೀಯದಿಂದ ಭಿನ್ನವಾಗಿರಬಹುದೇ, ಯಾವ ವಿಳಾಸ ಕುಟುಂಬವನ್ನು ಒಳಗೊಳ್ಳುತ್ತದೆ, ಮತ್ತು ಮರುಸಂಪರ್ಕದ ನಂತರ ಮ್ಯಾಪಿಂಗ್ ಎಷ್ಟು ಕಾಲ ಉಳಿಯುತ್ತದೆ. ಸಕ್ರಿಯ ಅವಧಿಗೆ ಬದ್ಧವಾದ ಕಾಯ್ದಿರಿಸುವಿಕೆ ಆ ಅವಧಿ ಮುಗಿದಾಗ ಮಾಯವಾಗುತ್ತದೆ, ಯೋಜನೆಯ ಪುಟ ಏನೇ ಹೇಳಲಿ.
ಮೊದಲು ಸ್ಥಳೀಯ ಅರ್ಧವನ್ನು ದೃಢೀಕರಿಸಿ, ಏಕೆಂದರೆ ಸತ್ತ ಕೇಳುಗ ಮತ್ತು ತಡೆಹಿಡಿಯಲಾದ ಒಳಬರುವ ಮಾರ್ಗ ಹೊರಗಿನಿಂದ ಒಂದೇ ರೀತಿ ಕಾಣುತ್ತವೆ:
ss -lntup | grep -E ':(8080|51820)\b'
python3 -m http.server 8080 --bind 0.0.0.0
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080
ಸ್ಥಳೀಯ ವಿನಂತಿ 200 ಹಿಂತಿರುಗಿಸಿದಾಗ ಮತ್ತು ನೀವು ನಿಯಂತ್ರಿಸದ ಜಾಲದಿಂದ ಬಂದ ವಿನಂತಿ ಇನ್ನೂ ಸಮಯ ಮೀರಿದಾಗ, ಅಂತರ ಸಾರ್ವಜನಿಕ ಬದಿಯಲ್ಲಿದೆ. ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಹೆಸರಿನಿಂದ ವಿವರಿಸುವ ಬದಲು ನಿರ್ವಾಹಕರಿಗೆ ಪ್ರೋಟೋಕಾಲ್ ಮತ್ತು ಬಾಹ್ಯ ಪೋರ್ಟ್ ಹೇಳಬೇಕಾದ ಕ್ಷಣ ಅದು.
ಸುರಂಗದ ಸ್ವಂತ ಸಾಗಣೆ ಪ್ರತ್ಯೇಕ ಪ್ರಶ್ನೆ
ವಾಹಕ ಪೋರ್ಟ್ಗಳು ಸಮಸ್ಯೆಯ ಚಿಕ್ಕ ಭಾಗ ಮತ್ತು ಹುಡುಕಲು ಸುಲಭವಾದದ್ದು. ಡೀಫಾಲ್ಟ್ಗಳು ಪ್ರೋಟೋಕಾಲ್ ಪ್ರಕಾರ ಬದಲಾಗುತ್ತವೆ, ಮತ್ತು ಕ್ಲೈಂಟ್ ಮಾತುಕತೆ ನಡೆಸಬಹುದಾದದ್ದು ಯಾವುದೇ ಯೋಜನೆ ವಿವರಣೆಗಿಂತ ಹೆಚ್ಚು ಮುಖ್ಯ.
| Client | Outer transport | Default port | When it helps |
|---|---|---|---|
| OpenVPN | UDP | 1194 | Default mode; needs outbound UDP to pass |
| OpenVPN | TCP | 443 | UDP is dropped and TCP 443 is not |
| WireGuard | UDP | 51820 | Short handshake; there is no TCP mode |
| IKEv2/IPsec | UDP | 500 and 4500 | Mobile clients; 4500 carries NAT traversal |
ಹೊರಹೋಗುವ UDP ಅನ್ನು ಬಿಸಾಡುವ ಜಾಲವು TCP 443 ಸುರಂಗವನ್ನು ಸ್ವೀಕರಿಸಿ UDP ಸುರಂಗವನ್ನು ನಿರಾಕರಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಪರ್ಯಾಯ ಮೋಡ್ ಅಗತ್ಯಗಳ ಹಾಳೆಗೆ ಸೇರುತ್ತದೆ. ವಾಹಕವನ್ನು ಬದಲಿಸುವುದು ಸುರಂಗದೊಳಗಿನ ಅಪ್ಲಿಕೇಶನ್ ಪೋರ್ಟ್ ಅನ್ನು ಸರಿಸುವುದಿಲ್ಲ ಮತ್ತು ಗಮ್ಯಸ್ಥಾನದ ನೀತಿಯನ್ನು ವಿಸ್ತರಿಸುವುದಿಲ್ಲ; ಅವು ತಮ್ಮ ಸಾಲುಗಳಲ್ಲೇ ಉಳಿಯುತ್ತವೆ.
ಅಲ್ಲಿರುವಾಗ ಭಿನ್ನಖಂಡನೆಗೆ ಒಂದು ಪರೀಕ್ಷೆ ಯೋಗ್ಯ, ಏಕೆಂದರೆ ಸಂಪರ್ಕಗೊಂಡು ನಂತರ ದೊಡ್ಡ ವರ್ಗಾವಣೆಗಳಲ್ಲಿ ನಿಲ್ಲುವ ಸುರಂಗಕ್ಕೆ ಸಾಮಾನ್ಯವಾಗಿ ಮುಚ್ಚಿದ ಪೋರ್ಟ್ ಅಲ್ಲ, ತಪ್ಪು MTU ಇರುತ್ತದೆ:
ping -M do -s 1400 203.0.113.10 ping -M do -s 1372 203.0.113.10
Windows ನಲ್ಲಿ ಅದೇ ಪರೀಕ್ಷೆ ping -f -l 1400 203.0.113.10. ಹಾದುಹೋಗುವ ಅತಿದೊಡ್ಡ ಗಾತ್ರಕ್ಕಿಂತ ಕೆಳಗೆ ಸುರಂಗದ MTU ಸೆಟ್ ಮಾಡಿ, ನಂತರ ವಿಫಲವಾದ ವರ್ಗಾವಣೆಯನ್ನು ಮತ್ತೆ ಪರೀಕ್ಷಿಸಿ.
ಯೋಜನೆಗೆ ಪಾವತಿಸುವ ಮೊದಲು ಮೂರು ಸಾಲುಗಳನ್ನು ಪರಿಶೀಲಿಸಿ
ಮೂರು ಸಾಲುಗಳನ್ನು ಒಂದು ಪುಟದಲ್ಲಿ ಇರಿಸಿ ಮತ್ತು ಪ್ರತಿ ಕೋಶವನ್ನು ಭರವಸೆಯ ಬದಲು ಅಳತೆ ಮಾಡಿದ ಫಲಿತಾಂಶದಿಂದ ತುಂಬಿಸಿ. ಈ ಆದೇಶಗಳು ಆ ಪುಟದ ಸ್ಥಳೀಯ ಅರ್ಧವನ್ನು ಸುಮಾರು ಒಂದು ನಿಮಿಷದಲ್ಲಿ ಉತ್ಪಾದಿಸುತ್ತವೆ:
ss -lntup | sort
nc -vz -w 3 203.0.113.10 443
python3 -m http.server 8080 --bind 0.0.0.0
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080
ping -M do -s 1400 203.0.113.10
ಔಟ್ಪುಟ್ ಅನ್ನು ಪರಿಶೀಲನಾ ಪಟ್ಟಿಯಾಗಿ ಓದಿ. ಸುರಂಗ ಆನ್ ಆಗಿರುವಾಗ ಗಮ್ಯಸ್ಥಾನ ಉತ್ತರಿಸಿದರೆ ಹೊರಹೋಗುವುದು ಕೆಲಸ ಮಾಡುತ್ತದೆ. ನಿಮ್ಮ ಜಾಲದ ಹೊರಗಿನ ಆತಿಥೇಯ ಬಾಹ್ಯ ಪೋರ್ಟ್ನಲ್ಲಿರುವ ಕೇಳುಗರನ್ನು ತಲುಪಿದಾಗ ಮಾತ್ರ ಒಳಬರುವುದು ಕೆಲಸ ಮಾಡುತ್ತದೆ. ನಿಮ್ಮ ಪ್ರವೇಶ ಜಾಲವು ಅನುಮತಿಸುವ ಪ್ರೋಟೋಕಾಲ್ನಲ್ಲಿ ಹ್ಯಾಂಡ್ಶೇಕ್ ಪೂರ್ಣಗೊಂಡಾಗ ವಾಹಕ ಕೆಲಸ ಮಾಡುತ್ತದೆ.
ಎರಡು ಅಭ್ಯಾಸಗಳು ಹಾಳೆಯನ್ನು ಪ್ರಾಮಾಣಿಕವಾಗಿ ಇಡುತ್ತವೆ. ಪ್ರತಿ ಫಲಿತಾಂಶದ ಪಕ್ಕದಲ್ಲಿ ದಿನಾಂಕ ಮತ್ತು ಕ್ಲೈಂಟ್ ಆವೃತ್ತಿಯನ್ನು ದಾಖಲಿಸಿ, ಏಕೆಂದರೆ ಪೂರೈಕೆದಾರರ ನೀತಿಗಳು ಮತ್ತು ಕ್ಲೈಂಟ್ಗಳ ಡೀಫಾಲ್ಟ್ಗಳು ಎರಡೂ ಚಲಿಸುತ್ತವೆ. ನಂತರ ಹರಿವಿಗೆ ಸೇವೆ ಸಲ್ಲಿಸುವ ಅತ್ಯಂತ ಸಂಕುಚಿತ ಮ್ಯಾಪಿಂಗ್ ಅನ್ನು ಕೇಳಿ, ಏಕೆಂದರೆ ಎಲ್ಲವನ್ನೂ ತೆರೆಯುವ ವಿನಂತಿ ಸಾಮಾನ್ಯವಾಗಿ ತಾಂತ್ರಿಕ ಉತ್ತರದ ಬದಲು ನಿರಾಕರಣೆ ಅಥವಾ ಹೆಚ್ಚುವರಿ ಮಾರಾಟವನ್ನು ಪಡೆಯುತ್ತದೆ.