日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用 netfilter 处理IPv6报文

發布時間:2025/4/5 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 netfilter 处理IPv6报文 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ????? netfilter對IPv6的處理和IPv4流程類似,只有鉤子函數注冊協議不同,優先級和注冊的鏈都是一樣的。

{.hook=nf_input_hook_v4,.pf=NFPROTO_IPV4, //IPv4協議.hooknum=NF_INET_POST_ROUTING,.priority=0,}, {.hook=nf_input_hook_v6,.pf=NFPROTO_IPV6, //IPv6協議.hooknum=NF_INET_PRE_ROUTING,.priority=NF_IP_PRI_FIRST,},

下面是一個netfilter ipv6小栗子,對本機出去的IPv6 UDP報文做了端口變換處理,介紹一下IPv6地址操作、IPv6報文udp校驗值計算等等。

內核版本: 3.4.39

/** Netfilter IPv6 Demo, NAT* Autor : Mason* Date : 20180731*/#include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/socket.h> #include <linux/netfilter.h> #include <linux/netfilter_ipv4.h> #include <linux/in.h> #include <linux/if_ether.h> #include <linux/ip.h> #include <net/ip.h> #include <net/dsfield.h> #include <linux/skbuff.h> #include <linux/inet.h> #include <linux/netdevice.h> #include <net/route.h> #include "nfdemov6.h"/* IPv6輸入報文處理函數 */ static unsigned int nfdemo_input_hook_v6(unsigned int hooknum,struct sk_buff *skb,const struct net_device *in,const struct net_device *out,int (*okfn)(struct sk_buff *)) { /* do something */return NF_ACCEPT; }/* IPv6輸出報文處理函數,這里對IPv6 UDP報文做了源端口變換 */ static unsigned int nfdemo_output_hook_v6(unsigned int hooknum,struct sk_buff *skb,const struct net_device *in,const struct net_device *out,int (*okfn)(struct sk_buff *)) { struct ipv6hdr *iph6;struct udphdr *udph; unsigned int udp_len;/* 獲取IPv6首部指針 */iph6 = ipv6_hdr(skb);if (!iph6)return NF_ACCEPT;/* 過濾 ::/128 空類型地址 */if (ipv6_addr_any(&iph6->saddr) || ipv6_addr_any(&iph6->daddr))return NF_ACCEPT;/* 過濾源地址和目的地址相等的報文 */if (ipv6_addr_equal(&iph6->saddr, &iph6->daddr))return NF_ACCEPT;/* 過濾環回地址報文 ::1/128 */if (ipv6_addr_loopback(&iph6->saddr) || ipv6_addr_loopback(&iph6->daddr)) return NF_ACCEPT;/* 只處理UDP報文 */ if (iph6->nexthdr != NEXTHDR_UDP)return NF_ACCEPT;/* 設置傳輸層首部 */skb_set_transport_header(skb, sizeof(struct ipv6hdr));/* 獲取UDP首部 */udph = udp_hdr(skb);if (!udph )return NF_ACCEPT;/* 更改端口 */ udph->source = htons(6666); /* 重新計算校驗和 * IPv6校驗和計算使用 csum_ipv6_magic() 接口* IPv4校驗和計算使用 csum_tcpudp_magic() 接口*/ udph->check = 0; udp_len = ntohs(udph->len); skb->csum = csum_partial(skb_transport_header(skb), udp_len, 0);udph->check = csum_ipv6_magic(&iph6->saddr, &iph6->daddr, udp_len, IPPROTO_UDP, skb->csum); skb->ip_summed = CHECKSUM_NONE;/* 如果udp首部校驗和為0,替換成CSUM_MANGLED_0 */if (0 == udph->check)udph->check = CSUM_MANGLED_0;/* 替換完成,把報文還給系統協議棧繼續處理 */return NF_ACCEPT; }struct nf_hook_ops nfdemo_hook_ops[] ={{.hook = nfdemo_input_hook_v6, /* 鉤子處理函數 */.pf = NFPROTO_IPV6, /* 協議類型IPv6 */.hooknum = NF_INET_PRE_ROUTING, /* Pre_Routing鏈 */.priority = NF_IP_PRI_FIRST + 20, /* 優先級 */},{.hook = nfdemo_output_hook_v6, /* 鉤子處理函數 */.pf = NFPROTO_IPV6, /* 協議類型IPv6 */.hooknum = NF_INET_PRE_ROUTING, /* Post_Routing鏈 */.priority = NF_IP_PRI_FIRST + 20, /* 優先級 */},{} };/* 模塊入口 */ static int __init nfdemov6_init(void) {printk("nfv6demo init \r\n");/* 注冊 Netfilter 鉤子函數 */nf_register_hooks(nfdemo_hook_ops,ARRAY_SIZE(nfdemo_hook_ops)); return 0; }/* 模塊出口 */ static void __exit nfdemov6_exit(void) {printk("nfv6demo exit \r\n");/* 注銷 Netfilter 鉤子函數 */nf_unregister_hooks(nfdemo_hook_ops,ARRAY_SIZE(nfdemo_hook_ops)); return ; }module_init(nfdemov6_init) module_exit(nfdemov6_exit) MODULE_LICENSE("GPL"); MODULE_AUTHOR("Mason");

代碼在本機編譯、運行通過。

調試遇到一個bug,地址替換直接使用128,IPv6地址 長度為40字節128位,導致直接覆蓋后面內容,悲催

當然啦,聰明的你應該不會出現這樣的錯誤

//正確的做法 memcpy(remote_ip.in6, &iph6->saddr, sizeof(struct in6_addr));//錯誤的做法 memcpy(remote_ip.in6, &iph6->saddr, 128);

有問題歡迎提出來

またね

總結

以上是生活随笔為你收集整理的使用 netfilter 处理IPv6报文的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一本色道久久88综合无码 | 国产91嫩草| 亚洲精品久久久久久久久久久 | 自拍视频在线播放 | 久久精品99国产 | 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 人人澡人人干 | 99中文字幕 | 亚洲熟妇无码爱v在线观看 九色福利 | 午夜影院免费看 | 亚洲精品一区三区三区在线观看 | 大乳村妇的性需求 | 国产精品12区 | 亚洲国产剧情 | 日韩最新av| 91视频污在线观看 | 亚洲精品国产视频 | 亚洲porn| 欧美福利一区二区 | 欧美草逼网 | 四季av日韩精品一区 | 在线h网| av激情在线观看 | 色婷婷综合激情 | 中文字幕一区二区av | 麻豆国产一区二区三区 | 日本在线一区二区三区 | 一区二区不卡视频在线观看 | 超碰人人人人人人 | 人人草人人看 | 亚洲欲| 激情视频亚洲 | 一区二区三区在线视频观看 | 毛毛毛片 | 无码精品在线观看 | 比利时xxxx性hd极品 | www.五月激情 | 叶爱在线 | 成人国产综合 | 老司机精品视频在线 | 色偷偷av | 日本少妇bbb| 香蕉久久精品日日躁夜夜躁 | 国产五区 | 婷婷丁香六月天 | 日韩播放 | 狠狠干网址 | 五月综合激情日本mⅴ | 老地方在线观看免费动漫 | 在线观看日本网站 | 国产精品二区视频 | 天天干天天天天 | 催眠调教后宫乱淫校园 | 国产不卡精品视频 | 精品人妻无码一区二区三区 | 中文字幕一级片 | 亚洲欧美日韩精品永久在线 | 国产怡红院 | 欧美激情二区三区 | 成人精品一区二区三区中文字幕 | 婷婷色图 | 久久国产乱子 | 欧美日韩黄色片 | 亚洲一区 中文字幕 | 国产在线观看无码免费视频 | 女人张开腿让男人桶爽 | 福利网站在线观看 | 国产无码精品合集 | 西比尔在线观看完整视频高清 | 毛片在哪看| 丰满少妇在线观看资源站 | 午夜毛片电影 | 国产视频一区二区不卡 | 国产熟女高潮视频 | 美日韩精品一区二区 | 禁漫天堂黄漫画无遮挡观看 | 天天摸日日 | 黄av网站| 青青草原国产在线观看 | 69免费视频 | 在线亚洲色图 | 国模大尺度自拍 | 嫩草影院懂你的 | 成年人在线观看 | 午夜67194 | 欧美骚少妇 | 亚洲一区二区三区在线观看视频 | 男人影院在线观看 | 美女视频免费在线观看 | 欧美做爰全过程免费看 | 免费在线观看的av | 男人桶女人桶爽30分钟 | 国产一区二区不卡视频 | 亚洲欧美一区二区三区久久 | 激情午夜天 | 男女激情网站 | 国产欧美一区二区三区在线老狼 | 天天综合久久 | 神马一区二区三区 |