日韩性视频-久久久蜜桃-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报文的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 精品久久免费 | av操操操| 91网址在线播放 | 在线观看亚洲专区 | 欧美二区在线观看 | 免费古装一级淫片潘金莲 | 青青青免费在线 | 在线亚洲免费 | 骚av在线| 好男人在线视频 | 亚洲色图图片 | 精品国产毛片 | 爱爱视频日本 | 中文字幕在线视频播放 | 99国产揄拍国产精品 | 人妻互换一区二区激情偷拍 | 69色综合 | 国产精品人人做人人爽 | 亚洲一区二区三区视频在线 | 亚洲一区精品在线 | 中文字幕黄色av | 猛男被粗大男男1069 | 亚洲一区二区三区高清视频 | 欧美亚韩一区二区三区 | 极度诱惑香港电影完整 | 国产又黄又粗又猛又爽视频 | 成人看片黄a免费看视频 | 中文字幕日韩无 | 国产成人av一区二区三区不卡 | 成人三级黄色片 | 亚洲成人免费网站 | 国产一区伦理 | 国产精品1区2区3区 在线看黄的网站 | 青青草国内自拍 | 精品少妇白浆小泬60P | 涩涩涩涩涩涩涩涩涩 | 日韩在线欧美 | 欧美在线激情视频 | 国产区二区 | 日产亚洲一区二区三区 | 男人天堂视频在线观看 | 波多野结衣精品 | 夜色视频在线观看 | 性生活三级视频 | 日韩一级影片 | 手机看片久久 | 开元在线观看视频国语 | 亚洲美女福利视频 | 雷电将军和丘丘人繁衍后代视频 | 久久国产毛片 | 欧美精品免费在线 | 美女的隐私免费看 | 古典武侠av | 麻豆视频网页 | 亚洲无人区小视频 | 国产69精品久久久久久久 | 四虎影成人精品a片 | 亚洲无码乱码精品国产 | 国产毛片aaa | 亚洲欧美综合在线观看 | 无码精品人妻一二三区红粉影视 | 影音先锋伦理片 | 91丨九色丨国产 | 台湾佬美性中文娱乐网 | 成人免费看毛片 | 这里只有精品6 | 粉色午夜视频 | 色屁屁一区二区三区视频 | 僵尸叔叔在线观看国语高清免费观看 | 97人人在线| av动漫天堂| 亚洲精品影院在线 | 欧美日韩精品网站 | 一区二区视频在线 | 午夜之声l性8电台lx8电台 | 伊人春色在线 | 不卡影院 | 亚洲AV无码AV吞精久久中文版 | 风间由美一区二区三区 | 污污视频在线免费观看 | www.在线| 粉嫩av| 免费人成又黄又爽又色 | 日韩精品一区在线播放 | 椎名空在线播放 | av大帝| 国产精品福利在线 | 久操中文| 97超碰资源站 | 天天添天天射 | 亚洲专区在线视频 | 欧美性欧美zzzzzzzzz | 黄污视频在线观看 | 四虎影视成人永久免费观看亚洲欧美 | 日韩av网站在线播放 | 欧美日一区二区三区 | 16—17女人毛片 | 日日躁夜夜躁白天躁晚上躁91 | 精品国产三级 |