我正在为一个开发团队设置测试/实验室环境,他们恰好也需要数据库。我设置了一个 Centos 7 VPS,并在其上安装了应用程序服务器、数据库和 Openvpn 实例。
我正在使用 iptables 来过滤流量,只有 1194/udp 暴露在互联网上,我只接受隧道接口所需的内容。(我实际上暂时接受来自互联网的 22/tcp,因为我正在摆弄 vpn 配置。我正在使用 ssh 密钥,但 root 无论如何都无法远程登录)
问题是我可以通过 SSH 访问服务器,并且我也能看到应用程序登陆页面(由 8080/tcp 提供服务),但是我无法连接到数据库。
以下是防火墙规则:
[root@grolloserver ~]# iptables -nvL
Chain INPUT (policy DROP 198 packets, 19717 bytes)
pkts bytes target prot opt in out source destination
48218 4934K f2b-SSH tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
25541 1143K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
3 120 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
72983 14M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
31 1302 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:1194
2 1570 ACCEPT icmp -- tun0 * 0.0.0.0/0 0.0.0.0/0
2 92 ACCEPT tcp -- tun0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
1 44 ACCEPT tcp -- tun0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
0 0 ACCEPT tcp -- tun0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
36412 3741K LOGGING all -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
128 6608 ACCEPT all -- tun0 * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 1077 packets, 287K bytes)
pkts bytes target prot opt in out source destination
Chain LOGGING (1 references)
pkts bytes target prot opt in out source destination
36412 3741K LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 prefix "iptables dropped: "
Chain f2b-SSH (1 references)
pkts bytes target prot opt in out source destination
我尝试过的事情:
- 将默认 INPUT 策略设置为 ACCEPT - 不起作用
- 将 mariadb 绑定到 eth0 并接受(30 秒)来自各处的流量(我可以连接到数据库)
- 将 mariadb 绑定到 tun0 - 不起作用
- 将 mariadb 绑定到每个接口(通过将 bind-address 设置为 0.0.0.0 并对其进行注释)
- 停止 mariadb 并设置 sshd 来监听 22 和 3306(我无法连接到 3306)
- 嗅探流量时,我看到 3306/tcp 来自 tun0,但将规则设置为 INPUT #1 来记录每个 3306/tcp 流量却没有显示任何内容
Firewalld 被屏蔽并停止。SELinux 被禁用。mssfix 设置为 1430(1470 是我成功 ping VPN 网关的 MTU - 40)。
你们有什么建议吗?谢谢。
编辑:我忘了说了,连接在约 15 秒后超时。Iptables 计数器为零(我没有重置它们)。ss -nal4 显示 mariadb 正在监听 tun0 接口 ip 地址。
答案1
解决了!问题是我设置了一条预路由规则,将数据库请求通过 NAT 转发到另一个数据库,当然,我忘了这事了。
这就是流量甚至没有到达 INPUT 链的原因。
答案2
默认情况下,Mariadb 不允许远程登录。您应该查看您的配置,我甚至认为还应该以远程连接数据库的方式授予权限。我遇到过这种情况。