tun虚拟网卡没有安装_怎么使用TUN虚拟网卡实现ping请求转发?带你一文解决

文中部分内容,因为没有找到特别权威的资料,因此掺杂着不少个人的理解,如有错误,欢迎指出。

背景

由于个人的一些特殊需要,想要对自己mbp的流量进行内部分发,简单点描述就是部分直连、部分走公司VPN、部分走socks5代理。

调研了一下市面上的一些解决方案:

  1. PAC。配置较为简单方便,但是对于很多应用是无法走PAC的,尤其是终端应用
  2. mellow。不知道为什么,规则一旦配多了就会出现部分规则不生效的问题(没找到相应issue,可能是我哪里配置的有问题)
  3. surge。配置很方便,但是有三个问题,第一个问题是贵,第二个问题是dns解析显示的是surge内部的dns地址(这个理由倒是不打紧),第三个问题也是最重要的问题是,对其他VPN同时使用的情况支持不那么友好
  4. proxifier。不知道为什么,我的电脑用起来有时会卡卡的,有时还会出现网络混乱的情况

于是就想要自己实现一个网络流量分发的工具。

虚拟网卡TUN/TAP

关于网络流量分发这个问题,在网上看到了很多解法,我个人比较感兴趣的是使用TUN/TAP虚拟网卡来实现。由于能力有限,还处于学习过程中,因此本期就只实现了ping请求的转发。

简单描述一下,TUN/TAP是通过软件模拟的网络设备,提供与网络设备完全相同的功能。其中TAP模拟了以太网设备,即操作第二层数据包。TUN则模拟了网络层设备,即第三层数据包。

那么接下来我们就来看看我们如何来操作虚拟网卡,因为IP包简单,于是个人就选择了使用TUN设备。本文全部基于mac操作系统,以TUN设备为例,并使用python语言来编码。

对于macos而言,操作tun设备还是比较简单的,不过首先需要先安装TUN/TAP,

brew cask install tuntap

安装完后,就可以看到我们的/dev目录下多了如下一些文件: tap0 --- tap15、tun0 --- tun15

在linux中,是有所不同的,但是网上关于linux的TUN/TAP的资料还是比较丰富的,因此此处就不详解了。

接下来,就是如何操作tun设备,对于mac而言,整个操作十分简单,就和直接操作文件没什么两样,代码如下:

import osimport subprocessfrom scapy.layers.inet import *tun_fd = os.open('/dev/tun11', os.O_RDWR)subprocess.check_call('ifconfig tun11 192.168.7.1 192.168.7.2 up', shel
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值