求满足以下功能的代码
- 基于
tun
new 一个虚拟网卡如:utun8 - 系统所有ip包都经过此虚拟网卡(出入两个方向)
- 当收到数据包后,在程序中打印上一层协议名称,只需打印:Icmp,Ipv4,Tcp,Udp 即可,其它可不打印
- 不破坏系统默认路由
- 支持 linux,macos,windows
网络拓扑: 应用 <----> tun虚拟网卡 <----> 物理路由器 <----> 外网
有偿:¥300(可沟通) 说明:只要朋友愿意,可以加微信:PamaZone ,也可以留下你的联系方式,我加你。对于有偿金额,不是固定的,可以沟通。
1
共 9 条评论, 1 页
评论区
写评论闲来无事用ebpf写了个 https://github.com/Bai-Jinlin/simple_dump
使用方法是
--
👇
pama: 昨天晚上查了一下资料,感觉xdp确实是未来,但是技术比较新,各平台支持参差不齐,平台通用性方面也要折腾,它的方式很明确,不像tun/tap,涉及方面比较多。 但是目前来讲,tun/tap是很成熟的,我主要问题是它在各平台的路由和规则配不清楚,资料比较分散,tun/tap,路由,防火墙等,虽然资料都有,但都是各讲各的。我在研究sing-box,可能它会给我一个答案。
老哥可以留个联系方式不,楼上也有我的微信,交流分享一下。
--
👇
Bai-Jinlin: tx可以用BPF_PROG_TYPE_SOCKET_FILTER类型的ebpf程序,linux内核下的samples/bpf下面有例子,比如https://github.com/torvalds/linux/blob/master/samples/bpf/sockex2_kern.c,rust也可以不用libbpf,使用aya这个库也可以搞。反正我个人感觉ebpf的资料比tun/tap好找点。
--
👇
pama: xdp 只能处理RX路径的包,更重要的是我怕hold不住。。。
昨天晚上查了一下资料,感觉xdp确实是未来,但是技术比较新,各平台支持参差不齐,平台通用性方面也要折腾,它的方式很明确,不像tun/tap,涉及方面比较多。 但是目前来讲,tun/tap是很成熟的,我主要问题是它在各平台的路由和规则配不清楚,资料比较分散,tun/tap,路由,防火墙等,虽然资料都有,但都是各讲各的。我在研究sing-box,可能它会给我一个答案。
老哥可以留个联系方式不,楼上也有我的微信,交流分享一下。
--
👇
Bai-Jinlin: tx可以用BPF_PROG_TYPE_SOCKET_FILTER类型的ebpf程序,linux内核下的samples/bpf下面有例子,比如https://github.com/torvalds/linux/blob/master/samples/bpf/sockex2_kern.c,rust也可以不用libbpf,使用aya这个库也可以搞。反正我个人感觉ebpf的资料比tun/tap好找点。
--
👇
pama: xdp 只能处理RX路径的包,更重要的是我怕hold不住。。。
tx可以用BPF_PROG_TYPE_SOCKET_FILTER类型的ebpf程序,linux内核下的samples/bpf下面有例子,比如https://github.com/torvalds/linux/blob/master/samples/bpf/sockex2_kern.c,rust也可以不用libbpf,使用aya这个库也可以搞。反正我个人感觉ebpf的资料比tun/tap好找点。
--
👇
pama: xdp 只能处理RX路径的包,更重要的是我怕hold不住。。。
xdp 只能处理RX路径的包,更重要的是我怕hold不住。。。
--
👇
Bai-Jinlin: 那你有没有考虑过基于xdp的方案。
--
👇
pama: 这个代码已经在我本机上了,功能肯定远超我提出的了。其实我是想的只是: 能在网卡上“拿到并可以处理”流量就行了 如果不处理,直接放回去(可能需要修改4元组),那就跟没有这个tun是一样的,正常上网。 这是一个所有其它功能的起点,相当于提供了一个原子类型,至于可以拿来做什么,都可以。
--
👇
zonyitoo: https://github.com/shadowsocks/shadowsocks-rust/tree/master/crates/shadowsocks-service/src/local/tun
也许这就是你想要的,我实现这套有一些时间了,不过性能上有损失,核心是因为smoltcp这个库有些设计不太友好,但这已经超出你想要的功能了。
如果你在使用过程中有发现更好的写法,请务必PR回来。
那你有没有考虑过基于xdp的方案。
--
👇
pama: 这个代码已经在我本机上了,功能肯定远超我提出的了。其实我是想的只是: 能在网卡上“拿到并可以处理”流量就行了 如果不处理,直接放回去(可能需要修改4元组),那就跟没有这个tun是一样的,正常上网。 这是一个所有其它功能的起点,相当于提供了一个原子类型,至于可以拿来做什么,都可以。
--
👇
zonyitoo: https://github.com/shadowsocks/shadowsocks-rust/tree/master/crates/shadowsocks-service/src/local/tun
也许这就是你想要的,我实现这套有一些时间了,不过性能上有损失,核心是因为smoltcp这个库有些设计不太友好,但这已经超出你想要的功能了。
如果你在使用过程中有发现更好的写法,请务必PR回来。
这个代码已经在我本机上了,功能肯定远超我提出的了。其实我是想的只是: 能在网卡上“拿到并可以处理”流量就行了 如果不处理,直接放回去(可能需要修改4元组),那就跟没有这个tun是一样的,正常上网。 这是一个所有其它功能的起点,相当于提供了一个原子类型,至于可以拿来做什么,都可以。
--
👇
zonyitoo: https://github.com/shadowsocks/shadowsocks-rust/tree/master/crates/shadowsocks-service/src/local/tun
也许这就是你想要的,我实现这套有一些时间了,不过性能上有损失,核心是因为smoltcp这个库有些设计不太友好,但这已经超出你想要的功能了。
如果你在使用过程中有发现更好的写法,请务必PR回来。
https://github.com/shadowsocks/shadowsocks-rust/tree/master/crates/shadowsocks-service/src/local/tun
也许这就是你想要的,我实现这套有一些时间了,不过性能上有损失,核心是因为smoltcp这个库有些设计不太友好,但这已经超出你想要的功能了。
如果你在使用过程中有发现更好的写法,请务必PR回来。
微信号可搜索
wxid_rzrfpfa6mfg612 这个微信收不到吗?
--
👇
luozhonghe: 你的微信搜索不到。
--
👇
luozhonghe: 我写过,可以联系我。