[root@192 ~]# cat ./test
#! /bin/bash
A="a b c d"
B="c d e f"
C=${A}"---"${B}

文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣()

LINUX內核中Netfilter Hook的使用 作者:JuKevin

 
HookLinux Netfilter中重要技術,使用hook可以輕鬆開發內核下的多種網絡處理程序。下面簡單介紹一下hook及其使用。
1.      hook相關數據結構
 
文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣()

Linux netfilter源碼分析(1)

  • IP報文的接收到hook函數的調用

1.1  ip_input.c    ip_rcv()函數

以接收到的報文為例,類似的還有ip_forward(ip_forward.c)ip_output(ip_output.c)

int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev)
{

文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣()

string模組是Netfilter/iptables提供的一個字串比對模組,使用者可用來比對Layer7應用層上任何的字串,

本文就是利用此模組來比對HTTP通訊協定上的字串以達到限制網站存取的目的,所提供的參數如下所示:

--from:從那個位元處開始比對。
--to:從那個位元處結束比對。

lyt0112 發表在 痞客邦 留言(0) 人氣()

 

 

TUN 設備

TUN 設備是一種虛擬網絡設備,通過此設備,程序可以方便得模擬網絡行為。先來看看物理設備是如何工作的:

文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣()

iptables四個表與五個鏈間的處理關係

netfilter/iptables IP 信息包過濾系統是一種功能強大的工具,可用於添加、編輯和除去規則,這些規則是在做信息包過濾決定時,防火牆所遵循和組成的規則。這些規則存儲在專用的信息包過濾表中,而這些表集成在 Linux 內核中。在信息包過濾表中,規則被分組放在我們所謂的鏈(chain)中。

      雖然 netfilter/iptables IP 信息包過濾系統被稱為單個實體,但它實際上由兩個組件 netfilter 和 iptables 組成。

      netfilter 組件也稱為內核空間(kernelspace),是內核的一部分,由一些信息包過濾表組成,這些表包含內核用來控制信息包過濾處理的規則集。

文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣()

arp_announce和arp_ignore這兩個參數,顧名思義arp_announce和arp_ignore是和ARP協議(Address Resolution Protocal,地址解釋協議)有關的。

arp_announce參數是定義linux主機發送ARP請求數據包時如何選擇數據包中使用的發送方IP地址(即Sender IP address)。在系統準備通過網卡發送一個IP數據包前,該IP數據包的源IP地址和目標IP地址通常是已經知道的,同時發送的網卡也已經確定,那數據鏈路層的源MAC地址當然也確定了,最後剩下的就是確定數據鏈路層的目標MAC地址了,而該目標MAC地址就需要通過ARP地址解釋協議來獲取,於是系統首先需要發送ARP請求數據包獲取目標MAC地址。結合上面關於ARP原理的描述,我們知道,發送ARP請求數據包時需要包含發送方IP地址,該IP地址應該是什麼呢?大家可能想當然的以為就是要發送的IP數據包的源IP地址,其實這個是不一定的,尤其是主機有多個網絡接口和IP地址時,而arp_announce正是控制該發送方IP地址的選擇條件的。arp_announce參數的取值分別是0、1、2,這些取值的意義如下:
0(默認值)-- 允許使用任一網絡接口配置的IP地址(即任一本地地址),通常就是待發送的IP數據包的源IP地址。
1 -- 盡量避免使用不屬於該網絡接口(即發送數據包的網絡接口)子網的本地地址作為發送方IP地址。根據我對官方原文的理解,就是說如果主機包含多個子網,而IP數據包的源IP地址屬於其中一個子網,雖然該IP地址不屬於本網口的子網,但是也可以作為ARP請求數據包的發送方IP地址,否則就會按照取值為2的方式選擇發送方IP地址。
2 -- 忽略IP數據包的源IP地址,總是選擇網口所配置的最合適的IP地址作為ARP請求數據包的發送方IP地址(一個網口可能會配置多個IP地址)。

文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣()

macvlan 簡介

macvlan 是 linux kernel 比較新的特性,可以通過以下方法判斷當前系統是否支持:

$ modprobe macvlan
$ lsmod | grep macvlan
  macvlan    19046    0

如果第一個命令報錯,或者第二個命令沒有返回,則說明當前系統不支持 macvlan,需要升級系統或者升級內核。

macvlan 允許你在主機的一個網絡接口上配置多個虛擬的網絡接口,這些網絡 interface 有自己獨立的 mac 地址,也可以配置上 ip 地址進行通信。macvlan 下的虛擬機或者容器網絡和主機在同一個網段中,共享同一個廣播域。macvlan 和 bridge 比較相似,但因為它省去了 bridge 的存在,所以配置和調試起來比較簡單,而且效率也相對高。除此之外,macvlan 自身也完美支持 VLAN。

如果希望容器或者虛擬機放在主機相同的網絡中,享受已經存在網絡棧的各種優勢,可以考慮 macvlan。

文章標籤

lyt0112 發表在 痞客邦 留言(0) 人氣()

«12
Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