我必须编写一个 vpn 模块。首先,我编写了一个内核模块,用于修改所有传入和传出的 TCP 数据包。它使用 netfilter 钩子。对于传入的数据包,我修改了(struct sk_buff)->data
和(struct sk_buff)->tail
指针之间的字节,将它们加一。对于传出的数据包,我修改了(struct sk_buff)->data
和(struct sk_buff)->tail
指针之间的字节,将它们减一。
但是,我尝试在 localhost 和 localhost 之间建立 TCP 连接(通过 netcat),但没有成功。你能告诉我我做错了什么吗?我需要修改结构sk_buff
结构中的其他一些字段吗?
是否可以仅从内核空间实现我的简单 vpn 模块?(因此不使用特殊的库,如 libnetfilter_queue)?
谢谢你。