我刚刚从我的 ISP 收到静态 IP 地址,并且我正在尝试在安装了 Ubuntu 的家用笔记本电脑上设置小型实验服务器。
我已经设置 Ubuntu 来使用内部静态 IP 地址192.168.1.11
。
我已从路由器转发端口号,以将端口上的所有请求重定向80
到192.168.1.11
。
下面是我的路由器(D-Link DSL-2750U) 配置:
117.218.XXX.XXX
我已经在 Ubuntu 机器的 K 端口上启动了小型 Java 网络服务器。但我无法使用我的 ISP 提供的静态 IP 从外部网络访问网络服务器192.168.1.11
。我遗漏了什么吗?
更新:根据 Giacomo1968 的建议,我已将路由器的远程 IP 地址更新为公共 IP 地址117.218.XXX.XXX
。
完成上述配置后,我实际上可以通过浏览器访问我的服务器。但浏览器打开的是路由器配置页面,而不是将请求重定向到 Ubuntu 框。所以现在我更改了 D link 路由器的用户访问控制的默认端口。
现在请求超时了。以下是 curl 的输出
curl http://117.218.XXX.XXX
curl: (7) couldn't connect to host
因此我尝试使用禁用 Ubuntu 上的防火墙,"sudo ufw disable"
但问题仍然存在。
我不确定 Dlink 上是否需要进行配置更改,下面是 Dlink 防火墙的配置页面
有人可以帮我吗?
答案1
根据您显示的屏幕截图,您在 WAN 连接上奇怪地设置了端口转发,如下所示:
- 外部端口开始/结束:80/80
- 协议:TCP
- 内部端口开始/结束:80/80
- 服务器的IP地址:192.168.1.11
- 日程安排规则:总是
- 远程 IP:192.168.1.11
您设置的方式基本上告诉路由器将所有流量从192.168.1.11
一个端口路由80
到192.168.1.11
另一个端口80
,这毫无意义。“远程 IP:”应设置为您的外部 IP 地址,117.218.XXX.XXX
如下所示:
- 远程 IP:
117.218.XXX.XXX
这样就告诉路由器将所有流量从117.218.XXX.XXX
端口路由80
到192.168.1.11
端口80
。
也就是说,如果路由器本身使用端口80
作为 D-Link 管理页面,那么您需要查看是否可以更改管理页面使用的端口。否则,您使用该规则集所做的一切就是将您的 D-Link 管理页面暴露给可以访问该页面的任何人/任何事物117.218.XXX.XXX
。至于如何做到这一点?每个路由器都有不同的处理方式,有些路由器根本不向最终用户提供该选项,因为 ISP 通常不希望最终用户轻松地从其 ISP 提供的 Internet 连接上运行 Web 服务器。
如果您无法将 D-Link 管理页面端口更改为端口以外的其他端口,80
那么下一个最好的办法就是将您的 Web 服务器端口更改为其他端口,例如8000
或8080
。当然,您现在需要调整端口转发规则以匹配新端口,但这可能是此问题的最佳/最简单的解决方案。
答案2
192.168.1.11
是您的局域网(LAN)私有静态 IP 地址,而不是您的公共(外部)IP 地址。
你可以通过执行以下命令找到你的公共 IP 地址这个谷歌搜索。
更新,每评论:
无法通过外部 IP 地址进行连接有多种可能的解释:
- Ubuntu 服务器上的防火墙
- D-Link路由器上的防火墙
- ISP 已阻止出站端口 80
- D-Link 路由器的端口转发配置未正确设置
可能的解决方案
1. Ubuntu 服务器上的防火墙
关闭内置的 Ubuntu 防火墙ufw
:
sudo ufw disable
如果ufw
问题似乎不是由此引起的,则可能是 netfilter 规则阻止了您的出站连接成功。可以使用以下命令找到出站规则:
iptables -nvL OUTPUT
2. D-Link 路由器上的防火墙
您需要查阅路由器文档来了解其工作原理。
3. ISP 已阻止出站端口 80
请联系您的互联网服务提供商,查看是否发生这种情况。
4. D-Link 路由器的端口转发配置未正确设置
与您的路由器相匹配的指南可以帮助您配置端口转发:http://portforward.com/english/routers/port_forwarding/Dlink/DSL-2750U/Apache.htm