You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

通过中转机器B实现远程数据库C端口访问的方案咨询

通过中转机器B实现远程数据库C端口访问的方案咨询

没问题,这种场景完全可以实现!既然你完全控制机器B,咱们可以用B做端口转发,把B的8000端口流量直接转发到C的8000端口上。下面给你两种常用的方法,都是不需要登录C就能搞定的:

Linux系统下的机器B(iptables方案)

  • 首先开启IP转发功能:
    临时开启可以执行:echo 1 > /proc/sys/net/ipv4/ip_forward
    如果要重启后依然生效,编辑/etc/sysctl.conf,找到net.ipv4.ip_forward=1这行去掉注释,然后执行sysctl -p让设置生效。
  • 添加端口转发规则:
    把B的8000端口流量转发到C的8000端口:
    iptables -t nat -A PREROUTING -p tcp --dport 8000 -j DNAT --to-destination [C的IP地址]:8000
    再添加返回流量的转发规则,确保连接正常:
    iptables -t nat -A POSTROUTING -p tcp -d [C的IP地址] --dport 8000 -j MASQUERADE
  • 保存规则:
    根据不同Linux发行版,保存命令略有差异,比如Ubuntu可以用iptables-save > /etc/iptables/rules.v4,CentOS用service iptables save

Windows系统下的机器B(netsh方案)

  • 打开管理员权限的命令提示符,执行端口转发命令:
    netsh interface portproxy add v4tov4 listenport=8000 listenaddress=[B的IP地址] connectport=8000 connectaddress=[C的IP地址]
  • (可选)如果后续需要删除这条规则,执行:
    netsh interface portproxy delete v4tov4 listenport=8000 listenaddress=[B的IP地址]
  • 别忘了配置Windows防火墙:添加一条入站规则,允许TCP 8000端口的连接请求,避免流量被防火墙拦截。

设置完成后,你在本地通过VPN连接到B,直接访问B的IP地址:8000,就相当于访问C的8000端口了,完全不需要登录C,所有转发逻辑都在B上完成,刚好匹配你的需求!

备注:内容来源于stack exchange,提问作者Kartik

火山引擎 最新活动