IPTables - 到另一个 ip 和端口的端口(从内部)

Dav*_*ger 10 linux firewall debian iptables

我目前有一个运行在 80 端口下的 NAS 盒。为了从外部访问 NAS,我将端口 8080 映射到 NAS 上的端口 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从内部 (10.32.25.1) 指向我的路由器(我的 linux 服务器),但我想从内部将端口 8080 重定向到 10.32.25.2 上的端口 80。

有什么线索吗?

编辑 #1

为了帮助解决这个问题,我把这张图放在一起。如果它不正确或歪曲了您要查找的内容,请随时更新。

                                 iptables
                                     |                   .---------------.
    .-,(  ),-.                       v               port 80             |
 .-(          )-.        port 8080________               |               |
(    internet    )------------>[_...__...°]------------->|      NAS      |
 '-(          ).-'     10.32.25.2    ^   10.32.25.1      |               |
     '-.( ).-'                       |                   |               |
                                     |                   '---------------'
                                     |
                                     |
                                   __  _ 
                                  [__]|=|
                                  /::/|_|
Run Code Online (Sandbox Code Playgroud)

Dav*_*ger 13

我终于找到了方法。首先,我必须添加-i eth1到我的“外部”规则(eth1 是我的 WAN 连接)。我还需要添加另外两个规则。最后我带来了什么:

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
Run Code Online (Sandbox Code Playgroud)

  • 第二条规则不是必需的,因为第一条规则已经包含... (2认同)