通过跳板机连接远程mysql服务器(Linux/Windows端口转发)
端口转发:
端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过一个被激活的NAT路由器到达一个在私有内部IP地址(局域网内部)上的一个端口。
本文以pc/跳板机A/数据库服务器B为例,使得pc访问到远程服务器B的数据库;
网络信息如下表:
服务器 | 网卡1 | 网卡2 |
---|---|---|
pc | 172.16.88.2 | |
跳板机A(NAT) | 172.16.88.1 | 192.168.1.1 |
数据库服务器B(DST) | 192.168.1.2 |
Linux下端口映射:
准备:
[root@localhost ~]# sysctl -a | grep "ip_forward"
net.ipv4.ip_forward = 0 # 如果ip_forward为0 ,则需修改sysctl.conf 文件
[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 #将 这行添加至sysctl.conf 文件中
port.sh
#!/bin/bash
pro='tcp'
#跳板机内网ip
NAT_Host='192.168.1.1'
NAT_Port=3306
#目的机内网ip
Dst_Host='192.168.1.2'
Dst_Port=3306
iptables -t nat -A PREROUTING -m $pro -p $pro --dport $NAT_Port -j DNAT --to-destination $Dst_Host:$Dst_Port
iptables -t nat -A POSTROUTING -m $pro -p $pro --dport $Dst_Port -d $Dst_Host -j SNAT --to-source $NAT_Host
运行./port.sh即可
linux下查看端口映射情况: iptables -t nat -L -n
linux下删除端口映射:
iptables -t nat -D PREROUTING -m $pro -p $pro --dport $NAT_Port -j DNAT --to-destination $Dst_Host:$Dst_Port
iptables -t nat -D POSTROUTING -m $pro -p $pro --dport $Dst_Port -d $Dst_Host -j SNAT --to-source $NAT_Host
Windows下端口映射:
netsh interface portproxy add v4tov4 listenaddress=192.168.1.1 listenport=3306 connectaddress=192.168.1.2 connectport=3306
查询已经映射的端口
netsh interface portproxy show v4tov4
删除已经映射的端口
netsh interface portproxy delete v4tov4 listenaddress=192.168.1.1 listenport=3306
通过navicat访问数据库:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7498u8nq-1657872224004)(//img-blog.csdn.net/20180426143338161?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzM1ODQwNTU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]
注意:IP处应填写A服务器与pc互通的网卡的ip地址