پورٹس: کون سے کھولیں اور کیسے جانچیں
عام سروسز کو کون سے پورٹس درکار ہوتے ہیں، مشین کس پورٹ پر سن رہی ہے یہ کیسے دیکھیں، بیرونی دستیابی کیسے جانچیں، اور پورٹ بند ہو تو کیا کریں۔
اپ ڈیٹ 23 اگست، 2026
پورٹ ایک نمبر ہے جو سسٹم کو بتاتا ہے کہ آنے والا کنکشن کس سروس کو ملنا چاہیے۔ اصول سادہ ہے: صرف وہی کھلا ہونا چاہیے جو آپ واقعی استعمال کرتے ہیں۔ ہر اضافی کھلا پورٹ ایک اور دروازہ ہے جس کی کمزوریاں کوئی نہ کوئی ضرور آزماے گا۔
عام پورٹ نمبر
| پورٹ | سروس | باہر کے لیے کھلا |
|---|---|---|
| 22 | SSH | ہاں، بہتر ہے کہ ایڈریس کے لحاظ سے محدود ہو |
| 80 | HTTP | ہاں، اگر آپ کی ویب سائٹ ہے |
| 443 | HTTPS | ہاں، اگر آپ کی ویب سائٹ ہے |
| 25, 465, 587 | میل | اندر آنے والا — صرف اُس صورت میں جب آپ اپنا میل سرور چلاتے ہوں۔ باہر جانے والا ہماری طرف سے بند ہے اور درخواست پر کھولا جاتا ہے |
| 3306 | MySQL | نہیں، صرف لوکل |
| 5432 | PostgreSQL | نہیں، صرف لوکل |
| 6379 | Redis | نہیں، صرف لوکل |
| 27017 | MongoDB | نہیں، صرف لوکل |
| 25565 | Minecraft | ہاں، اگر یہ گیم سرور ہے |
میل کے بارے میں ایک بات: اندر آنے والے کنکشن محدود نہیں ہیں، جبکہ 25، 465 اور 587 پر باہر جانے والے کنکشن نوڈ کی سطح پر بند رہتے ہیں جب تک آپ ہم سے کھلوانے کی درخواست نہ کریں۔ مشین کے اندر کے قواعد اسے تبدیل نہیں کرتے — تفصیل کے لیے میل سرور: یہ مشکل کیوں ہے اور کیا غور کرنا چاہیے دیکھیں۔
ڈیٹا بیس تقریباً کبھی باہر کے لیے کھلے نہیں ہوتے۔ اگر آپ کو اپنے کام کے کمپیوٹر سے رسائی چاہیے، تو درست طریقہ SSH ٹنل ہے، کھلا پورٹ نہیں:
ssh -L 5432:127.0.0.1:5432 artem@<address>
مشین کس پر سن رہی ہے
ss -tulpn
ss -tlpn | grep 443
lsof -i -P -n | grep LISTEN
پورٹ نمبر سے پہلے ایڈریس دیکھیں۔ 127.0.0.1:5432 کا مطلب ہے کہ سروس صرف اندر سے دستیاب ہے — آپ چاہے کتنے ہی قواعد شامل کر لیں، یہ باہر سے قابل رسائی نہیں۔ 0.0.0.0:5432 کا مطلب ہے کہ سروس تمام نیٹ ورک انٹرفیسز پر کھلی ہے اور اسے فائر وال سے محفوظ کرنا لازمی ہے۔
باہر سے جانچ
اپنے کمپیوٹر سے:
nc -vz <address> 443
curl -I http://<address>
ping سے جانچ بے معنی ہے: ICMP اور TCP الگ الگ چیزیں ہیں؛ ہو سکتا ہے پورٹ کام کر رہا ہو مگر ping بلاک ہو، اور اس کے برعکس بھی۔
پورٹ بند ہے: مرحلہ وار ٹربل شوٹنگ
- کیا سروس چل رہی ہے؟
systemctl status <service> - کیا یہ درست ایڈریس پر سن رہی ہے؟
ss -tulpn—127.0.0.1نہیں - کیا فائر وال اسے اجازت دیتا ہے؟
ufw status verboseیاnft list ruleset - کیا Docker رکاوٹ ڈال رہا ہے؟ کنٹینر کے شائع شدہ پورٹ ufw کو بائی پاس کر جاتے ہیں
- سروس کے لاگز دیکھیں:
journalctl -u <service> -n 50
ترتیب اہم ہے: اکثر مسئلہ دوسرے مرحلے پر ہوتا ہے، فائر وال میں نہیں۔
سروس کا پورٹ تبدیل کرنا
مثال کے طور پر، SSH کو منتقل کرنا:
sed -i "s/^#\?Port 22/Port 2222/" /etc/ssh/sshd_config
ufw allow 2222/tcp
sshd -t
systemctl restart ssh
یقینی بنائیں کہ آپ نئے پورٹ پر ایک الگ ونڈو میں لاگ ان کر سکتے ہیں، اور تب ہی پورٹ 22 کا قاعدہ ہٹائیں۔ تفصیل کے لیے SSH ہارڈننگ دیکھیں۔
عام غلطیاں
| علامت | وجہ | حل |
|---|---|---|
Connection refused | سروس چل نہیں رہی | systemctl status، لاگز دیکھیں |
Connection timed out | پیکٹ فائر وال کی طرف سے گرا دیا گیا | قواعد چیک کریں |
| لوکل کام کرتا ہے، باہر سے نہیں | 127.0.0.1 پر بائنڈ ہے | کنفگ میں ایڈریس تبدیل کریں |
Address already in use | پورٹ کسی اور سروس نے لے رکھا ہے | ss -tulpn اور اضافی سروس بند کریں |
پورٹ صرف اُس وقت کھولیں جب آپ جانچ لیں کہ اس پر کیا جواب دے رہا ہے۔ پرانے تجربے کا بھولا ہوا پورٹ ہیک کے لیے عام داخلہ نقطہ ہوتا ہے؛ نقصان پہنچنے کی علامات دیکھیں۔