php linux ip 和 mac ip 终于互通了

折腾了好久,终于将linux 的ip和mac 的ip互通了。 build top of reactphp-framework/bridge

当然使用openv-p-n 和 wireguard 也能互通,还能多平台,但它不是PHP!

源码 https://github.com/reactphp-framework/bridge-tun

require

install

composer create-project reactphp-framework/bridge-tun bridge-tun dev-master

run

server run

first generate config file

php index.php -u

then run server

php index.php -s 8010 ./tun.txt

client run

uuid in the config file

php index.php -c server_ip:8010 xxxxx_uuid

其它

一切皆是流文章中,用PHP实现了两个客户端的信息交流,在此基础上如果用PHP能实现读写tun设备,那么一切就很简单了。

幸好有好心人已经实现了linux下的php tun 扩展,但没有mac 下的扩展。

那么比葫芦画瓢,经过一番学习PHP扩展的基础知识后,能成功的在mac上安装tun扩展了。

有了tun扩展那么在 github.com/reactphp-framework/brid... 的基础上编写逻辑代码,就可以实现互通了,github.com/reactphp-framework/brid... 做的就是这个事情。

遇到的坑

开发完成后 linux 和linux 的ip可以互相ping通,但linux和mac的ip 互相ping不通。

不断的寻找资料,网上发问,用wireshark 和tcpdump抓包等方式。

最后发现是linux tun 接口和mac 的utun接口的前4个字节不一样,将其根据平台适配后,终于ping通了。

2024-02-20 下载1G大文件测试

一个tcp连接能把5M带宽打满
1
1

1

本作品采用《CC 协议》,转载必须注明作者和本文链接
Make everything simple instead of making difficulties as simple as possible
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

不懂就问,这个通了可以干什么用呢。 也就是说 Linux 下 tun 是可以互通的,mac 下 PHP 还需要装个特定扩展,来兼容,才可以互通。

1年前 评论
jcc123

@Tacks 有什么用: 用PHP实现ip组网(linux和mac)

另外 linux 和mac都需要安装扩展,PHP并没有直接去创建tun设备并返回读写资源的方法,需要扩展来提供。

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!