我在我的路由器上运行DD-WRT固件,版本DD-WRT v24-sp2(12/12/11)std 。
我试图将端口80上的http通信端口转发到我的PC的本地IP 192.168.2.97 ,虽然我可以浏览我的局域网上的托pipe站点,但当我尝试从远程IP站点时,我得到“ 连接超时 ”。
有人可以看看在这里链接的iptables转储,并帮助我find适当的iptables语法来使用端口转发正常工作? 我对iptables非常陌生,并且对如何制定必要的语法感到迷茫。
编辑 netstat -ano | find "80"输出 从Web服务器(运行IIS的Windows 7)中netstat -ano | find "80" :
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4 TCP 192.168.2.97:1869 207.46.124.39:80 ESTABLISHED 3860 TCP 192.168.2.97:43794 74.125.229.36:80 TIME_WAIT 0 TCP [::]:80 [::]:0 LISTENING 4 UDP 127.0.0.1:48000 *:* 3132 UDP 127.0.0.1:48001 *:* 2420
从DD-WRT命令提示符编辑 iptables -t nat -L输出:
Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT icmp -- anywhere my.wan.ip to:192.168.2.1 DNAT tcp -- anywhere my.wan.ip tcp dpt:www to:192.168.2.97:80 DNAT tcp -- anywhere my.wan.ip tcp dpt:www to:192.168.2.97 TRIGGER 0 -- anywhere my.wan.ip TRIGGER type:dnat match:0 relate:0 Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination SNAT 0 -- 192.168.2.0/24 anywhere to:my.wan.ip RETURN 0 -- anywhere anywhere PKTTYPE = broadcast
从DD-WRT接口编辑 iptables -t nat -vnL输出:
Chain PREROUTING (policy ACCEPT 165K packets, 18M bytes) pkts bytes target prot opt in out source destination 38 47952 DNAT icmp -- * * 0.0.0.0/0 my.wan.ip to:192.168.2.1 0 0 DNAT tcp -- * * 0.0.0.0/0 my.wan.ip tcp dpt:80 to:192.168.2.97:80 0 0 DNAT tcp -- * * 0.0.0.0/0 my.wan.ip tcp dpt:80 to:192.168.2.97 47056 6024K TRIGGER 0 -- * * 0.0.0.0/0 my.wan.ip TRIGGER type:dnat match:0 relate:0 Chain OUTPUT (policy ACCEPT 4753 packets, 418K bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 4753 packets, 418K bytes) pkts bytes target prot opt in out source destination 87913 10M SNAT 0 -- * vlan2 192.168.2.0/24 0.0.0.0/0 to:my.wan.ip 0 0 RETURN 0 -- * br0 0.0.0.0/0 0.0.0.0/0 PKTTYPE = broadcast
从DD-WRT 编辑 route输出命令提示符:
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 74.178.55.1 * 255.255.255.255 UH 0 0 0 vlan2 192.168.2.0 * 255.255.255.0 U 0 0 0 br0 74.178.55.0 * 255.255.255.0 U 0 0 0 vlan2 169.254.0.0 * 255.255.0.0 U 0 0 0 br0 239.0.0.0 * 255.0.0.0 U 0 0 0 br0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default adsl-74-178-55- 0.0.0.0 UG 0 0 0 vlan2
结论:我已经使用了DD-WRT。
我现在已经砌了几十次,并且没有将我的布法罗WZR-HP-G300NH2打坏 。 下面试了很多build议。 发表在DD-WRT论坛上,遇到了大部分死气。 看着其他的固件,如OpenWRT,Gargoyle,HyperWRT,番茄。 其中,Gargoyle的OpenWRT看起来很有前途,但Gargoyle特别不支持我的路由器(支持WZR-HP-G300NH,但不支持WZR-HP-G300NH 2 )。
我到目前为止所走的最远的路线是安装了OpenWRT和Luci(一个networkingpipe理附加组件),在涉及数以百计的论坛post之后,试图find解决scheme或解决方法来解决大量的构build和configuration以及其他错误简单,无用的post回应类似于我一路上的问题,就像“只是重新编译一些图书馆或选项或configuration,这对开发人员来说似乎是完全传统的,而不是一个新手}”或者“只是尝试”我可能已经尝试了,我可以在睡眠中做,但不特别在意详细说明}“。
显然我做了错误的事情,因为跟着这个,试图通过Luci应用一些configuration更改,路由器重新启动后再次变砖。 如果我觉得这样,我会再试一次来重新刷新它,看看我需要做些什么来避免这种情况,并希望最终可以使用一个function路由器或至less一个我可以使用的开关。
在此期间,我已经提前购买了另一台路由器,我希望出厂固件能够完成看似简单的端口转发任务。 感谢kce和所有那些刺伤了这个的人。
…版本DD-WRT v24-sp2(12/12/11)std。
您没有提供作为重要信息的版本号。 目前唯一推荐的修订版本是13064或14869. dd-wrt固件的大多数版本被认为是不稳定的并且被破坏。
这是来自论坛主题的相关信息。
升级(或降级)到本节列出的论坛推荐版本之一,尤其是在运行SP1或v24 final(05/21/08)13064或14896时。坚持使用本主题中的build议或redhawk0的公告你想稳定。 在撰写本文时,最新的官方版本是v.24 SP1。 SP1有很多问题。 它会自发地砖华硕WL500W路由器。
所有这些论坛推荐的版本都是testing版,还没有“完成”。 虽然您使用它们需要您自担风险,但论坛推荐的版本已经过相当彻底的testing,并且运行良好,当然比SP1更好。 浏览论坛,看看别人在说什么。
最新的版本,比如16xxx或17xxx版本,比推荐版本新推出的版本只有TESTING版本。 他们不是新的,“改善”,因为他们显然更好,所以没有被释放。 他们有巨大的问题。 如果他们不这样做,他们会在论坛上被推荐。 所以要意识到,如果你正在安装一个不同于这里推荐的版本,你正在testing一个版本,你可能会发现它不工作。 每个构build版本在构build发布时创build的论坛中都有一个“构build线程”。 报告该线程中的问题,但不要求在构build线程中使用路由器的帮助。 如果你想要一个稳定的build筑物,请使用本注释中推荐的build筑物之一或REDHAWK0build议的build造线程! 这个规则的唯一例外是,如果你使用的是一个非常新的路由器,并且这个路由器需要初始刷新比15962更新的版本,在这种情况下,大多数应该使用17990或18000(基本上是相同的)。
TL; DR: The newest builds, such as the 16xxx or 17xxx builds, that are newer than the recommended builds have been released for TESTING only... OFTEN they have massive problems.
编辑:你说你通过连接远程IP地址来testing转发。 可以肯定的是,您并不是试图从局域网连接WAN接口的IP地址,对吗? NAT环回被打破了修订和任何东西过15760。
我强烈build议您将您的固件降级到我所链接的每个线程的推荐版本之一,除非您有一个非常有说服力的理由不这样做。
编辑2:嗯。 我看到你的降级不起作用。 很抱歉听到这个消息。 不幸的是,这可能是DD-WRT固件的一个问题,其中的问题是关于主题的。 我的推理结论是你的iptables看起来很好,端口转发和你的Linksys路由器一起工作正常)。
我现在的build议是:1)在DD-WRT论坛上发帖(先阅读所有常见问题解答); 2)提交错误报告; 3)购买真正的路由器。 我没有任何东西,但DD-WRT的问题,永远不会推荐任何人。 此外,我发现COTS“路由器”也同样不可靠。
你的规则看起来不错, 所以其他的可能性是你的ISP或中间的人阻止dport 80 …简单的方法来testing:
添加DNAT规则,将其他端口的请求转发到您的内部服务器 – 即:
iptables -t nat -I PREROUTING -p tcp –dport 32100 -d <wanIP> -j DNAT – 到192.168.2.97:80
然后popup打开浏览器并访问http:// <wanIP>:32100
如果它仍然失败,那么它很可能与pMTUd问题有关。
将下面的四个命令(2个insmod和2个iptables)添加到路由器的启动命令窗口(路由器的菜单path:pipe理 – >诊断)。 将它们粘贴到路由器的shell命令窗口中,然后单击SAVE STARTUPbutton将它们传送到路由器的启动命令窗口中:
insmod ipt_mark
insmod xt_mark
iptables -t mangle -A PREROUTING -i! `get_wanface` -d`nvram得到wan_ipaddr` -j MARK – 设置标记0xd001
iptables -t nat -A POSTROUTING -m标记 – 标记0xd001 -j MASQUERADE
最好的方法是将这四个命令直接复制并粘贴到您的路由器上,每条命令一行。 这样做可以保证你不会犯错,因为我敢打赌,你已经厌倦了这个问题!
将它们保存到路由器的启动命令列表中后,重新启动路由器并从WAN端testing端口转发。
这应该做的伎俩。
请在这里回复,如果这已经为你工作的方式为我工作!
问候,利诺
您需要允许连接2个位置,NAT和防火墙。
您的iptables列表仅适用于默认的filter表(与iptables -t filter -L相同),这是用于传统的简单路由,并不足以满足您的需求 – 您使用networking地址转换(NAT)。
在这种情况下,相关的设置是在nat表(通过SSH连接到你的路由器,并发出iptables -t nat -L ); 它应该包含这样的东西:
Chain PREROUTING (policy ...) target prot opt source destination DNAT tcp -- anywhere your_internet_ip_address tcp dpt:80 to:192.168.2.97:80
当然,从外部你需要连接到http:// your_internet_ip_address ,而不是http://192.168.2.97 ,请原谅我明显。
不知道如何通过DD-WRT v24 GUI实现它。 在v23上,我通过Applications&Gaming -> Port Forwarding和DNAT很好地工作。
更新1 :所以,你有一个适当的DNAT规则。
还有一件事我注意到了。 你有一个TRIGGER规则的端口80.手动说
通过设置端口触发规则,您可以允许入站stream量到达特定的LAN主机[…]如果PC从这些端口发送出站stream量,则转发范围内的入站stream量将被转发到该PC。
这和正常的端口转发(DNAT)是完全不同的,很可能与它冲突。 触发通常用于连接(通常是多人游戏)的应用程序,我不明白为什么有人会希望它的端口80。
你的规则没问题 您将端口80configuration为远程访问的默认端口。 改变这一点,你应该没问题。
端口80将进入您的dd-wrtconfiguration页面。 您只需要将dd-wrtconfiguration页更改为另一个端口即可。 然后将端口80转发到所需的IP。