IIS'nin bir yönlendiricinin arkasında ağımın dışında çalışmasını ve erişilebilir olmasını nasıl sağlayabilirim? [kapalı]


9

Makinemde Windows 7 Ultimate çalışıyor. Şimdiye kadar (başarıyla) yaptığım şey:

  1. FastCGI üzerinden PHP ile IIS 7.5 yüklendi
  2. Çalıştı! Http: //localhost/index.php adresine gittiğimde , PHP betiklerim düzgün çalışıyor.
  3. Yerel IP adresimin 192.168.1.102 olduğunu öğrenmek için ipconfig komutunu çalıştırdım. Ben doğruladı http://192.168.1.102/index.php aynen yukarıdaki localhost adresi gibi işlev görür.
  4. Yönlendirici yönetimime gittim (bir Linksys WRT54G2 var) ve 80 ila 192.168.1.102 numaralı bağlantı noktasında bağlantı noktası iletmeyi ayarlayın. Şimdi 80 numaralı bağlantı noktası makineme yönlendiriliyor.
  5. Bağlantı noktası 80'deki tüm etkinliklere izin vermek için Windows Güvenlik Duvarı'nda bir gelen kuralı ayarlayın.
  6. Dış IP adresimin Google'dan ne olduğunu öğrenin. Buna XXX.XX.XX.XX diyelim.

Ancak, http: //XXX.XX.XX.XX/index.php adresine kendi makinemden veya ağımdan çok uzaktaki bir bilgisayardan gitmeye çalıştığımda ... Hiçbir şey almıyorum. Bir süreliğine (başarısız) bağlanmaya çalışır, ancak sonunda vazgeçer.

İşte merak ediyorum:

  1. Neyi kaçırıyorum? Neyi unuttum / gözden kaçırdım? Bunu kendi yerel ağımın dışında nasıl çalışır hale getirebilirim?
  2. Bunu çalıştırdığımı varsayarsak, bağlantı noktası 80 dışında bir bağlantı noktasını nasıl kullanabilirim? Bunu mümkün kılmak için ne tür değişiklikler yapmam gerekir (örn. IIS, Windows Güvenlik Duvarı, yönlendirici yönetimi, vb.)?

Şimdiden çok teşekkürler!


1
bağlantı noktanızın başarıyla yönlendirilip yönlendirilmediğine bakın yougetsignal.com/tools/open-ports
smohamed

Yanıtlar:


5

Bu, yaşadığınız bir HTTP.SYS sorunu gibi görünüyor.

Aşağıda, Scott Hanselman'ın blogundan , IISExpress'in localhost dışında nasıl gösterileceğini açıklayan bir alıntı bulunmaktadır . Blog yayını daha uzundur ve bu da SSL'nin nasıl bağlanacağını açıklar. Ancak, aşağıda yayınladığım ve görevinden aldığım komutların, yaşadığınız sorunu çözmenize yardımcı olacağına inanıyorum.

İlk olarak, çekirdek düzeyinde HTTP.SYS'ye "URL Rezervasyonu" yaparak herkesin bu URL ile konuşmasına izin vermenin uygun olduğunu söylememiz gerekir. Bir yönetici komut isteminden:

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

Sonra dışarıdan IIS Express ile (ağımdaki millet, vb.) Konuşmak istediğim için, Windows Express Güvenlik Duvarı üzerinden IIS Express'e izin vermem gerekiyor. Bunu grafiksel olarak Windows'dan yapabilirim veya şunu yazabilirim:

netsh firewall add portopening TCP 80 IISExpressWeb enable ALL

Zaten bir güvenlik duvarı kuralı oluşturduğunuzu belirttiğiniz için son komuta ihtiyacınız olmayabilir.


Bir URL rezervasyonu eklemek için ilk netsh komutunu çalıştırdım, ancak bu hiçbir şey yapmadı (hala yerel olarak çalıştı, ancak ağımın dışında değil). Başka fikir var mı?
soapergem

