首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >firewalld端口转发中断了该端口的出站通信

firewalld端口转发中断了该端口的出站通信
EN

Unix & Linux用户
提问于 2021-05-30 00:47:11
回答 1查看 351关注 0票数 0

我正在使用Linux计算机作为更广泛的网络和几个服务器之间的网关/防火墙。

代码语言:javascript
运行
复制
WAN -> [ 192.x | GATEWAY (Linux) | 10.x ]  -> [ 10.0.0.100 | SERVER (Linux) ]

这种配置作为网关运行得很好。下游节点可以很好地访问Internet,并且我可以将80的请求在8000的网关上通过firewall-cmd移植到服务器上。

代码语言:javascript
运行
复制
firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.0.0.100:toport=8000

<#>但是,一旦我运行该命令并启动端口转发,服务器(10.0.0.100)就不能再回到端口80上的WAN。这是一个问题,因为这意味着服务器无法在互联网上达到任何HTTP流量。

服务器可以curl任何互联网资源,除非它在端口80上,而转发规则到位。

网关只有一个物理NIC,它位于external区域,这允许伪装。

代码语言:javascript
运行
复制
gateway:$ ip addr
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether dc:a6:32:1b:40:9e brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.2/24 brd 192.168.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.1/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::dea6:32ff:fe1b:409e/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0:  mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether dc:a6:32:1b:40:9f brd ff:ff:ff:ff:ff:ff
代码语言:javascript
运行
复制
gateway:$ ip route
default via 192.168.0.1 dev eth0 onlink
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.1
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2

我可能错过了一些基本的租户关于网络,这使我无法理解这个问题。

我的假设是,转发规则使得所有端口80 (入站或出站)都出现故障,而实际上我只希望从80到8000转发到我的服务器。

网络配置可能出错吗?或者,关于我如何使用firewalld,有什么是无效的吗?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-06-05 23:17:26

在我的场景中,也许可以使用iptablesfirewalld转发到下游子网上的特定机器,但我不知道如何让它工作。

这可能并不理想,但我的解决方法是在我的gateway机器上创建一个systemd服务,该服务使用socat将特定端口上的通信转发给特定的IP。

这是在我的gateway上运行的脚本,用于将端口80443转发到10.0.0.100

代码语言:javascript
运行
复制
firewall-cmd --zone=external --add-port=80/tcp
socat TCP4-LISTEN:80,fork TCP4:10.0.0.100:80 &
firewall-cmd --zone=external --add-port=443/tcp
socat TCP4-LISTEN:443,fork TCP4:10.0.0.100:443 &
wait
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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