网络拓扑一:替换内核网络协议栈
1 | +----------+ |
通过网桥连通本地网络eth0和虚拟网络tap0
区别
- 本地网络作为网关
- 不支持重定向
- 路由初始化,下一跳为TAP的IP
- 如果下一跳不可达,需要返回Code 0 (Network Unreachable) ICMP报文(RFC 1812)
- 虚拟网络设备额外初始化过程
ifconfig
命令特殊提示
脚本
- 创建网络设备
tap0
简要输出接口名到垃圾桶 - 创建网桥设备
br0
- 配置网桥通过
br0
连通eth0
tap0
- 将
eth0
tap0
br0
加入本地网络并启动
WARNING
谨慎使用该模式,内核协议栈会被挂起,网络由用户态接管。
如果是远程登录使用TOP1可能会导致断连,无法继续使用。
建议直接使用串口同真实机器交互,以方便恢复原网络拓扑。
网络拓扑二:虚拟设备与核心交互
1 | localhost outside network |
local -> tap0(10.0.0.2) -> veth0(10.0.0.1)
交互
1 | +-------------------[Linux kernel TCP/IP stack]---------------------+ |
arping
命令进程向内核发起寻址请求- 内核将请求包路由至
tap0
设备 - 经虚拟网络设备交换至用户态协议栈
tapip
处理 - 寻址结果返回设备
tap0
,经内核返回arping
命令进程显示
Linux虚拟网络设备之tun/tap
user-mode TCP/IP stack based on linux tap device