Bu doğru görünmüyor. Gerçek bir IIS 7.5 örneği (IIS Express değil) bağlantı noktası yönlendirmesi almak için http.sys ile uğraşmanıza gerek yoktur.
TristanK

2
  1. (Ağınızın dışından erişim) Pek çok yerleşim İSS'si (ve bazı işletme İSS'leri) bağlantı noktası 80 veya 25 gibi belirli hizmet bağlantı noktalarındaki gelen trafiği engeller. Bu, genellikle bant genişliği kullanımı nedeniyle işletme hizmetlerini bir yerleşim hattında yürütmenizi engellemektir. Alternatif, onu başka bir bağlantı noktasında çalıştırmaktır (aşağıya bakın).

  2. (Ağınızın içinden erişim) Açıkladığınız durum saç tokası NAT gibi geliyor. İşte saç tokası NAT iyi bir üst düzey genel bakış . Harici IP'nize giden trafiği her zaman yönlendirmek için yönlendiricinize NAT kuralları eklemeniz gerekir, bağlantı noktası 80 doğrudan ana bilgisayardan ağınızdaki ana bilgisayara değil yönlendiricinizden geçer. Uyarı: Yönlendiriciniz aslında bunu yapamayabilir.

  3. IIS'de bağlantı noktası bağlayıcısını değiştirin , ardından web sitesini yeniden başlatın.


IIS 8080 bağlantı noktasında çalışması için bir bağlanma ekledim ve yine, bu yerel olarak çalışır. Yani 192.168.1.102:8080/index.php eser. Ayrıca 8080 numaralı bağlantı noktası için Windows Güvenlik Duvarı'na bir Gelen kuralı ekledim, ancak yine de ağımın dışında çalışmıyor. Linksys WRT54G2 yönlendiricime NAT kuralları eklemeyi araştırdım ve çevrimiçi bulduğum yardım, bunun "Bağlantı Noktası Tetikleme" seçeneklerini ayarlamayı içereceğini söyledi. Bunu ayarladým, ama yine de ... zar yok. Başka öneriniz var mı?
soapergem

1
Dahili olarak erişebiliyorsanız, Windows Güvenlik Duvarı sorununuz değildir. Port tetikleme istediğiniz şey değildir. Bağlantı noktası yönlendirme kullanacaksınız (yönlendiriciniz destekliyorsa). Yönlendiricinizin harici arabirimindeki 8080 numaralı bağlantı noktasındaki trafiği 192.168.1.102:8080'e iletin
Joel E Salas

Soruyu sormadan ÖNCE bunu zaten yapıyordum (80 ve 8080 bağlantı noktalarının her ikisinde de Port Yönlendirme). Görünüşe göre hala bir şey eksik.
soapergem

Yönlendiricinin trafiği engelleyebilecek gerçek güvenlik duvarı kuralları (NAT kuralları dışında) var mı? Mümkünse, hata ayıklama amacıyla yönlendirici olarak kullanmak için kendinize pfSense çalıştıran bir kutu kurun. Yönlendiriciniz (barındırma hizmetleri için tasarlanmamıştır) neredeyse kesinlikle sıkıntılarınızın sebebidir.
Joel E Salas

IIS düzeyinde yanlış bir şey yapmadığınız anlaşılıyor, sadece yönlendirici sezgisel değil / İSS'niz sizi engelliyor. IP'nizin çift dolaylı olduğunu düşündüğünüz şey de mümkündür; yönlendiricinin harici IP'nin ne olduğu fikrini kontrol edin.
TristanK

0

Ben de aynı problemi yaşadım. Windows Güvenlik Duvarı erişimi engelliyor. Kapatın ve tekrar kontrol edin. Benim tahminim işe yarayacak.


2
Bir güvenlik duvarını kapatmak genellikle iyi bir çözüm değildir.
user9517

Bunun yerine 80 ve 443 numaralı bağlantı noktaları için istisnalar ekleyin.
Najeeb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.