DD-WRT:如何允许端口转发应用于源自LAN内部的请求?


26

使用路由器的原始固件,我将端口转发定义为从端口80到LAN中的服务器,该端口转发与外部动态DNS服务结合使用。

我现在已经升级到DD-WRT,并且端口转发仅适用于从外部到外部IP的请求的网络。从LAN内部,我只能通过其内部IP访问服务器。

如何才能从LAN 内部正确访问外部IP(从而将域名连接到动态外部IP)?

我更喜欢找出如何使用标准DD-WRT定义来实现它,但是使用iptables并不是没有问题。

Answers:


25

似乎这是最近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更改子网)

http://hax.at/text/41


那不是很明显!像魅力一样工作:)
周杰伦

我将此设置为启动命令并重新启动了路由器,但没有任何变化-仍然无法正常工作。
Timwi'3

为我工作。非常感谢你。现在,我可以在DD-WRT路由器上从内部网络访问ddns分配的IP。
nusi 2012年

3
这对我有用,但前提是我将其保存为防火墙脚本而不是启动脚本。
贾里特·米拉德

@Timwi-正如Jarett所说,我也必须将其放在“防火墙”部分,而不是“启动”部分。
dan_linder 2014年

4

秉承UrEl的精神:iptablesDD-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所指出的,它必须用作防火墙脚本而不是启动脚本。


该解决方案对我来说比UrEI更好,因为后者使我的SIP电话无法连接。
jamix 2014年

此规则与@UrlEl的规则有什么区别(除了动态获取wan接口和ip地址外)?
Piotr Dobrogost

1

尝试在“安全性”->“防火墙”选项卡中禁用“过滤WAN NAT重定向”。从帮助说明中:

过滤WAN NAT重定向防止LAN上的主机使用路由器的WAN地址与LAN上的服务器(已使用端口重定向配置)联系。


它已被禁用(默认情况下)。还有其他想法吗?
UrEl 2011年

太奇怪了-在我的LAN上,正是这种设置与众不同。您正在使用哪个版本?也许您应该仔细检查端口转发-可能您错过了某些错误(也许IP在您的内部和外部访问之间发生了变化,从而中断了端口转发?)
Tobias Plutat 2011年

我使用的是16994。与此同时,我发现了这一点:hax.at/text/41
UrEl

噢,我多么喜欢越野车DD-WRT版本!(与以前花了一段时间的客户建立连接...直到我发现静态租约中的主机名只应包含字母字符
。Arrgh

1

听起来您的真正问题是您需要DNS A记录的两个视图。在外部,动态dns指向网络公共IP,该IP将端口80转发到本地主机。您需要做的就是在dnsmasq中添加一个带有A记录的条目,该记录将相同的完全限定域名指向本地主机的本地主机ip。您可以通过在“服务”页面/其他dnsmasq选项上添加以下内容来做到这一点:

 address=/www.mydomain.com./xx.xx.xx.xx

只需将xx替换为本地IP,并将域名替换为您的域名。不要忘记尾随点,否则它将在您的本地域名之后附加。


这就是我所做的,并且有效!但是是否可以对某些端口执行此操作?仅当您将端口转发到单台计算机时,这才起作用。如果您要将端口转发到多台计算机,它将无法正常工作……
rinogo 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.