c-我可以用Tun/Tap接口ping吗



我正在学习tuntap接口的路由。。。我创建了一个tun0接口,在不同的子网上用ifconfig命令配置了Ip地址,并用Ip路由命令添加了网关,我还使用了伪装规则。。。我的疑问是,我能用tuntap接口ping吗?或者它们只用于路由流量,或者我对这些接口不了解,或者可能配置错误。。

也许这个问题听起来像我是新手,但请给我正确的方向。。

Ok Gerhardh,

编辑:我创建了这样的tun-dev:

int tun_dev_alloc()
{
struct ifreq ifr;
int tun_dev_fd , ioctl_err;
if((tun_dev_fd = open("/dev/net/tun",O_RDWR)) < 0)
{
perror("Can't open /dev/net/tun");
return tun_dev_fd;
}
memset(&ifr,0,sizeof(ifr));
ifr.ifr_flags = IFF_TUN | IFF_NO_PI;
strncpy(ifr.ifr_name,TUN_DEV,IFNAMSIZ);

if((ioctl_err = ioctl(tun_dev_fd, TUNSETIFF, (void*) &ifr)) < 0)
{
perror("ioctl[TUNSETIFF]");
close(tun_dev_fd);
return ioctl_err;
}
return tun_dev_fd;
}

此tun0设备的配置:

$sudo ifconfig tun0 10.0.3.4/24 mtu 1500 up
$sudo ip route add default gateway via 10.0.3.10 dev tun0
$sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

现在ping响应:

ping  8.8.8.8 -I tun0
ping: Warning: source address might be selected on device other than tun0.
PING 8.8.8.8 (8.8.8.8) from 10.0.2.15 tun0: 56(84) bytes of data.
^C
--- 8.8.8.8 ping statistics ---
20 packets transmitted, 0 received, 100% packet loss, time 1028ms

任何帮助都将不胜感激。。。

标准网络接口背后有一块硬件(网卡(。

Tuntap不要:

https://www.kernel.org/doc/Documentation/networking/tuntap.txt

tl;dr:发送到tuntap接口的数据包被移交给用户空间程序进行处理。这个程序以某种方式扮演网卡的角色(例如:openvpn(。除非有一个程序将数据包从设备中取出,并用它们做一些有意义的事情,否则它们将消失在空白中(就像断开电缆的网卡(。

最新更新