Làm cách nào để IIS hoạt động và có thể truy cập bên ngoài mạng của tôi phía sau bộ định tuyến? [đóng cửa]


9

Máy của tôi đang chạy Windows 7 Ultimate. Đây là những gì tôi đã làm (thành công) cho đến nay:

  1. Đã cài đặt IIS 7.5 với PHP qua FastCGI
  2. Nó đã hoạt động! Khi tôi truy cập http: //localhost/index.php , các tập lệnh PHP của tôi chạy tốt.
  3. Chạy ipconfig để tìm ra rằng địa chỉ IP cục bộ của tôi là 192.168.1.102. Tôi đã xác nhận rằng http://192.168.1.102/index.php hoạt động chính xác như địa chỉ localhost ở trên.
  4. Đi vào quản trị bộ định tuyến của tôi (Tôi có Linksys WRT54G2) và thiết lập chuyển tiếp cổng trên cổng 80 đến 192.168.1.102. Bây giờ cổng 80 đang chuyển tiếp đến máy của tôi.
  5. Thiết lập quy tắc gửi đến trong Tường lửa Windows để cho phép mọi hoạt động trên cổng 80.
  6. Tìm ra địa chỉ IP bên ngoài của tôi là từ Google. Hãy gọi nó là XXX.XX.XX.XX.

Tuy nhiên, khi tôi cố gắng truy cập http: //XXX.XX.XX.XX/index.php từ máy của tôi hoặc từ một máy tính ở xa và không phải trên mạng của tôi, dù sao đi nữa ... tôi không nhận được gì. Nó cố gắng kết nối một lúc (không thành công) nhưng cuối cùng chỉ bỏ cuộc.

Đây là những gì tôi đang tự hỏi:

  1. Tôi đang thiếu gì? Tôi đã quên / bỏ qua những gì? Làm thế nào để tôi làm việc này và có thể truy cập bên ngoài mạng cục bộ của mình?
  2. Giả sử tôi đã làm việc này, làm thế nào tôi có thể sử dụng một cổng khác ngoài cổng 80? Tôi cần thay đổi gì (ví dụ: IIS, Windows Firewall, quản trị bộ định tuyến, v.v.) để thực hiện điều đó?

Cảm ơn rất nhiều trước!


1
xem cổng của bạn được chuyển tiếp thành công ở đây yougetsignal.com/tools/open-ports
smohamed

Câu trả lời:


5

Điều này có vẻ như là một vấn đề HTTP.SYS mà bạn đang gặp phải.

Dưới đây là một đoạn trích từ blog của Scott Hanselman mô tả cách phơi bày IISExpress bên ngoài localhost. Bài đăng trên blog dài hơn cũng mô tả cách nối dây SSL. Nhưng tôi tin rằng các lệnh mà tôi đã đăng dưới đây mà tôi đã rút ra từ bài đăng của anh ấy sẽ giúp bạn giải quyết vấn đề bạn đang gặp phải.

Trước tiên, chúng ta cần nói với HTTP.SYS ở cấp độ kernel rằng mọi người đều có thể nói chuyện với URL này bằng cách thực hiện "Đặt chỗ Url". Từ một dấu nhắc lệnh hành chính:

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

Tiếp theo, vì tôi muốn có thể nói chuyện với IIS Express từ bên ngoài (folks trên mạng của tôi, v.v. Không chỉ localhost) nên tôi cần cho phép IIS Express thông qua Windows Firewall. Tôi có thể làm điều đó bằng đồ họa từ Windows hoặc gõ:

netsh firewall add portopening TCP 80 IISExpressWeb enable ALL

Bạn có thể không cần lệnh cuối cùng vì bạn nói rằng bạn đã tạo quy tắc tường lửa.


Tôi đã chạy lệnh Netsh đầu tiên để thêm phần đặt trước URL, nhưng điều này không làm gì cả (vẫn hoạt động cục bộ, nhưng không nằm ngoài mạng của tôi). Còn ý tưởng nào khác không?
soapergem

