linux远程访问达梦数据库,一次云服务器安装达梦数据库后无法远程访问问题处理...

今天同事说新装了一台云服务器,使用ssh登录正常,但是上面的达梦数据库服务端口不能访问。

用netstat -anp查看端口是正常监听的,监听的地址也是允许任意ip访问

并且防火墙和iptables都是关闭的

我也觉得奇怪,于是远程登录上去服务器。查看了达梦的端口,看起来是正常的。

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp6 0 0 :::5236 :: LISTEN 3810/dmserver

ssh -v -p 5236 root@服务器公网ip 试一下访问达梦数据库 发现连接失败

于是改成

ssh -v -p 5236 [email protected] 发现是可以成功连接的

防火墙都是关闭状态,应该不是防火墙问题,我尝试地使用traceroute 服务器公网ip,想看一下是不是网络路由有问题。

结果从traceroute输出发现连接本机ip要经过好几台机,这有点不正常。

traceroute to ##脱敏##, 30 hops max, 60 byte packets

1 100.108.0.1 (100.108.0.1) 7.172 ms 7.271 ms 7.255 ms

2 11.245.20.8 (11.245.20.8) 5.880 ms 6.032 ms 11.245.20.2 (11.245.20.2) 5.943 ms

3 11.245.96.3 (11.245.96.3) 5.058 ms 4.933 ms 11.245.96.9 (11.245.96.9) 5.103 ms

使用route -n查一下路由,发现是没有本机公网ip的路由,所以应该是走了default路由

为什么缺了本地路由呢,难道是ip没配置好。但没配置好为什么ssh能连接呢?我尝试使用ifconfig -a查一下,发现一个问题:本机根本没有配置这个公网的ip!

eth0: flags=4163 mtu 1500

inet 192.168.0.137 netmask 255.255.255.0 broadcast 192.168.0.255

inet6 fe80::8d9f:e6ba:acea:d7bd prefixlen 64 scopeid 0x20

ether fa:16:3e:35:e6:b7 txqueuelen 1000 (Ethernet)

RX packets 84212 bytes 49923509 (47.6 MiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 48468 bytes 14177057 (13.5 MiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73 mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10

loop txqueuelen 1000 (Local Loopback)

RX packets 58427 bytes 56052388 (53.4 MiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 58427 bytes 56052388 (53.4 MiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

virbr0: flags=4099 mtu 1500

inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255

ether 52:54:00:e8:4d:1c txqueuelen 1000 (Ethernet)

RX packets 0 bytes 0 (0.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

virbr0-nic: flags=4098 mtu 1500

ether 52:54:00:e8:4d:1c txqueuelen 1000 (Ethernet)

RX packets 0 bytes 0 (0.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

后来咨询了一下同行,才知道云服务器都是这样的,通过他们路由做nat映射,并不需要在本机配置公网ip。

如果想知道本机公网ip,可以使用curl ip.cip.cc获取。

于是我执行这个命令,给本机配置多一个虚拟ip(公网的)

ifconfig eth0:1 $(curl ip.cip.cc) netmask 255.255.255.0 up

再次执行ssh -v -p 5236 root@服务器公网ip,发现可以成功访问了。

这就说明应该是云服务器的路由阻止了5236端口连接,而不是本机问题。

接下来的事情就简单了,一边找华为云的接口人,看能不能多放开几个端口。在华为云回复前,我们自己使用ssh转发,**把远程端口通过ssh映射到本机访问。这样就可以绕开华为云的防火墙问题。

你可能感兴趣的:(linux远程访问达梦数据库)