2011-04-08 74 views
0

我正在開發一個界面,以顯示VNC-Web站點處於活動狀態並提供指向該Web界面的鏈接。在使用外部URL時訪問內部URL

實例:電話1:http://192.168.1.1在端口5800

如果我在我的本地網絡上運行此它工作得很好,因爲所有的電腦都是本地網絡上,我需要的是一個辦法讓這個工作來自外部IP。

有沒有辦法將會話重定向到一個框架或其他地方?

下面是測試我所做的本地網絡上正常工作,遠程它只能中途:

$station1 = @fsockopen("192.168.1.1", 5800);

if ($station1) { 
    echo "<a href='http://192.168.1.1:5800'>Station 1 active.</a>"; 
    echo "<br />"; 
     fclose($station1); 
    } else { 
     echo "Station 1 is inactive."; 
    echo "<br />"; 
    } 

,因爲它是執行「服務器端」,但點擊「的fsockopen」返回TRUE因爲它是在'客戶端'上執行的,所以導致鏈接失敗,例如瀏覽器

任何方法來解決這個問題?有任何想法嗎?

+0

您使用什麼網絡服務器?如果它是apache,你是否啓用了mod_proxy? – mway 2011-04-08 02:17:27

+0

您不能使用具有公共IP的本地站作爲您的應用程序的「服務器」嗎? – Khez 2011-04-08 02:18:52

+0

$ station1將總是返回true,如果你抑制錯誤@ – 2011-04-08 02:21:31

回答

1

你將不得不設立port forwarding在你的路由器,並且每臺機器上的不同端口上運行VNC。這可能是最明智的端口號映射到內部IP,例如:

Port 5801 -> 192.168.1.1 
Port 5802 -> 192.168.1.2 
Port 5803 -> 192.168.1.3 
etc. 

如果再從外部調用的頁面(例如,使用動態IP),你必須找出你的動態從PHP內部獲取IP(例如,請參閱here),然後鏈接到每個端口。

<a href="123.123.123.123:5801">Station 1 active.</a> 
<a href="123.123.123.123:5802">Station 2 active.</a> 
<a href="123.123.123.123:5803">Station 3 active.</a> 

如果沒有將VNC映射到不同的端口,沒有辦法做到這一點。對於外部IP,只有一個IP地址存在。局域網的內部IP地址毫無意義,並且無法從外部來電。

+0

非常感謝佩卡,這是在這個問題上走的路。 – Chris 2011-04-08 15:22:34

0

嘗試下面的代碼來測試,(你得到一個錯誤,告訴你什麼是錯的): 也使用廣域網ip訪問你的廣域網ip使用廣域網ip連接到互聯網不能用普通路由器來完成你將不得不確定其本地網絡或WAN網絡是否相應更改IP(並將所有WAN通信路由到服務器)。

<?php 
if(substr($_SERVER['SERVER_ADDR'], -3)=="1.1"){$server=$_SERVER['SERVER_ADDR'];}else{$server='123.123.YOUR.WAN123.123'} 
    $fp = fsockopen($server, 5800, $errno, $errstr); 
    if (!$fp) { 
     echo "ERROR: $errno - $errstr<br />\n"; 
    } else { 
     echo "<a href='http://'.$server.':5800'>Station 1 active.</a>"; 
     fclose($fp); 
    } 
    ?> 
0

你可以或許會讓網絡調用http://www.whatismyip.com/和刮外部IP地址,然後使用......然而,只有當Web服務器是要查詢的作品之一。如果沒有,它會變得棘手......並且依賴於路由選擇它會變得非常棘手......所以如果每個內部IP都有一個不同的外部IP,那麼確定它可以工作,但如果沒有,那麼你必須控制請求的獲取方式路由...

所以說你有

192.168.1.1

192.168.1.2

192.168.1.3

和它們連接到連接到您的家用無線路由器互聯網....通過說你的ca無線調制解調器,那麼所有3將有相同的IP給你的網絡外的人,事實上你的路由器很可能不允許人們回撥你的網絡。你將不得不配置你的路由器來轉發請求到不同的端口以轉到特定的內部IP地址。

所以不知道該如何路由設置是回答這個問題是非常困難的