2011-04-08 37 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地址。

所以不知道该如何路由设置是回答这个问题是非常困难的