سؤال كيف يمكنني تحديد IP والمنافذ لاسم مضيف في ملف Windows hosts؟


أرغب في تحديد أسماء المضيفين مع منفذين مختلفين في Windows hosts ملف.

هل هناك طريقة لفعل ذلك؟ أم أنها غير مسموح بها من قبل Windows نفسه؟

لقد كنت أضيع وقتي في البحث عن الحل في آخر 8 ساعات.

هل من الممكن تحديد المنافذ في ملف المضيف ، hosts؟ على سبيل المثال: 127.0.0.1:80 و 127.0.0.1:9211


14
2018-02-21 18:39


الأصل


يقوم ملف HOSTS فقط بربط الأسماء بعناوين IP ، وليس بمنفذ (منافذ) IPs +. ولكن ، تأكد من superuser.com من خلال وصف المزيد من تفاصيل ما تحاول القيام به (هل هذا لخادم الويب وما إلى ذلك) حيث أن هناك العديد من الطرق لتحقيق هذا النوع من الخرائط ، ولكن دائمًا حسب التفاصيل في اليد.
أنت بحاجة إلى خادم NGNIX أو Apache HTTP كخادم وكيل لإعادة توجيه طلبات http إلى التطبيق المناسب -> الذي يستمع إلى منفذ معين - Musa


الأجوبة:


لا يمكنك إقران رقم المنفذ مع اسم مضيف يتم تعيينه إلى عنوان IP في ملف hosts. يمكنك تحقيق هذا مع العابث على الرغم من استخدام FiddlerScript:

if (oSession.HostnameIs("somesite.com")){
    oSession.bypassGateway = true;
    oSession["x-overrideHost"] = "1.2.3.4:8080";
}

13
2018-02-21 18:47



اقتراح لطيف لمستخدمي التكنولوجيا. فقط لتوضيح ، 1) التثبيت الأول Fiddler 2) ثم فتحه والانتقال إلى قائمة القواعد واختيار خيار تخصيص القواعد (أو اضغط Ctrl + R على النوافذ). سيؤدي هذا إلى فتح ملف JS في المفكرة. 3) البحث عن وظيفة ثابتة OnBeforeRequest ولصق النص المقترح من قبلJohn داخل جسمها. كما لن تعمل HostNameIs ، يجب أن يكون HostnameIs. أتمنى أن يساعدك هذا. - Riz


ببساطة استخدام عناوين IP دون منافذ. مثال:

192.168.2.50  example.com

بعد ذلك ، للوصول إلى 192.168.2.50:5555 من المتصفح (أو أي برنامج آخر):

http://example.com:5555/

(ال hosts يمكن العثور على الملف في C:\Windows\System32\drivers\etc\hosts.)


13
2017-11-15 08:54



سيكون من المفيد إضافة كليهما مسار و اسم الملف ليتم تحريرها. - nyedidikeke
nyedidikeke شكرا على التعليق ، أصلحت هذا - devi
هل يمكن تحديث ربما مع السبب لعدم تحديد رقم المنفذ عند تحرير الملف على C:\Windows\System32\drivers\etc\hosts ؟ - nyedidikeke
هذا يشمل الإجابات الأخرى. - Scott


  • ال hosts الملف لاستبيان اسم المضيف فقط
  • ال المتصفح، في غياب تحديد المنفذ مباشرة: بمعنى <hostname>:<port>، التخلف الى المرفئ 80

السيناريو مشكلة نموذجية

  1. عادةً ما تقوم التطبيقات بتعيين الخوادم الخاصة بهم على نفس عنوان IP الافتراضي 127.0.0.1 الملقب localhost  (محددة في ملف المضيفين).
  2. لتجنب حدوث تصادم بين خوادم أخرى موجودة أو جارية ، فإن التطبيق يسمح لك عادة بتغيير المنفذ ، ولكن ليس عنوان IP.

    2A. إذا يمكنك تغيير عنوان IP للخوادم إلى آخر في استرجاع مساحة العنوان المحجوزة  127.0.0.0/8، فأنت على الأرجح لن تحاول تعيين منافذ في ملف المضيفات.

حل ممكن

يمكنك حل هذا باستخدام وشملت ويندوز أداة الشبكات netsh كخادم منفذ.


نظرة عامة

example.app
 |                               <--browser defaults to port 80
 +--> example.app:80
       |                         <--Hostname resolution by Hosts File
       +--> 127.65.43.21:80      
             |                   <--Link by netsh Utility
             +--> 127.0.0.1:8081

أفعال

  • قم بتشغيل الخادم الخاص بك localhost:8081
  • إضافة "DNS المحلية" في يستضيف الملف كخط جديد
    • 127.65.43.21 example.app
      • أي عنوان مجاني في الشبكة 127.0.0.0/8 يمكن استعماله.
      • ملحوظة: انا اخمن 127.65.43.21:80 لا تحتلها خدمة أخرى.
      • يمكنك التحقق مع netstat -a -n -p TCP | grep "LISTENING"
  • إضافة تكوين الشبكة التالية مع الأمر netsh خدمة
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • الوصول إلى الخادم في http://example.app

ملاحظات:
 - يجب تنفيذ هذه التعديلات على الأوامر / الملفات باستخدام حقوق المسؤول


3
2017-09-15 09:44