首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iptables端口重定向不起作用

iptables端口重定向不起作用
EN

Unix & Linux用户
提问于 2019-09-16 11:51:30
回答 1查看 1.9K关注 0票数 1

我正在尝试设置一个运行在本地主机上的and服务器:8082并将端口80重定向到它。

我使用预路由重定向nat表完成了它,但它似乎不工作,数据包到达规则,但似乎没有被转发。

下面是我的iptable的样子:

代码语言:javascript
复制
ubuntu@ip-172-31-31-104:~$ sudo iptables -t nat -L -v -n
Chain PREROUTING (policy ACCEPT 6 packets, 348 bytes)
 pkts bytes target     prot opt in     out     source               destination
    6   320 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 8082    
    2    84 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 redir ports 8082   
    0     0 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:38204 redir ports 38204

Chain INPUT (policy ACCEPT 14 packets, 752 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 381 packets, 27905 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 381 packets, 27905 bytes)
 pkts bytes target     prot opt in     out     source               destination

当我对本地主机做卷曲时,我的服务器日志如下所示:8082:

代码语言:javascript
复制
2019/09/16 11:47:36 "GET http://localhost:8082/ping HTTP/1.1" from 127.0.0.1:40386 - 200 87B in 83.384µs

但是,当我尝试从外部执行请求时,ei使用postman,下面是ip表的样子:

代码语言:javascript
复制
ubuntu@ip-172-31-31-104:~$ sudo iptables -t nat -L -v -n
Chain PREROUTING (policy ACCEPT 6 packets, 348 bytes)
 pkts bytes target     prot opt in     out     source               destination
   11   580 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 8082    
    2    84 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443 redir ports 8082   
    0     0 REDIRECT   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:38204 redir ports 38204

Chain INPUT (policy ACCEPT 19 packets, 1012 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 395 packets, 28995 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 395 packets, 28995 bytes)
 pkts bytes target     prot opt in     out     source               destination

注意,pkt和字节列确实发生了变化,因此看起来包确实到达mahcine,但是服务器日志中没有新的日志。

还有其他的防火墙或抽象级别需要我担心吗?

谢谢你的帮助!

更新这里是netstat,我的服务器名为离心机,所以它会监听端口8082

代码语言:javascript
复制
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:8082          0.0.0.0:*               LISTEN      4163/centrifuge
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:52698         0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:38204           0.0.0.0:*               LISTEN      4163/centrifuge
tcp6       0      0 :::22                   :::*                    LISTEN      -
tcp6       0      0 :::8088                 :::*                    LISTEN      26143/pm2-gui slave
tcp6       0      0 ::1:52698               :::*                    LISTEN      -
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-09-16 13:05:03

正如@ the 9011和@ your 4556274试图描述的那样,您需要让服务器侦听“任意地址”,而不是"127.0.0.1“地址。因此,根据您的webserver软件,您可以将所谓的“侦听地址”更改为:

  • 将127.0.0.1替换为空,即删除配置
  • 将127.0.0.1替换为0.0.0.0,这意味着听任何IP
  • 添加0.0.0.0配置以覆盖默认的127.0.0.1
  • 关于这些内容,请查看文档中的“侦听”或“绑定”地址,以及如何使其不只听本地地址。

如果你告诉我们更多关于你有什么we服务器软件,我们也许可以帮助更多关于上述程序的细节。

然而,如果成功的话,当前netstat输出中的这一行:

代码语言:javascript
复制
tcp        0      0 127.0.0.1:8082          0.0.0.0:*               LISTEN      4163/centrifuge

当您成功地更新了配置时,应该是这样的:

代码语言:javascript
复制
tcp        0      0 0.0.0.0:8082            0.0.0.0:*               LISTEN      4163/centrifuge

@i.e.4556274引用的文档意味着,如果一个新连接的接口具有本地IP地址123.456.78.9,则重定向目标将将目标端口更改为8082,目标主机将更改为123.456.78.9 (即不是127.0.0.1)。因为您的配置只侦听127.0.0.1,所以它将不会看到带有任何其他目标地址的数据包。地址0.0.0.0是特殊的,意味着它将监听所有地址。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/542014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档