参考连接
http://blog.chinaunix.net/uid-20662820-id-142433.html
修改经过钩子的数据包目的地址:
结果图:
//linux 内核数据包转发模块
/**
myhook_func.c
Makefile
编译:make
加载:sudo insmod myhook_func.ko remark=0 dst=192.168.92.129 //remark默认0,dst 默认127.0.0.1
卸载:sudo rmmod myhook_func
dmesg查看打印
**/
//头文件包含
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/netfilter.h>
#include <linux/ip.h>
#include <linux/ipv6.h>
#include <linux/ctype.h>
#include <linux/inet.h> /*in_aton() 将地址转换为码 */
#include <linux/socket.h> /*PF_INET */
#include <net/checksum.h>
#include <net/tcp.h>
#include <net/udp.h>
#include <net/netfilter/nf_conntrack.h>
#include <net/netfilter/nf_conntrack_expect.h>
#include <net/netfilter/nf_conntrack_ecache.h>
#include <net/netfilter/nf_conntrack_helper.h>
#include <linux/netfilter/nf_conntrack_ftp.h>
#include <linux/types.h>
#include <linux/skbuff.h> //skb_network_header(skb) CHECKSUM_UNNECESSARY
#include <linux/in.h> //IPPROTO_xxx
#include <linux/timer.h>
#include <net/xfrm.h>
#include <linux/netfilter.h>
#include <linux/netdevice.h> //netif_receive_skb netif_rx
#include <linux/if.h>
#include <linux/inetdevice.h>
#include <net/protocol.h>
#include <linux/netfilt