我目前正在使用带有 DD-WRT 固件的 Netgear 路由器。
我有一台安装了摄像头应用程序的笔记本电脑。该应用程序使用公共地址和端口来操作摄像头。当我在工作时,该应用程序运行良好,但在家里却不行。在家里,我必须通过将 IP 地址更改为私有来更改配置。然而,在工作时,我必须将 IP 地址更改为公共。我一遍又一遍地这样做。
案例如下:
+-----------------+ +------------------+
| Camera 01 | | Camera 02 |
| 192.168.1.10:80 | | 192.168.1.11:80 |
| from port: 8081 | | from port: 8082 |
+-----------------+ +------------------+
\ /
\ /
+-------------+ +------------------+-----------------+
| ISP |---/---| Router (WAN port)| Router(local IP)|
| 128.x.x.107 | | 192.168.10.1 | 192.168.1.1 |
+-------------+ +------------------+-----------------+
我可以从外部(例如在工作时)使用公共 IP 地址访问我计算机上的摄像头,例如输入 128.xx107:8081。
我还可以通过输入 192.168.1.10 从 LAN 访问摄像机。
不幸的是,我无法使用公共 IP 地址 128.xx107:8081 从 LAN 访问摄像机。有人知道该怎么做吗?
我已经阅读了很多有关 NAT 环回/反射/发夹结构的文章,但我对它的理解还不够深入,不足以解决我的问题。
使用以下规则,我能够通过 LAN 中的公共 IP 地址连接到我的路由器。
iptables -t nat -I PREROUTING -d 128.x.x.107 -j DNAT --to 192.168.1.1
iptables -t nat -I POSTROUTING -s 192.168.1.1 -j SNAT --to 128.x.x.107
...但是,如果在上面的规则中,我使用摄像头地址(192.168.1.10)而不是路由器地址(192.168.1.1),那么它将不起作用。
你能帮我吗?
答案1
需要 Nat 发夹。
https://wiki.mikrotik.com/wiki/Hairpin_NAT
基本上创建一个规则,任何通过 wan ip 进入你服务器的 lan ip 都会被重写为 lan ip <==> lan ip。
我自己需要在路由器上使用它来做各种事情(邮件、网络、ssh)