请教 firewalld 的端口转发

2017-05-21 12:32:43 +08:00
 kuoruan
Nginx 服务 监听 IP 0.0.0.0 端口 80
开了一个 tun,10.0.0.1/24
HAProxy 监听 10.0.0.2 端口 80,后端 10.0.0.1 端口 80
想实现:外部请求 80 -> 10.0.0.2:80 -> 10.0.0.1:80 (localhost:80)

```
firewall-cmd --zone=public --add-service=http
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=10.0.0.2
```

用 80 端口连接,不通。

但是如果用一个新端口:
```
firewall-cmd --zone=public --add-forward-port=port=81:proto=tcp:toaddr=10.0.0.2:toport=80
```

用 81 连接,通。

请问这个是什么原因造成的?被原端口干扰了吗?请问这个应该怎么处理
3259 次点击
所在节点    Linux
11 条回复
aip
2017-05-21 13:33:58 +08:00
我感觉你的问题没有描述清楚,firewalld、haproxy、nginx 是分别跑在不同服务器上呢还是怎么地。。。
kuoruan
2017-05-21 13:51:13 +08:00
@aip 同一服务器上,通过 tuntap 创建的虚拟网卡
ryd994
2017-05-21 16:37:39 +08:00
sysctl net.ip.forwarding 开了么
ryd994
2017-05-21 16:39:34 +08:00
上面加上 toport 呢?
iptables-save 看看实际规则的是什么
ryd994
2017-05-21 16:41:39 +08:00
add service 可能是问题原因
kuoruan
2017-05-21 18:35:55 +08:00
@ryd994 应该不是这个原因,如果我关掉 80 端口也是不通的
linhua
2017-05-21 19:52:09 +08:00
@kuoruan
是不是因为 没指定 网络接口, 而将 tuntap 对应的网络接口也包含在内了。 从而对 tuntap 对应的网络接口 也应用了 firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=10.0.0.2 这条规则
kuoruan
2017-05-21 20:58:53 +08:00
@linhua 哦!估计是,那么就是说需要指定接口了,我试试
tammy
2017-05-21 21:17:46 +08:00
yum purge firewalld
yum install iptables
然后你就会操作了,你是想用 bbr 加速吗?
kuoruan
2017-05-21 21:31:02 +08:00
@tammy 主要是想学学 firewalld,用 iptables 不是我的本意
snailsir
2017-05-22 13:40:58 +08:00
一个很好的简单教程 http://www.excelib.com/article/287/show/

我是看这个入门的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/362748

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX