我正在努力研究网络上的一些简单的tun / tap示例,并且遇到了一些麻烦。简而言之,我想:
我遇到了(3)和(4)的问题。 This tutorial说在较旧的Linux版本中你可以使用ping,但显然情况不再如此,所以我试图使用netcat。我的假设是我没有正确地发送数据 - 具体来说,netcat我必须瞄准一个特定的端口,所以我给它一个任意的端口以及tun接口的地址。
由于wireshark和两个程序都没有看到任何内容,我认为这是发送不正确的数据包。有没有更好的方法然后使用netcat?
the tun inferface:
$ ifconfig tun2
tun2 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.7.1 P-t-P:192.168.7.2 Mask:255.255.255.255
UP POINTOPOINT NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
写一些数据包,没有发现错误
$ echo -n 'fooooo' | nc 192.168.7.1 5555
$
$ echo -n `cat index.html` | nc 192.168.7.1 5555
$
Wireshark(和程序控制台)没有显示任何内容:
$sudo tshark -i tun2
....
我为(2)尝试了两个不同的代码,这两个代码都应打印出收到的数据包:
更新:
在上面的第二个链接中运行simpletun程序作为客户端和服务器,在同一台机器上运行我得到的服务器:
$ ./simpletun -i tun2 -s -d
Successfully connected to interface tun2
对于客户端(我认为可以在不同的机器上运行):
$./simpletun -i tun2 -c 192.168.7.1 -d
ioctl(TUNSETIFF): Device or resource busy
Error connecting to tun/tap interface tun2!
所以我很确定我正在打开tun2。
EDIT2:
我在虚拟机VM上使用ubuntu服务器执行此操作。一旦我在一台机器上运行它,我想尝试用第二台机器编写一个简单的UDP桥,两者都在tun接口上。
EDIT3:
环回
$ sudo tshark -i lo
[sudo] password for nflacco:
tshark: Lua: Error during loading:
[string "/usr/share/wireshark/init.lua"]:45: dofile has been disabled
Running as user "root" and group "root". This could be dangerous.
Capturing on lo
0.000000 192.168.7.1 -> 192.168.7.1 TCP 74 59584 > personal-agent [SYN] Seq=0 Win=32792 Len=0 MSS=16396 SACK_PERM=1 TSval=26444728 TSecr=0 WS=4
0.000019 192.168.7.1 -> 192.168.7.1 TCP 54 personal-agent > 59584 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
答案 0 :(得分:1)
是否有另一个系统连接在隧道tun2的另一端?
在ifconfig输出中注意RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
。确实没有通过该接口传输的数据包。确保该接口上有一些接收器。
e.g。如果您使用它进行虚拟化,请确保虚拟机已启动并且正在运行。准备接收数据包。如果您将此用于VPN或其他东西,请确保远程系统正在响应。
我使用了隧道接口进行虚拟化。 &安培;当VM启动时,它可以工作。运行
答案 1 :(得分:0)
尝试
echo -n 'fooooo' | nc 192.168.7.2 5555
您需要将流量发送到tun接口子网中的IP,而不是接口IP本身。如果将其发送到接口IP,则内核将不会通过网络将其发送,因为数据包已到达其目的地。