这个问题乍一看可能有点奇怪,因为答案可能很简单:“要么为其分配一个静态 IP 地址,要么直接使用 DHCP。”
嗯...这个挑战并不是那么简单:
所讨论的设备是一个“IP 摄像头”,可以通过以太网电缆和 WiFi 访问(至少理论上可以)。
按照说明进行设置后,通过以太网访问摄像头非常简单且没有任何问题:
Device Name: IPCamera
DHCP [No]
IP Address: 192.168.3.27
Net Mask: 255.255.255.0
Default Gateway: 192.168.3.1
DNS Server: 8.8.8.8
Web Port (default 80): 7779
然后我可以通过以下方式访问它: http://192.168.3.27:7779/video/liveie.asp#
通过该 Web 界面,我还可以配置它的 WiFi,这意味着我只能告诉它连接到哪个可用的附近 WiFi 网络,但我无法告诉它被分配了哪个 IP 地址或其他 IP 相关参数。
我知道 WiFi 连接正常,因为当我将其设置为在检测到运动时发送电子邮件时,即使以太网电缆断开连接,它也会通过互联网顺利发送电子邮件。
但是,该设备及其附带的软件都需要不时重新启动、重置和重新识别,并且由于该摄像头的最佳位置不是有 RJ45 插孔的地方,所以我希望能够通过 WiFi 访问该设备的网络界面。
嗯……出于某种奇怪的原因,我无法在任何地方找到作为我的 DD-WRT 路由器的 DHCP 客户端分配给其 WiFi 接口的 IP 地址。因此,我转到我的 DD-WRT 路由器的“服务”>“服务”选项卡,并在“静态租约”部分下添加了相机的 MAC 地址。这实际上强制使用静态 IP 地址 192.168.1.32。
现在我的网络拓扑结构如下:
ISP-----Wired router (192.168.3.1)--+--LAN-----------------------------+-- My PC (192.168.3.7)
| |
| + IP Camera (192.168.3.27)
|
|
|
+-- Wireless router (192.168.1.1)--+-- My PC (192.168.1.29)
|
+ IP Camera (192.168.1.32)
然后我尝试通过相机的 WiFi IP 地址 (192.168.1.32) 访问它,但到目前为止还没有成功。我尝试http://192.168.1.32:7779/video/liveie.asp#
为了进一步诊断为什么我无法通过 WiFi 访问相机(尽管制造商说可以使用 DDNS + 端口转发从互联网访问),我通过 telnet 连接到我的路由器并尝试从那里 ping 它。没有回应。
这很奇怪,因为路由器的网络界面列出的分配的静态 IP 地址没有任何问题。
因此,当我仍通过 telnet 连接到路由器时,我发出了命令netstat -a
,结果如下:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:www 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:domain 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5431 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:telnet 0.0.0.0:* LISTEN
tcp 0 0 192.168.3.30:www 192.168.3.7:33755 TIME_WAIT
tcp 0 0 192.168.3.30:www 192.168.3.7:33753 TIME_WAIT
tcp 0 132 192.168.3.30:telnet 192.168.3.7:33097 ESTABLISHED
tcp 0 0 my-ddwrt:5431 mypc:32847 ESTABLISHED
tcp 0 0 192.168.3.30:www 192.168.3.7:33758 TIME_WAIT
tcp 0 0 192.168.3.30:www 192.168.3.7:33776 TIME_WAIT
tcp 0 0 my-ddwrt:5431 mypc:33000 ESTABLISHED
udp 0 0 localhost:34954 0.0.0.0:*
udp 0 0 0.0.0.0:domain 0.0.0.0:*
udp 0 0 0.0.0.0:bootps 0.0.0.0:*
udp 0 0 0.0.0.0:upnp 0.0.0.0:*
raw 0 0 0.0.0.0:255 0.0.0.0:* 7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 601
有趣的是,netstat 列出的所有 IP 地址都是有线以太网接口的。没有提到任何 WiFi 地址(192.168.1.x),好像 WiFi 接口不存在一样(我知道它存在!请参阅之前关于电子邮件警报等的描述)。
尽管在此 WiFi 路由器上已配置了 vlan0 和 eth1 之间的桥接,但情况仍然如此。
但使用arp -a
,我可以看到两个界面:
android_72c5e473c08d1ab4 (192.168.1.2) at 44:A7:CF:47:C8:37 [ether] on br0
? (192.168.3.7) at 00:0F:B0:C8:91:72 [ether] on vlan1
? (192.168.1.3) at D0:17:6A:5A:B2:8F [ether] on br0
mypc (192.168.1.29) at 00:13:02:20:43:AD [ether] on br0
wiredrouter (192.168.3.1) at 00:1C:10:4F:B3:27 [ether] on vlan1
因此,现在看来,IP 摄像机由路由器分配了一个有效的(静态)IP 地址,但我无法对其进行 ping、SSH、telnet 或 http 操作。
制造商的技术支持人员说,我试图完成的是是支持,但无法提供关于如何做到这一点的明确说明。他最初提出通过 DDNS 进行连接,但此时我只对内部访问感兴趣,因此他能提供的唯一说明是:
In router 192.168.1.1's page, we need do port forwarding with camera's IP and camera's port.
In router 192.168.1.1's page, we need find the router's external IP which should be 192.168.3.x.
In router 192.168.3.1's page, we need do port forwarding with router's 192.168.1.1's external IP 192.168.3.x and camera's port, not use camera's IP.
知道这是什么意思吗?
如何进一步诊断并实现通过WiFi访问Web界面?
更新: 根据下面的评论建议,我iptables -t -nat -n -L
在 my-ddwrt WiFi 路由器中运行,这是输出:
root@my-ddwrt:~# iptables -t nat -n -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT icmp -- 0.0.0.0/0 192.168.3.30 to:192.168.1.1
TRIGGER 0 -- 0.0.0.0/0 192.168.3.30 TRIGGER type:dnat match:0 relate:0
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE 0 -- 0.0.0.0/0 0.0.0.0/0
RETURN 0 -- 0.0.0.0/0 0.0.0.0/0 PKTTYPE = broadcast
MASQUERADE 0 -- 192.168.0.0/16 192.168.0.0/16
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我的 DD-WRT 路由器不支持该tcpdump
命令。
答案1
如前所述,问题似乎出在 NAT 上。如果您希望保留当前设置,则必须按照制造商技术支持的建议设置端口转发。
笔记:我根据您指定的拓扑重新排列了顺序,并进行了一些修改
概括:
1)在“无线路由器”(192.168.1.1)主页中,我们需要找到路由器的“WAN IP”(右上角),它应该是 192.168.3.x 之类的。
2)在“无线路由器”(192.168.1.1)配置页面中,我们需要将传入的请求转发到摄像机的 IP/端口。
3)(对于从互联网访问)在“有线路由器”(192.168.3.1)配置页面中,我们需要将传入请求转发到“无线路由器”(192.168.3.1)WAN IP 192.168.3.x 和我们在步骤 1 中选择的端口。
执行:
假设路由器是 DD-WRT
在“无线路由器”上,转到主页并检查“WAN IP”显示的内容。它应该位于右上角的“固件”和“时间”下方。它应该位于 192.168.3.x 网络中。为此,我根据您的 IPTABLES 输出假设为 192.168.3.30。如果不再是这个地址,请务必更改它。
在“无线路由器”上,转到“NAT/QoS”选项卡 ->“端口转发”子选项卡
应用:网络摄像机
这是您想要的任何名称。仅供您用来识别不同的端口转发。
港口来源:7779
这是传入连接端口。
您可以随意设置。我们将使用该端口从任何未连接到“无线路由器”的设备连接到 IP 摄像头,也就是说,任何连接到“有线路由器”的设备,以及为简单起见从互联网连接的任何设备。协议:两个都
这是将被转发的协议。我不知道你的 IP 摄像头使用的是哪种协议,所以我指定了两者
IP地址:192.168.1.32
这是我们将请求转发到的地址。在本例中,我们希望转发到 IP 摄像头。
港口至:7779
这是我们要转发的端口。对于您的 IP Cam,您说它是 7779,所以我们在这里输入的就是这个。
使能够:已检查
必须检查此项,否则端口转发将被禁用。
(对于从互联网访问)
在“有线路由器”上,转到“NAT/QoS”选项卡 ->“端口转发”子选项卡应用:网络摄像机
港口来源:7779
这是来自互联网的传入连接端口。
这可以是任何你想要的,但为了简单起见,我们将使用与 IP 摄像头相同的端口。协议:两个都
IP地址:192.168.3.30
这是我们将请求转发到的地址。在我们的例子中,我们希望将互联网请求转发到“无线路由器”,以便它可以将请求转发到 IP 摄像头。
港口至:7779
这是我们要转发到的端口。对于之前的端口转发,我们使用了 7779(端口来自),因此我们将其输入到这里。
使能够:已检查
同样,如果您只是禁用“无线路由器”上的 DHCP 并且不使用该路由器上的 WAN 端口而仅使用交换机端口和 WiFi,这会简单得多。
答案2
您的网络拓扑似乎有点太复杂。
如果我是你,我会禁用无线路由器中的 DHCP 服务器,并通过 LAN 端口而不是 WAN 端口将有线路由器连接到它。
这样,无线路由器就只是一个基本的接入点,在无线网络和有线网络之间架起桥梁。然后,您的所有设备都将位于 192.168.1.x 子网中,并且可以避免由无线路由器 NAT 引起的问题。
答案3
从 netstat -a 读取的数据表明您正在从顶部 PC 执行此操作。192.168.1.1 中的 NAT 阻止它启动对底部设备的任何访问。您可以从底部 PC 毫无问题地访问顶部 IP 摄像头。
要使其在顶级 PC 上运行。请将设备的模式从路由器更改为接入点。然后一切都会正常工作。