Điều này có vẻ không đúng. Bạn không cần phải tìm hiểu kỹ về http.sys để chuyển tiếp phiên bản IIS 7.5 (không phải IIS Express) thực tế.
TristanK

2
  1. (Truy cập từ bên ngoài mạng của bạn) Nhiều ISP dân cư (và một số ISP kinh doanh) sẽ chặn lưu lượng truy cập vào các cổng dịch vụ nhất định, như cổng 80 hoặc 25. Điều này thường giúp bạn không chạy các dịch vụ kinh doanh trên đường dây dân cư do sử dụng băng thông. Thay thế là chạy nó trên một cổng khác (xem bên dưới).

  2. (Truy cập từ bên trong mạng của bạn) Tình huống bạn mô tả âm thanh như kẹp tóc NAT. Dưới đây là một cái nhìn tổng quan cấp cao về Hairpin NAT . Bạn sẽ cần thêm các quy tắc NAT vào bộ định tuyến của mình để luôn tạo lưu lượng truy cập cho IP bên ngoài, cổng 80 đi qua bộ định tuyến của bạn và không trực tiếp từ máy chủ đến máy chủ trong mạng của bạn. Hãy cẩn thận: Bộ định tuyến của bạn có thể không thực sự có thể làm điều này.

  3. Thay đổi liên kết cổng trong IIS, sau đó khởi động lại trang web.


Tôi đã thêm một ràng buộc vào IIS để nó hoạt động trên cổng 8080 và một lần nữa, nó hoạt động cục bộ. Vì vậy 192.168.1.102:8080/index.php hoạt động. Tôi cũng đã thêm quy tắc vào trong Tường lửa Windows cho cổng 8080, tuy nhiên nó vẫn không hoạt động bên ngoài mạng của tôi. Tôi đã xem xét thêm các quy tắc NAT vào bộ định tuyến Linksys WRT54G2 của mình và sự giúp đỡ tôi tìm thấy trực tuyến cho biết điều này sẽ liên quan đến việc thiết lập các tùy chọn "Kích hoạt cổng". Tôi thiết lập nó, nhưng vẫn ... không có xúc xắc. Bất cứ một đề nghị nào khác?
soapergem

1
Nếu bạn có thể truy cập nội bộ thì Windows Firewall không phải là vấn đề của bạn. Kích hoạt cổng không phải là những gì bạn muốn. Bạn sẽ sử dụng chuyển tiếp cổng (nếu bộ định tuyến của bạn hỗ trợ nó). Chuyển tiếp lưu lượng truy cập trên cổng 8080 trên giao diện bên ngoài của bộ định tuyến của bạn sang 192.168.1.102:8080
Joel E Salas

Tôi đã làm điều đó (Chuyển tiếp cổng trên cả hai cổng 80 và 8080) TRƯỚC KHI tôi đã đặt câu hỏi. Tôi vẫn còn thiếu một cái gì đó, rõ ràng.
soapergem

Bộ định tuyến có bất kỳ quy tắc tường lửa thực tế nào (ngoài quy tắc NAT) có thể chặn lưu lượng không? Nếu có thể, hãy tự thiết lập một hộp chạy pfSense để sử dụng làm bộ định tuyến cho mục đích gỡ lỗi. Bộ định tuyến của bạn (không được thiết kế cho dịch vụ lưu trữ) gần như chắc chắn là nguyên nhân gây ra tai ương của bạn.
Joel E Salas

Có vẻ như bạn không làm gì sai ở cấp IIS, chỉ là bộ định tuyến không trực quan / ISP của bạn đang chặn bạn. Cũng có thể những gì bạn nghĩ là IP của bạn được định hướng kép; kiểm tra ý tưởng của bộ định tuyến về IP bên ngoài là gì.
TristanK

0

Tôi đã từng gặp vấn đề tương tự. Tường lửa Windows đang chặn truy cập. Tắt nó và kiểm tra lại. Tôi đoán là nó sẽ hoạt động.


2
Nói chung không phải là một giải pháp tốt để tắt tường lửa.
dùng9517

Thay vào đó, thêm ngoại lệ cho cổng 80 và 443.
Najeeb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.