Bagaimana cara membuat IIS berfungsi dan dapat diakses di luar jaringan saya di belakang router? [Tutup]

9

Mesin saya menjalankan Windows 7 Ultimate. Inilah yang telah saya lakukan (berhasil) sejauh ini:

  1. Menginstal IIS 7.5 dengan PHP lebih dari FastCGI
  2. Berhasil! Ketika saya membuka http: //localhost/index.php , skrip PHP saya berjalan dengan baik.
  3. Jalankan ipconfig untuk mengetahui bahwa alamat IP lokal saya adalah 192.168.1.102. Saya mengkonfirmasi bahwa http://192.168.1.102/index.php berfungsi persis seperti alamat localhost di atas.
  4. Pergi ke administrasi router saya (saya punya Linksys WRT54G2) dan mengatur penerusan port pada port 80 ke 192.168.1.102. Sekarang port 80 meneruskan ke mesin saya.
  5. Siapkan aturan masuk di Windows Firewall untuk mengizinkan semua aktivitas di port 80.
  6. Menemukan apa alamat IP luar saya dari Google. Sebut saja XXX.XX.XX.XX.

Namun, ketika saya mencoba untuk pergi ke http: //XXX.XX.XX.XX/index.php dari komputer saya sendiri, atau dari komputer yang jauh dan tidak di jaringan saya, baik cara ... saya tidak mendapatkan apa-apa. Ia mencoba untuk terhubung untuk sementara waktu (tidak berhasil) tetapi akhirnya menyerah.

Inilah yang saya ingin tahu:

  1. Apa yang saya lewatkan? Apa yang saya lupa / abaikan? Bagaimana cara saya membuatnya bekerja dan dapat diakses di luar jaringan lokal saya sendiri?
  2. Dengan asumsi saya mendapatkan ini berfungsi, bagaimana saya bisa menggunakan port selain port 80? Perubahan apa yang perlu saya buat (mis. IIS, Windows Firewall, administrasi router, dll.) Agar memungkinkan?

Terima kasih banyak sebelumnya!

soapergem
sumber
1
lihat apakah port Anda diteruskan dengan sukses di sini yougetsignal.com/tools/open-ports
smohamed

Jawaban:

5

Ini terdengar seperti masalah HTTP.SYS yang Anda alami.

Di bawah ini adalah kutipan dari blog Scott Hanselman yang menjelaskan cara mengekspos IISExpress di luar localhost. Posting blog lebih panjang yang juga menjelaskan cara memasang SSL. Tapi saya percaya perintah yang saya posting di bawah ini yang saya tarik dari posnya akan membantu Anda menyelesaikan masalah yang Anda alami.

Pertama, kita perlu memberi tahu HTTP.SYS di tingkat kernel bahwa tidak apa-apa membiarkan semua orang berbicara dengan URL ini dengan membuat "Reservasi Url." Dari prompt perintah administratif:

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

Selanjutnya, karena saya ingin dapat berbicara dengan IIS Express dari luar (orang-orang di jaringan saya, dll. Bukan hanya localhost) maka saya harus mengizinkan IIS Express melalui Windows Firewall. Saya bisa melakukannya secara grafis dari Windows, atau ketik:

netsh firewall add portopening TCP 80 IISExpressWeb enable ALL

Anda mungkin tidak memerlukan perintah terakhir karena Anda menyatakan bahwa Anda sudah membuat aturan firewall.

jamason1983
sumber
Saya menjalankan perintah netsh pertama untuk menambahkan reservasi URL, tetapi ini tidak melakukan apa-apa (masih berfungsi secara lokal, tetapi tidak di luar jaringan saya). Ada ide lain?
soapergem
Ini tidak beres. Anda tidak perlu repot-repot dengan http.sys untuk mendapatkan contoh IIS 7.5 yang sebenarnya (bukan IIS Express) yang diteruskan.
TristanK
2
  1. (Akses dari luar jaringan Anda) Banyak ISP perumahan (dan beberapa ISP bisnis) akan memblokir lalu lintas masuk pada port layanan tertentu, seperti port 80 atau 25. Hal ini umumnya membuat Anda tidak menjalankan layanan bisnis pada saluran perumahan karena penggunaan bandwidth. Alternatifnya adalah menjalankannya di port lain (lihat di bawah).

  2. (Akses dari dalam jaringan Anda) Situasi yang Anda gambarkan terdengar seperti hairpin NAT. Berikut ini adalah ikhtisar tingkat tinggi yang baik dari Hairpin NAT . Anda perlu menambahkan aturan NAT ke router Anda untuk selalu membuat traffic diperuntukkan bagi IP eksternal Anda, port 80 melewati router Anda dan tidak langsung dari host ke host di dalam jaringan Anda. Peringatan: Router Anda mungkin tidak benar-benar dapat melakukan ini.

  3. Ubah port binding di IIS, kemudian restart situs web.

Joel E Salas
sumber
Saya menambahkan ikatan ke IIS agar berfungsi pada port 8080, dan sekali lagi, ini bekerja secara lokal. Jadi 192.168.1.102:8080/index.php berfungsi. Saya juga menambahkan aturan masuk ke Windows Firewall untuk port 8080, namun itu masih tidak berfungsi di luar jaringan saya. Saya melihat ke dalam menambahkan aturan NAT ke router Linksys WRT54G2 saya, dan bantuan yang saya temukan online mengatakan ini akan melibatkan pengaturan opsi "Port Triggering" -nya. Saya mengatur ini, tapi masih ... tidak ada dadu. Ada saran lain?
soapergem
1
Jika Anda dapat mengaksesnya secara internal, maka Windows Firewall bukan masalah Anda. Pemicu port bukanlah yang Anda inginkan. Anda akan menggunakan penerusan port (jika router Anda mendukungnya). Meneruskan lalu lintas pada port 8080 pada antarmuka eksternal router Anda ke 192.168.1.102:8080
Joel E Salas
Saya sudah melakukan itu (Port Forwarding pada kedua port 80 dan 8080) SEBELUM saya mengajukan pertanyaan. Aku masih merindukan sesuatu, rupanya.
soapergem
Apakah router memiliki aturan firewall yang sebenarnya (terlepas dari aturan NAT) yang dapat memblokir lalu lintas? Jika memungkinkan, atur sendiri kotak yang menjalankan pfSense untuk digunakan sebagai router Anda untuk keperluan debugging. Router Anda (yang tidak dirancang untuk layanan hosting) hampir pasti menjadi penyebab kesengsaraan Anda.
Joel E Salas
Sepertinya Anda tidak melakukan kesalahan pada tingkat IIS, hanya saja routernya tidak intuitif / ISP Anda memblokir Anda. Mungkin juga apa yang Anda pikirkan adalah IP Anda dua arah; periksa gagasan perute tentang apa IP eksternal itu.
TristanK
0

Saya memiliki masalah yang sama. Windows Firewall memblokir akses. Matikan dan periksa lagi. Dugaan saya adalah bahwa itu akan berhasil.

Larry Fortna
sumber
2
Ini umumnya bukan solusi yang baik untuk mematikan firewall saja.
user9517
Tambahkan pengecualian untuk port 80 dan 443 sebagai gantinya.
Najeeb