dd-wrt ​​- 限制外界对机器的访问

dd-wrt ​​- 限制外界对机器的访问

在 dd-wrt ​​中,我可以使用 IP 白名单将“外部世界”的访问限制到单个机器吗?因此,我想允许单个“外部世界”IP 访问我网络上的单个机器,并且所有其他机器都应接受来自任何外部呼叫者的呼叫。

答案1

dd-wrt ​​允许使用 iptables。您可以在 dd-wrt ​​GUI 中插入防火墙命令:管理->命令->[在文本框中输入命令->保存防火墙。

我从dd-wrt ​​维基

假设我想添加一条规则,以便我可以从外部的特定主机/地址 ssh 进入我的路由器。然后我可能会输入以下内容:

iptables -A INPUT -p tcp -s 150.100.whatever.something --dport 22 -j logaccept

所以我说:在 INPUT 链中附加一条规则,允许协议 tcp 跳转到 logaccept,源地址为我路由器上的 22 端口的流量。我可以使用 -j ACCEPT,它只会跳转到 ACCEPT,但在这种情况下,我想记录它只是为了跟踪,所以我使用 logaccept,这是我们为此目的设置的链。

注意:只需向 INPUT 链添加一条规则就足以允许从 WAN 进行远程 SSH 访问。但是,如果您的路由器仍处于 NAT/网关模式,并且您希望将 SSH 端口重新映射到 WAN 端不太传统的端口(例如端口 2222),您可以改为插入 PREROUTING 规则。这实际上是启用远程 WAN SSH 管理时 GUI 执行的操作。

iptables -A INPUT -p tcp -m tcp -d `nvram get lan_ipaddr` --dport 22 -j logaccept  
iptables -t nat -A PREROUTING -p tcp -m tcp -d `nvram get wan_ipaddr` --dport 2222 -j DNAT --to-destination `nvram get lan_ipaddr`:22

答案2

iptables 规则是按链读取的,因此首先满足的规则将被使用。在我的示例中,规则被附加到链的底部(通过 -A 选项)。如果您说您已经转发了端口 22,我假设您是通过 GUI 进行的,这没问题,GUI 所做的只是将其转换为 iptables 规则,您可以使用以下命令查看该规则

iptables -vnL

它显示了现有的 IP 表规则的完整列表。

关于您的第二条评论:iptables 仅适用于您的流量在路由器的 WAN 和 LAN 部分之间交叉的情况,这意味着如果您的地址在私有范围内(192.168.xx),那么将其传送到 LAN 上的正确主机仅使用 LAN 接口即可,而来自 LAN 的数据包上的公共地址将自动转储到 WAN 进行传送。

您可以运行一个有趣的实验来测试此行为,即尝试使用内部地址(如 192.168.xx:22)连接到内部主机,然后在 dd-wrt ​​GUI 中关闭该端口的端口转发,尝试在同一端口上连接到外部 IP 地址(在 dd-wrt ​​GUI 中查找),如 76.54.999.257:22(当然,除非使用真实地址)。禁用端口转发后,您实际上会看到内部连接有效,而外部连接无效。

您可以使用 VLAN 等来调整 dd-wrt ​​认为的 WAN 侧端口和 LAN 侧端口的行为,以便以奇怪的方式对物理端口进行实际逻辑分组,但这超出了问题的范围。

相关内容