lanthora / candy

A reliable, low-latency, and anti-censorship virtual private network
https://docs.canets.org
MIT License
452 stars 55 forks source link

跨局域网组网不能访问局域网内其他节点 #441

Closed jimmycart888 closed 1 month ago

jimmycart888 commented 1 month ago

服务端昨天搞好后,把家里和公司的客户端也搞好了。家里是linux安装的并开启了ipv4转发。公司是windows客户端,也都成功连接到了服务端,在服务端网页上也做好了路由转发,但是在公司的电脑上只能访问家里安装客户端的那台linux,家里其他的ip都无法访问,麻烦作者大佬有空处理一下呢,谢谢!!! 相关截图如下: photo_2024-09-30_12-19-56 photo_2024-09-30_12-21-01 photo_2024-09-30_12-20-05

lanthora commented 1 month ago

在公司的电脑上只能访问家里安装客户端的那台linux,家里其他的ip都无法访问

通过什么方式判断的能访问和不能访问?

@jimmycart888

lanthora commented 1 month ago

根据目前已知的信息,可能缺少回程的路由配置.

目前我知道的多局域网组网有两种方式:

  1. 把中转的机器作为代理,能直接访问局域网的设备,好处是配置简单,坏处是不知道请求的原始 IP, 只能看到中转机器的局域网 IP
  2. 中转机器根据把报文原始信息直接转发到目标机器,好处是知道来源的地址是谁,并且理论上性能更快,坏处是需要根据来源地址给目标机器配置上回程的路由

Candy 实现的是第二种.

lanthora commented 1 month ago

以下调整后功能正常:

  1. 添加回程路由。缺失回程路由导致主机回的包没有到达局域网网关
  2. 调整防火墙。使用 http 测试的时候被防火墙丢包了
lanthora commented 1 month ago

后续测试两个节点是否连通,需要在源机器发送 ping 包,并在目标机器抓包看是否正常的收到了 icmp 的 echo 包。这个测试通过即表示单向可达,反向可达需要做相同的配置。

jimmycart888 commented 1 month ago

已按照大佬的建议操作了,已经正常了。谢谢!!