我想要(作为迈向外部 mysql 代理的第一步)将流量从 mysql 的本地连接(在虚拟机上)重新路由到外部代理(在主机上),然后将其路由回虚拟机,然后将其提供给mysql服务器。我使用这个设置是因为我唯一想要操作的是 mysql 配置(使用的端口)主要是独立于 webapp 的。
应该看起来大致是这样的:
MYSQLClient
|
:4446 incoming connection on port of guest (1)
+--------------:3305+ rerouted to host (2)
|
+:8888--------------+ which then routes it back to the guest (3)
|
:4444 which is then routed to the MYSQLServer port (4)
|
MYSQLServer
我用于不同的步骤
(1) nc -k -l -v 4446 | nc 192.168.72.1 3305
(2/3) nc -k -l -v 3305 | nc 192.168.72.128 8888
(4) nc -k -l -v 8888 | nc localhost 4444
我将 mysql 配置为侦听端口 4444。我想保留 (4),即使您也可以将 mysql 配置为侦听外部连接,以将对配置文件的更改保持在最低限度,并让 mysql 认为建立的连接来自 localhost 。
现在说说我遇到的问题:
我不能使用任意顺序的命令。我必须使用相反的顺序,否则不会建立连接,并且一旦我尝试发送数据,连接就会中断。一旦我尝试自动化该设置,这就会让我非常头疼,因为似乎不可能在来宾系统启动时计时。
它不适用于 mysql。不过,只要省略 mysqlserver 端口的 nc,Telnet 就可以。但一旦使用此方法,在尝试使用 telnet 连接时,(4) 就会中断。与 mysql 客户端的连接根本不会有任何效果,而且显然不起作用 - 不会建立连接,并且输入 mysql 密码后,不会再发生任何事情。
考虑到这个设置我完全疯了吗?如果不是,我怎样才能让它(真正)发挥作用?
不涉及数控并解决第一段中描述的总体问题的解决方案将与修复数控设置一样令人高兴地被接受。上述问题仅描述我目前的解决方案。
答案1
虽然 nc 更轻量级,适合一次性测试,但对于更严格的使用,redir 更合适;如果没有辅助工具和更复杂的设置(例如,西内特。
redir 也是一个非常轻量级的工具,通过固有的重试/错误处理,可以很好地将一个 TCP 端口重定向到另一个端口。
假设我们系统的 IP 地址是 1.1.1.1,我们希望将来自端口 80 的所有流量重定向到 IP 地址为 2.2.2.2 和端口 8080 的远程服务器。简单地说,我们希望 redir 实用程序重定向连接从端口 80 上的 1.1.1.1 到端口 8080 上的 2.2.2.2。我们必须运行 redir,如下所示:
redir --laddr=1.1.1.1 --lport=80 --caddr=2.2.2.2 --cport=8080