changlan / kytan

kytan: High Performance Peer-to-Peer VPN in Rust
Apache License 2.0
490 stars 60 forks source link

你这个程序在解决被污染的域名方面有问题 #26

Closed luckypoem closed 6 years ago

luckypoem commented 6 years ago

我在linux vps和mac机器上,都成功安装了kytan,但是按readme里的内容,两边都运行了 kytan:

root@yms:# ps aux|grep kytan root 304 0.0 0.2 12728 2224 pts/0 S+ 13:13 0:00 grep kytan root 32758 0.0 0.2 17856 2560 ? Ss 13:12 0:00 /root/kytan/target/release/kytan --mode s -p 9527 --secret my-password root@yms:#

在mac上: yudeMacBook-Air:release brite$ sudo ./kytan --mode c -h my-vps-ip -p 9527 --secret my-password Password: add host my-vps-ip: gateway 192.168.1.1 delete net default add net default: gateway 10.10.10.1

然后我在火狐浏览器里访问显示ip的网站https://www.ipaddress.com/ ,它显示了我服务器的ip,但是访问被封的网站时,火狐浏览器的左下角显示looking up some-blocked-domain.com , 网站打不开,显示: The connection was reset

可见你这个程序在解决被污染的域名方面有问题,所以翻墙失败。 怎么解决?谢谢回复

这个程序exodus,(https://github.com/LuoZijun/exodus)跟你的很像,它解决了被污染的域名的问题https://github.com/LuoZijun/exodus/issues/13

你可参考该项目改进一下你这个程序吗? 非常感谢回复

changlan commented 6 years ago

@luckypoem DNS 污染问题应与 VPN 无关,请确保:

  1. VPS 在墙外且不受 DNS 污染干扰
  2. 客户端的 DNS 设为墙外的服务器,如 8.8.8.8
luckypoem commented 6 years ago

我的VPS 在墙外且未受 DNS 污染干扰,ip未被封。 客户端机器(mac)的 DNS 已设为墙外的服务器:8.8.8.8

所以,我怀疑你这个程序在解决被污染的域名方面有问题。那个exodus专门处理过域名污染问题,所以可用它成功翻墙。

luckypoem commented 6 years ago

我刚才在用exodus翻墙时,查看了客户端机器(mac)的 DNS为8.8.8.8 ,然后我按control+c终止exodus的客户端程序,显示: ... [2018-01-29 13:46:21.785840000 INFO] vpn restore default dns setting [OK] yudeMacBook-Air:~ brite$ 然后又去查看了客户端机器(mac)的 DNS,它变成了192.168.1.1,但是不知怎么回事,界面是灰色的,我改不了DNS的值。要是你这个程序也像exodus那样能自动修改客户端机器(mac)的 DNS的值就好了。 很显然,我每次启动exodus,它都自动修改了客户端机器(mac)的 DNS的值为8.8.8.8

changlan commented 6 years ago

从原理上说,只要 dns 设置正确,使用 vpn 后不应该存在污染的问题。kytan 的定位是 vpn,而 vpn 不应该强制指定用户的 dns。

根据你的描述,看起来问题不是由 kytan 本身存在的 bug 引起,而是客户端本身的 DNS 设置错误 (192.168.1.1)。用户自己应该设置为 8.8.8.8。

luckypoem commented 6 years ago

这个输出的结果:add host my-vps-ip: gateway 192.168.1.1是运行sudo route add my-vps-ip 192.168.1.1得来的; 这个输出的结果:delete net default是运行sudo route delete default得来的; 这个输出的结果:add net default: gateway 10.10.10.1是运行什么命令得来的? 谢谢回复。

LuoZijun commented 6 years ago

@luckypoem 最后一个命令是 route add default 10.10.10.1

luckypoem commented 6 years ago

经@LuoZijun 指点(https://github.com/LuoZijun/exodus/issues/13) ,我使用networksetup命令修改了mac的dns服务器地址为8.8.8.8: yudeMacBook-Air:~ brite$ networksetup -getdnsservers Wi-Fi 8.8.8.8 yudeMacBook-Air:~ brite$

但是访问被封的网站时,火狐浏览器的左下角依旧显示looking up some-blocked-domain.com , 网站还是打不开,显示: The connection was reset。

怎么回事呢?你可以让你国内的同学测试一下,估计结果是一样的。

testcaoy7 commented 6 years ago

kytan不会覆盖系统DNS设定 我在mac上测试,需要手动改DNS并刷新DNS解析缓存

luckypoem commented 6 years ago

@changlan 根据你所说“客户端本身的 DNS 设置错误 (192.168.1.1)。用户自己应该设置为 8.8.8.8。”,然后根据 @LuoZijun 的提示-运行命令:networksetup -setdnsservers "Wi-Fi" 8.8.8.8 ,然后即可翻墙。 谢谢二位。

luckypoem commented 6 years ago

在服务器上,我除了运行iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o -j MASQUERADE外, 修改/etc/sysctl.conf,启用net.ipv4.ip_forward=1 ,即去掉其前面的#号;我还特别启用了net.ipv4.tcp_syncookies=1 ,即去掉其前面的#号。 然后运行sysctl -p ,让修改立刻生效。

这样在客户机器上,就能成功翻墙了