是否可以使用TUN/TAP接口測試TCP堆棧? 我想的機制是這樣的:用TUN/TAP測試用戶空間TCP/IP堆棧
+--------------------------------+
| TCP Client/Server |
| socket(AF_INET, SOCK_STREAM) |
| e.g. HTTP Server/Client |
+----------+---------------------+
|
| +---------------------+
| | TUN Device |
| | (kernel does TCP) |
| +---------------------+
|
+------------+----------------------+
| Linux Kernel + Forwarding Magic |
+-----------------------------------+
|
| +---------------------+
| |TAP Device |
| |Raw ethernet frames |
| +---------------------+
|
+----------+----------------------+
| Raw Socket API |
| socket(AF_PACKET, SOCK_RAW) |
| User mode TCP Stack over raw API|
| a HTTP client/server over it |
+---------------------------------+
的機頂盒,就是(說)的標準未修改的HTTP服務器,監聽某個IP地址, 已經排到TUN設備。 底部框是一個自定義TCP/IP堆棧,它在原始以太網幀上工作。
問題:
- 是否可以連接兩個TAP/TUN設備背靠背這樣 ?
- 這裏需要'橋'嗎?他們怎麼說 背靠背?
- 最後:有沒有更好的方法來做到這一點?
Thanx提前。 PS:我要在同一臺機器上運行所有這些程序。 '盒子'更像是過程,設定或過程。
事實證明,我實際上並不需要創建兩個設備。這是一組可以演示獲取原始數據包的命令: #socat STDOUT TUN:10.0.0.1/24,up; #ping 10.0.0.2 – vrdhn