问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

CentOS如何添加tun

发布网友 发布时间:2022-04-15 18:50

我来回答

1个回答

热心网友 时间:2022-04-15 20:19

tun是虚拟网卡模块,作用是把报文拦截转发给对应的进程。需要有程序主动打开/dev/net/tun, 并用ioctl进行设置才能用的。

这里有个使用源自网络的例子:

#! /usr/bin/env python

#############################################################################
## ##
## tunproxy.py --- small demo program for tunneling over UDP with tun/tap ##
## ##
## Copyright (C) 2003 Philippe Biondi <phil@secdev.org> ##
## ##
## This program is free software; you can redistribute it and/or modify it ##
## under the terms of the GNU General Public License as published by the ##
## Free Software Foundation; either version 2, or (at your option) any ##
## later version. ##
## ##
## This program is distributed in the hope that it will be useful, but ##
## WITHOUT ANY WARRANTY; without even the implied warranty of ##
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ##
## General Public License for more details. ##
## ##
#############################################################################

import os, sys
from socket import *
from fcntl import ioctl
from select import select
import getopt, struct

MAGIC_WORD = "Wazaaaaaaaaaaahhhh !"

TUNSETIFF = 0x400454ca
IFF_TUN = 0x0001
IFF_TAP = 0x0002

TUNMODE = IFF_TUN
MODE = 0
DEBUG = 0

def usage(status=0):
print "Usage: tunproxy [-s port|-c targetip:port] [-e]"
sys.exit(status)

opts = getopt.getopt(sys.argv[1:],"s:c:ehd")

for opt,optarg in opts[0]:
if opt == "-h":
usage()
elif opt == "-d":
DEBUG += 1
elif opt == "-s":
MODE = 1
PORT = int(optarg)
elif opt == "-c":
MODE = 2
IP,PORT = optarg.split(":")
PORT = int(PORT)
peer = (IP,PORT)
elif opt == "-e":
TUNMODE = IFF_TAP

if MODE == 0:
usage(1)

f = os.open("/dev/net/tun", os.O_RDWR)
ifs = ioctl(f, TUNSETIFF, struct.pack("16sH", "toto%d", TUNMODE))
ifname = ifs[:16].strip("\x00")

print "Allocated interface %s. Configure it and use it" % ifname

s = socket(AF_INET, SOCK_DGRAM)

try:
if MODE == 1:
s.bind(("", PORT))
while 1:
word,peer = s.recvfrom(1500)
if word == MAGIC_WORD:
break
print "Bad magic word for %s:%i" % peer
s.sendto(MAGIC_WORD, peer)
else:
s.sendto(MAGIC_WORD, peer)
word,peer = s.recvfrom(1500)
if word != MAGIC_WORD:
print "Bad magic word for %s:%i" % peer
sys.exit(2)
print "Connection with %s:%i established" % peer

while 1:
r = select([f,s],[],[])[0][0]
if r == f:
if DEBUG: os.write(1,">")
s.sendto(os.read(f,1500),peer)
else:
buf,p = s.recvfrom(1500)
if p != peer:
print "Got packet from %s:%i instead of %s:%i" % (p+peer)
continue
if DEBUG: os.write(1,"<")
os.write(f, buf)
except KeyboardInterrupt:
print "Stopped by user."
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...频数和频率成正比,2频数一定时,频率与总次数成反比,对不对_百度... ...总次数之间的关系是( ) A.频数越大,频率越大 B.总次数一定时,频数越... 实验的总次数、频数及频率三者的关系是( )A.频数越大,频率越大B.频数... 嘎牙鱼的做法大全 安无线网要用多少元网费要交多少元不用用了要不要交网费,想寻求大家的... 无线网费1年多少钱 "Hbr"作为“港”的缩写,其在英语中的使用频率和应用示例如何? 【车主点评:吉利汽车帝豪GL 使我荣华富贵】 请问,如果,家用,自动挡,帝豪gl,英朗,科沃兹,卡罗拉,轩逸,同等价位,建议... ...景点?既能休闲的时候看看又能长点知识@@谢谢各位了! 360儿童手表App的应用商城怎么只有三个应用这是怎么回事&#xFFFC;? 炸排骨用几成油温,然后炸多久才熟? 为什么说” 货币是商品交换发展的产物,但同时也促进了商品经济的发展”? 怎样理解推动货币形态演变的根本原因是商品经济的发展? 如何理解货币是商品经济关系的表现形式? 为什么说货币是商品经济内在矛盾的产物 杰尼斯有哪些广播节目 相声大腕齐聚天津,姜昆、杨少华受邀,却不见郭德纲,难道他们在密谋什么? 西瓜视频别人发搞笑小品可以 ,我是二次剪辑做好的,审核也通过了,播放量20万,第二天却告知违规下架 羊角书瓜种植技术视频 《唐人街探案3》的定档,暴露了陈思诚佟丽娅什么目的? 董哥太丑了里面的刘大美是谁 小心购车误区!盛世昊通董车长项目到底是什么样 我的董瓜为什公老化瓜?花总是不鲜,还需i要添加保鲜的东西吗?怎样区别黄瓜受粉浓度的大J小,谢谢。 大学校花董某婷是什么瓜? 植物细胞的三大特征是什么? 中秋节手抄报中秋节手抄报中秋节手抄报 慕金和ulike脱毛仪那个好用? 中秋节手抄报团圆应用什么色 ulike脱毛仪飞利浦那个好? 老吉普212 车钥匙怎么拨 带方向助力吗吉普212车 吉普2020是什么车?是以前的212车型吗? 北京212吉普车是不是已经限量了 一小时收割小麦1.6公顷,平均收割1公顷需要多少小时? 一块平行四边形稻田底长250米高是80米收稻谷15吨这块稻田共有多少公顷?平均每公顷收稻谷? 周长是160米的正方形菜地,它的占地面积是1.6公顷.( ) 一台收割机0.5小时收割小麦O.8公顷,平均每小时收割(1.6)公顷,平均收割一公顷需要多少小时? 学校操场改建后由长方形变成了正方形 长缩短了8米 宽缩短了2米 它的面积减少了1216平方米 一个生态园种植了1.2公顷草莓比种植蔬菜的4倍少0.4公顷这个生态园种了多少公? 5小时能收割1.6公顷到字平均每小时收割多少公顷豆子? 16000平方米等于多收公顷 关于树的励志句子 一句话 里的“铁树开花”是什么意思 发现极速版怎么打不开 发现极速版怎么玩 给别人注册发现极速版有影响吗 为什么我的快手图标是浅黄色的了? 荣耀60极速版是什么意思 跳绳极速版和普通的有什么区别