docker 使用iptables防火墙从远程主机连接到节点网络时出现问题

wlzqhblo  于 2023-04-29  发布在  Docker
关注(0)|答案(1)|浏览(128)

我有ubuntu 22。04 LTS服务器,在端口1880上暴露了一个运行nodered的容器,我想用iptables来restringer。我的配置如下:

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -p tcp --dport 1880 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1880 -j ACCEPT

iptables -A FORWARD -p all -j DOCKER-USER
iptables -A FORWARD -p all -j DOCKER-ISOLATION-STAGE-1
iptables -A FORWARD -p all -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED  -j ACCEPT
iptables -A FORWARD -p all -o docker0 -j DOCKER
iptables -A FORWARD -p all -i docker0 -o !docker0 -j ACCEPT
iptables -A FORWARD -p all -i docker0 -o docker0 -j ACCEPT

iptables -A DOCKER -p tcp -i !docker0 -o docker0 -d 192.168.50.124 --dport 1880 -j ACCEPT

iptables -A DOCKER-ISOLATION-STAGE-1 -p all -i docker0 -o !docker0 -j DOCKER-ISOLATION-STAGE-2
iptables -A DOCKER-ISOLATION-STAGE-1 -p all -j RETURN

iptables -A DOCKER-ISOLATION-STAGE-2 -p all -o docker0 -j DROP
iptables -A DOCKER-ISOLATION-STAGE-2 -p all -j RETURN

iptables -A DOCKER-USER -p all -j RETURN
iptables -I DOCKER-USER -i docker0 -j ACCEPT

这是我的iptables规则,我能做错什么?
如果我放置:iptables -A OUTPUT -p tcp -j ACCEPT & iptables -A INPUT -p tcp -j ACCEPT,它可以工作

hts6caw3

hts6caw31#

这个配置应该足够了:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

iptables -A INPUT -p tcp --dport 1880 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1880 -m conntrack --ctstate ESTABLISHED -j ACCEPT

确保node-red容器启动时连接到主机网络,或连接到Docker网桥网络,暴露端口1880。如果要公开不同的端口,请相应地修改iptables规则。

相关问题