首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用iptables的端口转发不适用于直接从控制台发送的命令

使用iptables的端口转发不适用于直接从控制台发送的命令
EN

Server Fault用户
提问于 2012-02-20 16:02:39
回答 1查看 491关注 0票数 2

我设置了以下ip表规则:

代码语言:javascript
复制
sudo iptables -t nat -I PREROUTING --dst 192.168.0.116  -p tcp --dport 80 -j REDIRECT --to-ports 8000


sudo iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
REDIRECT   tcp  --  anywhere             static.snake2.test tcp dpt:www redir   ports 8000

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

链式输出(策略接受)目标选择源目的地

这将将给定ip上80端口上的任何通信量转发到同一ip上的端口8000。通过浏览器工作得很好。

不起作用的是,如果我试图直接从控制台运行一些测试:

林克斯-head -dump http://192.168.0.116

或者我打算做什么

代码语言:javascript
复制
ab -n 1000 -c20 192.168.0.116

在这种情况下,转发规则根本不起作用。返回的头仍然来自端口80 (apache),而不像nginx (8000)所期望的那样。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2012-02-20 17:01:35

我确信,您之所以看到这一点,是因为PREROUTING链不适用于通过回送接口的数据包。当您说它在浏览器中工作时,我假设您的意思是从另一台机器,在这种情况下,您的规则将适用。您还需要向输出链中添加一个规则,以使其在本地主机流量上工作。就像这样:

代码语言:javascript
复制
iptables -t nat -I OUTPUT --source 0/0 --destination 0/0 -p tcp --dport 80 -j REDIRECT --to-ports 8000
票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/361877

复制
相关文章

相似问题

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