在本地网络内转发到同一网络

时间:2012-06-26 21:56:09

标签: networking routing iptables openwrt

我的路由器上有基于OpenWrt 8.09的X-Wrt

我有几台计算机的家庭局域网,我有一些网络服务器(SVN,网络等)。对于我在路由器(Linksys wrt54gl)上进行转发的每项服务,都可以从互联网上访问它(<my_external_ip>:<external_port> -> <some_internal_ip>:<internal_port>

但是在我的本地网络中,上述请求的资源无法访问(因此我需要进行一些重新配置<some_internal_ip>:<internal_port>才能访问)。

我在/ etc / hosts中加了一行 <my_external_ip> localhost

所以现在从本地网络到<my_external_ip>的所有请求都转发到我的路由器,但进一步重定向到适当的端口不起作用。

请建议正确的重定向。

2 个答案:

答案 0 :(得分:1)

如果我没记错的话,OpenWrt允许您定义自定义DNS条目。因此,可以简单地为您的源(即svnserver.local)提供适当的本地名称,并将它们映射到特定的本地IP。这样,您甚至无需通过路由器从本地网络访问本地资源。

答案 1 :(得分:1)

您需要为来自内部网络并定向到公共IP的呼叫安装IP重定向。通常这些数据包会被丢弃。您想要重新路由它们,DNATting到目标服务器,但也伪装成服务器,看到您,它的客户端,在同一网络中,不会直接响应您的内部IP(您,客户端) ,没有在那里发送数据包,将丢弃)。

我在OpenWRT小组上发现了这个:

iptables -t nat -A prerouting_rule -d YOURPUBLICIP -p tcp --dport PORT -j DNAT --to YOURSERVER
iptables -A forwarding_rule -p tcp --dport PORT -d YOURSERVER -j ACCEPT
iptables -t nat -A postrouting_rule -s YOURNETWORK -p tcp --dport PORT -d YOURSERVER -j MASQUERADE

https://forum.openwrt.org/viewtopic.php?id=4030