同一台VPS,既是VPN也是MySQLServer,结果VPN总是被绕开

2012-10-05 11:18:18 +08:00
 diwup
情况是这样滴:

1. 我家的IP: home.home.home.home
2. 我这台VPS的IP: jp.jp.jp.jp
3. 我在这台VPS上即搭了VPN也搭了MySQL server
4. 我用MacBook挂上VPN,确认勾选了 send all traffic through vpn
5. 我打开 Terminal.app,输入了以下命令

mysql -u root -h jp.jp.jp.jp -p

连上了MySQL server,然后我查了下“我是谁”

select user();

得到的结果是:

root@home.home.home.home

也就是说,我通过 Terminal.app 连 MySQL,并没有经过 VPN :(

作为对照实验,我连上另一个机房在美国的VPN(IP: us.us.us.us

登陆我自己VPS上的MySQL,然后 select user(),得到了以下结果:

root@us.us.us.us

难道说,如果 VPN 和 MySQL server 在同一台机器的话,我这么干,VPN 总是会被绕开?

大家帮我分析分析...
1369 次点击
所在节点    Linode
8 条回复
bearice
2012-10-05 11:35:04 +08:00
假如你“所有”的数据都通过VPN走的话,那么VPN本身的数据是不是也要通过自己走一遍呢?

如果你真的需要通过VPN访问VPN服务器,请使用对端地址(即服务器上配置的localip)
diwup
2012-10-05 11:40:32 +08:00
@bearice 谢谢,我这么弄的初衷是,利用 iptables 的疏导,使得 MySQL server 只接受 VPN 的 IP 的远程登陆,拒绝其他所有 IP。而现在 VPN 和 MySQL 在同一台机器上,就很囧了。但是我还是想这么玩玩... 请问如何配置 localip...
reus
2012-10-05 12:15:55 +08:00
VPN的全称是Virtual Private Network,也就是说连接上vpn服务器之后,本地机器和远程机器都在同一个虚拟局域网内,本地机器和远程机器都有一个此内网的ip
所以连接mysql时应该使用此虚拟内网的地址(配置vpn时有配置的,192.168.x.x之类的),而不是用远程服务器的公网ip。
vpn服务器只监听一个端口,这个端口和mysql服务器的端口是同等地位的。vpn不是包裹在你的vps的外面,而只是开了一个端口。mysql是另一个端口,你用公网ip作为远程服务器的地址,直接就连上mysql的公网端口了,vpn的端口不是挡在外面的,所以也没有“绕道”。
mysql貌似没法指定绑定地址,所以你要把非vpn的地址过滤了,然后在本地机器上用vps的vpn内网ip连接mysql
reus
2012-10-05 12:19:44 +08:00
diwup
2012-10-05 12:34:17 +08:00
@reus 大谢!我这就瞅瞅...
zhangxiao
2012-10-05 12:57:24 +08:00
“mysql -u root -h jp.jp.jp.jp -p”

这里是不是应该是 "mysql -u root -h <vpn_server_up> -p“?
wwwjfy
2012-10-05 13:02:03 +08:00
看样子是路由表的关系,看连接server的走的哪条线
我见过不同的设置,有从vpn走,也有从eth0走的
bearice
2012-10-05 13:05:57 +08:00
@diwup 以linux的pptpd为例,/etc/pptp.conf里有
localip 192.168.10.1
remoteip 192.168.10.128-255
的配置,其中192.168.10.1即为服务器的IP

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/49266

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX