我目前在端口80下运行NAS盒。为了从外部访问NAS,我将NAS上的端口8080映射到端口80,如下所示:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.32.25.2:80
这就像一种魅力。然而,这是唯一的工作,只有当我访问网站从外部的网络(在工作,在不同的房子,等等)。因此,当我输入mywebsite.com:8080时,IPTables正确地完成了工作,一切正常。
现在,我遇到的问题是,如何从网络内部重定向这个端口?我的域名mywebsite.com从内部指向我的路由器(我的linux服务器) (10.32.25.1),但我想从内部将端口8080重定向到10.32.25.2上的端口80。
有线索吗?
为了帮助解决这个问题,我把这个图表放在一起。请随时更新,如果它是不正确的或错误的陈述,您正在寻找的。
iptables
| .---------------.
.-,( ),-. v port 80 |
.-( )-. port 8080________ | |
( internet )------------>[_...__...°]------------->| NAS |
'-( ).-' 10.32.25.2 ^ 10.32.25.1 | |
'-.( ).-' | | |
| '---------------'
|
|
__ _
[__]|=|
/::/|_|发布于 2013-05-19 02:13:42
我终于找到了办法。首先,我必须将-i eth1添加到我的“外部”规则(eth1是我的广域网连接)。我还需要添加另外两条规则。最后,我带来的是:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 8080 -j DNAT --to 10.32.25.2:80
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 10.32.25.2:80
iptables -t nat -A POSTROUTING -p tcp -d 10.32.25.2 --dport 80 -j MASQUERADE发布于 2015-05-20 16:03:05
您还忘记提到包转发应该能够执行目的地NAT。默认情况下,它通常是关闭的,因此iptables规则将无法工作。可以通过发出以下命令启用它:
echo 1 > /proc/sys/net/ipv4/ip_forward发布于 2019-11-22 08:43:12
首先,您需要验证是否激活了转发:
cat /proc/sys/net/ipv4/ip_forward
如果不是1,运行echo 1 > /proc/sys/net/ipv4/ip_forward。
如果您希望将端口80和443上10.32.25.1的流量转发给10.32.25.2's 80端口,那么您应该使用以下规则:
iptables -t nat -A PREROUTING -d 10.32.25.1 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 10.32.25.2:80https://unix.stackexchange.com/questions/76300
复制相似问题