Як зробити так, щоб IIS працював і був доступний поза моєю мережею за маршрутизатором? [зачинено]


9

У моїй машині працює Windows 7 Ultimate. Ось що я зробив (успішно) поки що:

  1. Встановлено IIS 7.5 з PHP через FastCGI
  2. Розібрався! Коли я переходжу до http: //localhost/index.php , мої сценарії PHP працюють нормально.
  3. Побіг ipconfig, щоб дізнатися, що моя локальна IP-адреса - 192.168.1.102. Я підтвердив, що http://192.168.1.102/index.php функціонує точно так само, як адреса localhost вище.
  4. Зайшов в адміністратор маршрутизатора (у мене є Linksys WRT54G2) і налаштував переадресацію портів на порт 80 на 192.168.1.102. Тепер порт 80 пересилає до моєї машини.
  5. Встановіть вхідне правило в брандмауері Windows, щоб дозволити всю активність на порту 80.
  6. Дізнався, яка моя зовнішня IP-адреса від Google. Назвемо це XXX.XX.XX.XX.

Однак, коли я намагаюся перейти на http: //XXX.XX.XX.XX/index.php з власної машини, або з комп'ютера далеко, і не в мережі, так чи інакше ... я нічого не отримую. Він намагається підключитися ненадовго (безуспішно), але з часом просто здається.

Ось що мені цікаво:

  1. Що я пропускаю? Що я забув / не помітив? Як зробити це робочим і доступним за межами власної локальної мережі?
  2. Якщо припустити, що це все працює, як я можу потім використовувати інший порт, ніж порт 80? Які зміни мені потрібно внести (наприклад, IIS, брандмауер Windows, адміністратор маршрутизатора тощо), щоб зробити це можливим?

Заздалегідь дякую!


1
подивіться, чи успішно передано ваш порт тут yougetsignal.com/tools/open-ports
smohamed

Відповіді:


5

Це звучить як у вас проблема HTTP.SYS.

Нижче наведено уривок із блогу Скотта Хензельмана, який описує, як виставити IISExpress за межами localhost. Повідомлення в блозі довше, в якому також описано, як підключити SSL. Але я вірю, що команди, які я розмістив нижче, я витягнув з його посади, допоможуть вам вирішити проблему.

По-перше, нам потрібно сказати HTTP.SYS на рівні ядра, що це нормально, щоб усі могли поговорити з цією URL-адресою, зробивши "Резервацію URL-адреси". З адміністративного командного рядка:

netsh http add urlacl url=http://<LocalComputerName>:80/ user=everyone

Далі, оскільки я хочу мати можливість спілкуватися з IIS Express ззовні (люди в моїй мережі тощо. Не тільки localhost), тоді мені потрібно дозволити IIS Express через брандмауер Windows. Я можу це зробити графічно з Windows або набрати:

netsh firewall add portopening TCP 80 IISExpressWeb enable ALL

Можливо, вам не знадобиться остання команда, оскільки ви заявляєте, що вже створили правило брандмауера.


Я запустив першу команду netsh, щоб додати резервування URL-адреси, але це нічого не зробило (все ще працювало локально, але не за межами моєї мережі). Будь-які інші ідеї?
soapergem

Це не виглядає правильно. Вам не потрібно спілкуватися з http.sys, щоб отримати фактично переадресований порт IIS 7.5 (не IIS Express).
TristanK

2
  1. (Доступ за межі вашої мережі) Багато житлових Інтернет-провайдерів (і деякі бізнес-провайдери) заблокують вхідний трафік на певних портах обслуговування, таких як порт 80 або 25. Це, як правило, утримує вас від запуску ділових служб на житловій лінії через використання пропускної здатності. Альтернативно - запустити його на іншому порту (див. Нижче).

  2. (Доступ зсередини вашої мережі) Ситуація, яку ви описуєте, звучить як NAT шпилька NAT. Ось хороший огляд Hairpin NAT на високому рівні . Вам потрібно буде додати правила NAT до маршрутизатора, щоб завжди робити трафік, призначений для вашого зовнішнього IP-адреси, порт 80 проходить через ваш маршрутизатор, а не безпосередньо від хоста до хоста всередині вашої мережі. Caveat: Ваш маршрутизатор може насправді цього не зробити.

  3. Змініть прив’язку порту в IIS, а потім перезапустіть веб-сайт.


Я додав прив'язку до IIS, щоб він працював на порту 8080, і знову це працює на локальному рівні. Так працює 192.168.1.102:8080/index.php . Я також додав вхідне правило до брандмауера Windows для порту 8080, однак він все ще не працює поза моєю мережею. Я розглядав питання додавання NAT до мого маршрутизатора Linksys WRT54G2, і допомога, яку я знайшов в Інтернеті, сказала, що це передбачає налаштування його параметрів "Port Triggering". Я це налаштував, але все-таки ... без кісток. Будь-які інші пропозиції?
soapergem

1
Якщо ви можете отримати доступ до нього внутрішньо, то брандмауер Windows не є вашою проблемою. Запуск порту - це не те, що потрібно. Ви будете використовувати переадресацію портів (якщо ваш маршрутизатор це підтримує). Переадресація трафіку на порт 8080 на зовнішньому інтерфейсі вашого маршрутизатора до 192.168.1.102:8080
Joel E Salas

Я вже робив це (переадресація портів на обох портах 80 та 8080), перш ніж я задав це питання. Я все-таки щось пропускаю, мабуть.
soapergem

Чи має маршрутизатор якісь фактичні правила брандмауера (крім правил NAT), які можуть блокувати трафік? Якщо це взагалі можливо, встановіть вікно під керуванням pfSense для використання в якості маршрутизатора для налагодження. Ваш маршрутизатор (який не призначений для розміщення хостингових послуг) майже напевно є причиною ваших негараздів.
Joel E Salas

Схоже, ви нічого не зробили на рівні IIS, просто маршрутизатор не інтуїтивний / ваш Інтернет-провайдер блокує вас. Можливо також, що ви вважаєте, що ваш IP-код є двобічним; перевірити уявлення маршрутизатора про те, що таке зовнішній IP.
TristanK

0

У мене була така ж проблема. Брандмауер Windows блокує доступ. Вимкніть його і перевірте ще раз. Я здогадуюсь, що це спрацює.


2
Зазвичай це не гарне рішення просто вимкнути брандмауер.
користувач9517

Додайте натомість винятки для портів 80 та 443.
Najeeb
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.