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带宽打满
本作品采用《CC 协议》,转载必须注明作者和本文链接
不懂就问,这个通了可以干什么用呢。 也就是说 Linux 下 tun 是可以互通的,mac 下 PHP 还需要装个特定扩展,来兼容,才可以互通。
@Tacks 有什么用: 用PHP实现ip组网(linux和mac)
另外 linux 和mac都需要安装扩展,PHP并没有直接去创建tun设备并返回读写资源的方法,需要扩展来提供。