我有一台华硕无线路由器,上面刷了 MERLIN。我还有几个通过 Wifi 连接的 IP 摄像头。我想通过禁用出站来阻止 IP 摄像头尝试呼叫家里。我这样做了
然而,有几件事我还是想做。
- 默认情况下防止 IP 摄像机将任何数据发送到我的网络之外。
- 例外:IP 摄像机需要连接并发送到端口 465(SMTPS 端口)才能发送电子邮件。
- 例外:我希望一些 IP 地址(一些是 IP 范围)能够通过 PORT 远程访问摄像头。因此我需要一个规则作为默认规则的例外。
我已经设置了端口转发。
例如:192.168.1.2:123(123 是我用来通过浏览器访问摄像头的端口)是我通过浏览器在线连接摄像头的方式。我还希望它不仅可在本地访问,而且可在家庭网络之外访问,但需要几个 IP。如果您不是 IP 地址,那么您将被丢弃,如果您是,您将被接受。就像一个保镖。所以本质上,我的工作电脑可以通过端口 123 访问该摄像头,这就是我想要做的。
我了解 Linux,也知道 IPTABLES 的一些标志,但这还不够,所以我需要一位专家。
谢谢!
答案1
如果您的相机位于标准子网上,这项工作将更容易。然后您可以在下面提到的每条规则中提及子网。否则,您最好看看这个帖子或类似的东西。
处理完如何指定摄像头的 IP 范围后,您可以使用 --syn 选项轻松丢弃摄像头发起的所有数据包(假设它们是 TCP 连接)。这是一个假设所有摄像头(<=8 个摄像头且无其他系统)位于 192.168.1.0/29 子网的示例
#1 iptables -A FORWARD -s 192.168.1.0/29 -p tcp --dport 465 -j ACCEPT
#2 iptables -A FORWARD -d 192.168.1.0/29 -p tcp --sport 465 -j ACCEPT
#3 iptables -A FORWARD -s 192.168.1.0/29 -p tcp --syn -j DROP
#4 iptables -A FORWARD -s 192.168.1.0/29 -p udp -j DROP
仅当 Linux 机器上没有完成 NAT 时才添加 #2。
要发布摄像头:
iptables -t nat -A PREROUTING -p tcp --dport 1202 -j DNAT 192.168.1.2:123
iptables -t nat -A PREROUTING -p tcp --dport 1203 -j DNAT 192.168.1.3:123
iptables -t nat -A PREROUTING -p tcp --dport 1204 -j DNAT 192.168.1.4:123
但只允许那些特定的 IP 地址访问它们:
iptables -A FORWARD -s trustedip1 -d 192.168.1.0/29 -p tcp --dport 123 -j ACCEPT
iptables -A FORWARD -s trustedip2 -d 192.168.1.0/29 -p tcp --dport 123 -j ACCEPT
iptables -A FORWARD -s trustedip3 -d 192.168.1.0/29 -p tcp --dport 123 -j ACCEPT
iptables -A FORWARD -d 192.168.1.0/29 -p tcp --dport 123 -j DROP
当然,如果摄像机地址不在一个子网中,您必须将 192.168.1.0/29 与摄像机 IP 地址交换,并对每个地址重复该规则。