两台机器( A 和 B ),分别 ip link add 了两个网卡,配置独立网络段( 10.1.1.x ),设置互通。
# A 机器配置
ip link add gre-y type gre local A 机器 ip remote B 机器 ip ttl 64
ip link set gre-y up
ip addr add 10.1.1.2/24 dev gre-yy
# B 机器配置
ip link add gre-x type gre local B 机器 ip remote A 机器 ip ttl 64
ip link set gre-x up
ip addr add 10.1.1.3/24 dev gre-x
现在 B 机器( Centos7 )上 docker 启了一个 6379 端口。
A 机器上使用 iptables,将 6379 转发到 B 机器上,命令如下:
iptables -t nat -I PREROUTING -p tcp --dport 6379 -j DNAT --to-destination 10.1.1.3:6379
由于 B 机器上 docker 起了几个服务,默认开启了很多 iptables 规则。刚开始配置好后,B 机器( 10.1.1.3 )和 A 机器( 10.1.1.2 )不能通过 10.1.1.x 的 ip 互相 ping 通,随后在 B 机器设置了条 iptables 规则:iptables -I INPUT -p gre -j ACCEPT
,随后可以互相 ping 通。
但是 A 机器的 6379 端口一直转发不过来,B 机器上抓 gre-x 网卡的包,可以看到有 A 机器的转发流量,但是实际上流量并未到达机器上 6379 的服务。
请教各位大佬,我该如何配置?
1
Jirajine 2020-07-01 14:15:50 +08:00 via Android
除了 INPUT 之外,forward 也得放行。
|
2
Raul7 OP @Jirajine 直接`iptables -I FORWARD -p gre -j ACCEPT`吗 需要 FORWARD 到 docker 的那个网卡上吗
|
3
ihciah 2020-07-01 14:31:42 +08:00 via iPhone
为啥 accept gre 能通 icmp……😯
不过一个简单不折腾的办法是用 docker-compose 起,yaml 里写个 network 就行。 |