成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux socket設置mark的必要性

系統 Linux
Linux的Netfilter鉤子點的位置會導致一些奇怪的問題,比如本機發出的包無法使用基于mark的策略路由,這是因為mark一般是在Netfilter中進行的,而Linux的路由處在OUTPUT鉤子點之前,因此這是一個順序倒置的問題,如何來解決呢?只能在路由之前打上mark,而我們知道,對于外部進入的包,mark是在PREROUTING進行的,因此對于外部進入的包,策略路由是好使的,對于本機發出的包,路由之前只能是socket層了,那為何不能在傳輸層做呢?因為一來傳輸層比較雜,二來很多協議直接走到IP層,比如OSPF之類的,三來很多傳輸層協議也需要路由查找,比如TC

Linux的Netfilter鉤子點的位置會導致一些奇怪的問題,比如本機發出的包無法使用基于mark的策略路由,這是因為mark一般是在Netfilter中進行的,而Linux的路由處在OUTPUT鉤子點之前,因此這是一個順序倒置的問題,如何來解決呢?只能在路由之前打上mark,而我們知道,對于外部進入的包,mark是在PREROUTING進行的,因此對于外部進入的包,策略路由是好使的,對于本機發出的包,路由之前只能是socket層了,那為何不能在傳輸層做呢?因為一來傳輸層比較雜,二來很多協議直接走到IP層,比如OSPF之類的,三來很多傳輸層協議也需要路由查找,比如TCP在connect的時候就需要查找路由以確定源IP地址(如果沒有bind的話)。

幸運的是,Linux的socket支持SO_MARK這樣一個option,可以很方便的使用:

mark = 100;

setsockopt(client_socket, SOL_SOCKET, SO_MARK, &mark, sizeof(mark));

1.對TRACK的影響

雖然raw表是數據包經過的第一個表,使用SO_MARK仍然可以在整個raw表起作用之前做點mark,從而使得一個特定socket發出的包統統NOTRACK:

iptables -t raw -A OUTPUT -m mark --mark 100 -j NOTRACK

如果不這樣的話,就需要:

iptables -t raw -A OUTPUT [-s xxxx] [-d yyyy] [-p tcp|udp [--sport X] [--dport Y] ... -j MARK --set-mark 100

...[一大堆和上面類似的規則]

iptables -t raw -A OUTPUT -m mark --mark 100 -j NOTRACK

正如在PREROUTING上的raw表需要做的那樣。我們得意于OUTPUT上面是socket,是應用程序的世界,而PREROUTING以下則是內核以及驅動的世界了,后者太雜太亂,不便做更多的事,而前者則是我們可以掌控的范圍。

2.對策略路由的影響

SO_MARK最大的受益者就是策略路由了,如果我們這是以下的路由:

ip rule add fwmark 100 table abc

ip route add 1.2.3.4/32 via 192.168.0.254 table abc

ip route del 1.2.3.4/32 table main

不設置SO_MARK的情況下,所有的訪問1.2.3.4的流量將因為沒有路由而被丟棄,因為在進入PREROUTING前首先要查找路由,而此時還沒有打上mark,因而不會匹配到abc策略表中的那條路由,而main表中的對應路由我們已經刪除了...但是如果我們在應用程序中加入:

mark = 100;

setsockopt(client_socket, SOL_SOCKET, SO_MARK, &mark, sizeof(mark));

訪問就可以正常了,因為在查找路由的時候,已經有這個mark了。

【編輯推薦】

  1. Linux之父訪談 諾基亞不該死磕WP發展安卓更好
  2. 詳解四種級別Linux服務器入侵地
  3. 微軟Azure平臺上的Linux服務
責任編輯:Yeva 來源: Linux社區
相關推薦

2023-05-31 10:02:29

人工智能

2014-02-17 09:37:31

亞馬遜WorkSpacesVDI

2009-12-11 09:36:02

PHP數據緩存類

2011-11-08 21:19:25

2018-10-17 10:46:54

區塊鏈互操作性比特幣

2011-06-14 10:20:20

URL標準化

2023-09-14 15:58:34

C++表達式

2022-02-13 00:29:57

云安全云計算安全

2010-06-24 16:38:20

綜合布線

2024-08-29 15:14:52

2011-12-13 20:36:26

Android

2020-05-20 07:00:00

DevOps端點檢測網絡攻擊

2021-01-21 21:07:03

信息安全漏洞治理

2015-04-16 14:00:55

新浪云SAE序列化

2009-09-01 16:20:27

C#單元測試

2021-10-24 08:39:07

攻擊面管理網絡攻擊黑客

2017-12-12 10:45:50

機房空調防雷

2010-12-28 09:29:00

2021-03-26 11:40:03

加密貨幣比特幣貨幣

2021-11-09 10:49:00

云計算零信任安全網絡安全
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日夜精品视频 | 99精品视频免费观看 | 亚洲三区在线观看 | 九九久久久久久 | 欧美一级精品片在线看 | 国产视频一区二区在线观看 | 污视频免费在线观看 | 一本色道久久综合亚洲精品高清 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 国产日产精品一区二区三区四区 | 欧美一区二区三区久久精品 | 久热国产精品视频 | 97视频成人 | 欧美精品乱码久久久久久按摩 | 精品在线一区 | 国产精品久久久久久久免费观看 | 午夜视频一区 | 欧美精品三区 | 国产精品99久久久久 | 色一情一乱一伦一区二区三区 | 黄网站在线播放 | 久久久精品国产 | 亚洲精品一区二区三区在线 | 欧美一级黄色网 | 亚洲欧洲成人 | 麻豆成人在线视频 | 成人在线视频免费观看 | 久久久青草婷婷精品综合日韩 | 91资源在线| 色av一区二区三区 | 99reav| av一区二区三区四区 | 国产精品一区二区在线播放 | 国产精品久久久亚洲 | xx视频在线| 最新中文字幕在线 | 精品久久不卡 | 久久国产一区 | 国产一区二区三区视频免费观看 | 成人一区二区三区在线观看 | av在线免费观看网站 |