我正在尝试设置一个运行在本地主机上的and服务器:8082并将端口80重定向到它。
我使用预路由重定向nat表完成了它,但它似乎不工作,数据包到达规则,但似乎没有被转发。
下面是我的iptable的样子:
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:
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表的样子:
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
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 -发布于 2019-09-16 13:05:03
正如@ the 9011和@ your 4556274试图描述的那样,您需要让服务器侦听“任意地址”,而不是"127.0.0.1“地址。因此,根据您的webserver软件,您可以将所谓的“侦听地址”更改为:
如果你告诉我们更多关于你有什么we服务器软件,我们也许可以帮助更多关于上述程序的细节。
然而,如果成功的话,当前netstat输出中的这一行:
tcp 0 0 127.0.0.1:8082 0.0.0.0:* LISTEN 4163/centrifuge当您成功地更新了配置时,应该是这样的:
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是特殊的,意味着它将监听所有地址。
https://unix.stackexchange.com/questions/542014
复制相似问题