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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

实现socket监听所有网络命名空间

發布時間:2023/12/18 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现socket监听所有网络命名空间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
當前Linux內核的實現,一個socket監聽在一個特定的網絡命名空間中,不同的命名空間可有具有相同的socket,即可監聽相同的地址端口,這樣很好的實現網絡隔離虛擬化的功能。但是對于網路設備來說,并不需要如此完全的隔離。比如VPN設備/路由器等,一個ike進程或者quagga進程能監聽在所有的命名空間,更利于實現和管理。

這樣就要求應用層socket能夠接收到所有命名空間的數據包,并且能夠感知當前連接的命名空間。


數據包接收

內核默認創建一個網絡命名空間(init_net),起初所有的socket都監聽在默認的網絡命名空間。要能夠接收其它命名空間的數據包,需要修改sock查找函數。在一個新的連接請求進來之后,查找監聽sock時(__inet_lookup_listener),內核默認僅在接收數據包所在的命名空間查找。修改為在找不到的情況下,去init_net命名空間查找,此時,監聽在init_net的socket就能接收到新的連接了。


sk = __inet_lookup_listener(dev_net(dev), hashinfo, saddr, sport, daddr, hnum, dif, flags); if (!sk) {sk = __inet_lookup_listener(&init_net, hashinfo, saddr, sport, daddr, hnum, dif, flags); }


以上是TCP的sock查找修改,對于UDP可做相同的修改。


數據包發送

sock的查找修改之后已經可以接收到新的連接請求,但是并沒有修改sock結構中的sk_net的值,其還是init_net(socket總監聽在此命名空間),不能使用其查找路由。如要能正常回復此連接請求(SYN+ACK),我們的sock需要使用接收到數據包的接口所在net_namespace的路由。所以在請求路由時,使用接收命名空間查找:


static inline struct net *sock_net(const struct sock *sk) {return read_pnet(&sk->sk_net); } struct dst_entry *inet_csk_route_req(struct sock *sk, struct flowi4 *fl4, const struct request_sock *req) {rt = ip_route_output_flow(skb_real_net, fl4, sk); }


發送連接建立之后正常的數據包涉及到的也是路由問題,如何告訴內核代碼要在哪個命名空間發送?此時需要在創建子sock的時候,把真正的接收命名空間保存在子sock中。在發送時使用。例如ip_queue_xmit函數,查詢路由時使用真正的child_sk_real_net去查:


int ip_queue_xmit(struct sk_buff *skb, struct flowi *fl) {rt = ip_route_output_ports(child_sk_real_net, fl4, sk, daddr, inet->inet_saddr,inet->inet_dport, inet->inet_sport, sk->sk_protocol, RT_CONN_FLAGS(sk), sk->sk_bound_dev_if); }


方能找到正確的出口路由,正常發送數據包。實現應用層socket監聽多個網絡命名空間。



總結

以上是生活随笔為你收集整理的实现socket监听所有网络命名空间的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产女女做受ⅹxx高潮 | 婷婷九月 | 瑟瑟综合网 | 成年人的黄色片 | av免费在线网站 | 中文av一区二区三区 | 午夜激情久久 | 国产在线一区二区三区四区 | 99r精品视频 | 国产亚洲精品网站 | 亚洲精品美女网站 | 黄色电影在线视频 | 看污网站 | heyzo在线播放 | 3d动漫精品啪啪一区二区免费 | 新版红楼梦在线高清免费观看 | 怨女1988国语版在线观看高清 | 成都4电影免费高清 | 国产精品一区在线看 | 天堂а在线中文在线新版 | 激情一级片 | 国产a国产 | 女同一区二区三区 | 亚洲视频手机在线 | 97超碰碰碰 | 成人在线影片 | 少妇久久久久久久久久 | 99热99re6国产在线播放 | 欧美人妻一区二区 | 在线不卡 | 四虎网址在线观看 | 亚洲8888| 秋霞在线视频观看 | 欧美比基尼 | 黄色a一级 | 青娱乐久久 | 国产一区二区三区18 | 欧美伦理一区二区三区 | 91精东传媒理伦片在线观看 | 午夜影院入口 | 伊人天堂在线 | 中文字幕视频网 | 亚洲 欧美 日韩 国产综合 在线 | 操人网 | 国产美女免费网站 | 日韩一级片av | 人人干美女| 少妇在线观看 | 欧美久久久 | 日韩网站在线播放 | 北条麻妃一区二区三区免费 | 久久精品视频2 | 亚洲精品一区二区三区在线观看 | 一区久久| 在线免费黄色av | 亚瑟av在线 | 成人毛片网 | 免费看一级黄色大全 | 亚洲第一成人av | 久青草资源福利视频 | 狠狠躁天天躁综合网 | 亚洲人成网站999久久久综合 | 久久精品国产亚洲av蜜臀色欲 | 中文字幕精品三级久久久 | 成年人免费观看网站 | 91香蕉国产在线观看软件 | 日韩综合另类 | 国产精品伦子伦免费视频 | 天堂新版8中文在线8 | 激情久久免费视频 | 国产精品 欧美精品 | 日韩欧美在线一区二区三区 | 日韩在线激情视频 | 国产亚洲精品久久久久久777 | 麻豆国产视频 | 一本色道久久综合亚洲精品酒店 | 麻豆av影院 | jzzijzzij亚洲成熟少妇在线播放 狠狠躁日日躁夜夜躁2022麻豆 | 日本少妇xxxx软件 | 亚洲一区中文字幕在线 | 亚洲AV综合色区国产精品天天 | 天堂网在线播放 | 国产精品视频在线看 | 麻豆影视 | 国产精品国产三级国产普通话蜜臀 | 国产白浆视频 | 性色视频 | 榴莲视频黄色 | 天天干天天看 | 中日韩在线 | 免费日韩视频 | 天堂91| 国产国语性生话播放 | 精品777 | 成人在线看片 | 加勒比不卡视频 | 亚洲综合社区 | 乱色精品无码一区二区国产盗 | 亚洲黄视频|