使用路由器的原始固件,我将端口转发从端口 80 定义为 LAN 中的服务器,并将其与外部动态 DNS 服务结合使用。
我现在已经升级到 DD-WRT,但端口转发只适用于来自外部LAN。从 LAN 内部,我只能通过其内部 IP 访问服务器。
我怎样才能让外部 IP(以及连接到动态外部 IP 的域名)也能从里面局域网?
我更愿意了解如何使用标准 DD-WRT 定义来实现它,但使用例如 iptables 也不是不可能的。
答案1
这似乎是最近 DD-WRT 版本中的一个错误。
使用 iptables:
iptables -t nat -I POSTROUTING -o br0 -s 192.168.1.0/24 -d 192.168.1.0/24 -j MASQUERADE
(根据您的具体 LAN 更改子网)
答案2
本着 UrEl 回答的精神:可以在以下位置找到一个自配置iptables
脚本,只需复制粘贴即可,无需进一步修改DD-WRT 论坛:
insmod ipt_mark
insmod xt_mark
iptables -t mangle -A PREROUTING -i ! `get_wanface` -d `nvram get wan_ipaddr` -j MARK --set-mark 0xd001
iptables -t mangle -A PREROUTING -j CONNMARK --save-mark
iptables -t nat -A POSTROUTING -m mark --mark 0xd001 -j MASQUERADE
正如 Jarett 所指出的,这必须用作防火墙脚本而不是作为启动脚本。
答案3
尝试在“安全”->“防火墙”选项卡中禁用“过滤 WAN NAT 重定向”。来自帮助描述:
过滤 WAN NAT 重定向 防止 LAN 上的主机使用路由器的 WAN 地址联系 LAN 上的服务器(已使用端口重定向进行配置)。
答案4
听起来你真正的问题是你需要两个 DNS A 记录视图。从外部看,你的动态 DNS 指向你的网络公共 IP,它将端口 80 转发到本地主机。你需要做的就是在 dnsmasq 中添加一个条目,其中包含一个 A 记录,将相同的完全限定域名指向本地主机的本地主机 ip。你可以在服务页面/其他 dnsmasq 选项中添加以下内容来执行此操作:
address=/www.mydomain.com./xx.xx.xx.xx
只需将 xx 替换为本地 ip,将域名替换为您的域名。不要忘记结尾的点,否则它会将您的本地域名附加到它后面。