连接到本地网络 Raspberry Pi
Connecting to a local network Raspberry Pi
我有一个:
Rasberry Pi 2
运行
Raspbian Jessie Version:November 2015
我正在使用 Undertow(一个 Java http 服务器)为网站提供服务。这是我用来构建服务器的代码。
Undertow server = Undertow.builder()
.addHttpListener(8890, "localhost")
.setHandler(Handlers.pathTemplate()
.add("/", resource(new PathResourceManager(staticFilePath, 100))
.setDirectoryListingEnabled(false))
.build();
问题:尽管能够通过 ping 和 SSH 连接到 PI,但我无法从本地网络上的另一台机器上看到网络服务器。
我做了什么(在 Pi2 上):
wget localhost:8890
returns index.html 正确
netstat -lptn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 127.0.0.1:8890 :::* LISTEN 1743/java
Chrome 在我的开发机器 192.168.1.8:8890 上给出
ERR_CONNECTION_REFUSED
wget 192.168.1.8:8890
连接到 192.168.1.8:8890...失败:连接被拒绝。
nmap 192.168.1.8
Starting Nmap 6.40 ( http://nmap.org ) at 2015-12-05 14:05 CST
Nmap scan report for 192.168.1.8
Host is up (0.039s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 1.83 seconds
据我所知,没有防火墙,所以我很困惑为什么我无法从我的开发机器上看到服务器。
参见:
tcp6 0 0 127.0.0.1:8890 :::* LISTEN 1743/java
您的网络服务器仅侦听本地主机地址 (127.0.0.1)。这样就无法从本地主机以外的任何地方访问它。
并且您的 nmap 扫描显示相同:唯一可远程访问的端口是 22。
要远程访问此服务,您必须将 Web 服务器绑定到属于此 raspberry pi (192.168.1.8) 或 "any address" 0.0.0.0 的任何非本地地址,因为 SSH 服务是绑定。
如何执行此操作已在您的网络服务器手册中进行了说明。可能,您必须从“-d”参数开始,即
standalone.sh -b=0.0.0.0
standalone.sh -Djboss.bind.address=0.0.0.0
或类似这样的内容。
在侦听器设置代码中看起来像这样
"localhost" 必须替换为某些 public 名称。这可能是“0.0.0.0”或“192.168.1.8”。我们也可以
cat "192.168.1.8 somename" >> /etc/hosts
然后使用某个名称:
Undertow server = Undertow.builder() .addHttpListener(8890, "somename")
我有一个:
Rasberry Pi 2
运行
Raspbian Jessie Version:November 2015
我正在使用 Undertow(一个 Java http 服务器)为网站提供服务。这是我用来构建服务器的代码。
Undertow server = Undertow.builder()
.addHttpListener(8890, "localhost")
.setHandler(Handlers.pathTemplate()
.add("/", resource(new PathResourceManager(staticFilePath, 100))
.setDirectoryListingEnabled(false))
.build();
问题:尽管能够通过 ping 和 SSH 连接到 PI,但我无法从本地网络上的另一台机器上看到网络服务器。
我做了什么(在 Pi2 上):
wget localhost:8890
returns index.html 正确
netstat -lptn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 127.0.0.1:8890 :::* LISTEN 1743/java
Chrome 在我的开发机器 192.168.1.8:8890 上给出 ERR_CONNECTION_REFUSED
wget 192.168.1.8:8890
连接到 192.168.1.8:8890...失败:连接被拒绝。
nmap 192.168.1.8
Starting Nmap 6.40 ( http://nmap.org ) at 2015-12-05 14:05 CST
Nmap scan report for 192.168.1.8
Host is up (0.039s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 1.83 seconds
据我所知,没有防火墙,所以我很困惑为什么我无法从我的开发机器上看到服务器。
参见:
tcp6 0 0 127.0.0.1:8890 :::* LISTEN 1743/java
您的网络服务器仅侦听本地主机地址 (127.0.0.1)。这样就无法从本地主机以外的任何地方访问它。
并且您的 nmap 扫描显示相同:唯一可远程访问的端口是 22。
要远程访问此服务,您必须将 Web 服务器绑定到属于此 raspberry pi (192.168.1.8) 或 "any address" 0.0.0.0 的任何非本地地址,因为 SSH 服务是绑定。
如何执行此操作已在您的网络服务器手册中进行了说明。可能,您必须从“-d”参数开始,即
standalone.sh -b=0.0.0.0
standalone.sh -Djboss.bind.address=0.0.0.0
或类似这样的内容。
在侦听器设置代码中看起来像这样
"localhost" 必须替换为某些 public 名称。这可能是“0.0.0.0”或“192.168.1.8”。我们也可以
cat "192.168.1.8 somename" >> /etc/hosts
然后使用某个名称:
Undertow server = Undertow.builder() .addHttpListener(8890, "somename")