< 返回版块

pama 发表于 2025-01-05 17:25

Tags:tun,pnet

求满足以下功能的代码

  • 基于 tun new 一个虚拟网卡如:utun8
  • 系统所有ip包都经过此虚拟网卡(出入两个方向)
  • 当收到数据包后,在程序中打印上一层协议名称,只需打印:Icmp,Ipv4,Tcp,Udp 即可,其它可不打印
  • 不破坏系统默认路由
  • 支持 linux,macos,windows

网络拓扑: 应用 <----> tun虚拟网卡 <----> 物理路由器 <----> 外网

有偿:¥300(可沟通) 说明:只要朋友愿意,可以加微信:PamaZone ,也可以留下你的联系方式,我加你。对于有偿金额,不是固定的,可以沟通。

评论区

写评论
Bai-Jinlin 2025-01-12 12:58

闲来无事用ebpf写了个 https://github.com/Bai-Jinlin/simple_dump

使用方法是

cargo install bpf-linker
cargo build
sudo RUST_LOG=info ./target/debug/socket_filter

--
👇
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不住。。。

作者 pama 2025-01-10 10:16

昨天晚上查了一下资料,感觉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不住。。。

Bai-Jinlin 2025-01-09 20:14

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不住。。。

作者 pama 2025-01-09 15:58

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回来。

Bai-Jinlin 2025-01-08 17:10

那你有没有考虑过基于xdp的方案。

--
👇
pama: 这个代码已经在我本机上了,功能肯定远超我提出的了。其实我是想的只是: 能在网卡上“拿到并可以处理”流量就行了 如果不处理,直接放回去(可能需要修改4元组),那就跟没有这个tun是一样的,正常上网。 这是一个所有其它功能的起点,相当于提供了一个原子类型,至于可以拿来做什么,都可以。

--
👇
zonyitoo: https://github.com/shadowsocks/shadowsocks-rust/tree/master/crates/shadowsocks-service/src/local/tun

也许这就是你想要的,我实现这套有一些时间了,不过性能上有损失,核心是因为smoltcp这个库有些设计不太友好,但这已经超出你想要的功能了。

如果你在使用过程中有发现更好的写法,请务必PR回来。

作者 pama 2025-01-08 15:32

这个代码已经在我本机上了,功能肯定远超我提出的了。其实我是想的只是: 能在网卡上“拿到并可以处理”流量就行了 如果不处理,直接放回去(可能需要修改4元组),那就跟没有这个tun是一样的,正常上网。 这是一个所有其它功能的起点,相当于提供了一个原子类型,至于可以拿来做什么,都可以。

--
👇
zonyitoo: https://github.com/shadowsocks/shadowsocks-rust/tree/master/crates/shadowsocks-service/src/local/tun

也许这就是你想要的,我实现这套有一些时间了,不过性能上有损失,核心是因为smoltcp这个库有些设计不太友好,但这已经超出你想要的功能了。

如果你在使用过程中有发现更好的写法,请务必PR回来。

zonyitoo 2025-01-06 22:13

https://github.com/shadowsocks/shadowsocks-rust/tree/master/crates/shadowsocks-service/src/local/tun

也许这就是你想要的,我实现这套有一些时间了,不过性能上有损失,核心是因为smoltcp这个库有些设计不太友好,但这已经超出你想要的功能了。

如果你在使用过程中有发现更好的写法,请务必PR回来。

作者 pama 2025-01-05 21:44

微信号可搜索

作者 pama 2025-01-05 18:01

wxid_rzrfpfa6mfg612 这个微信收不到吗?

--
👇
luozhonghe: 你的微信搜索不到。

--
👇
luozhonghe: 我写过,可以联系我。

1 共 9 条评论, 1 页