我可以用 Tun/Tap 接口 ping 吗
Can I ping with Tun/Tap interface
我正在学习使用 tuntap 接口进行路由...我已经创建了一个 tun0 接口并在不同的子网上使用 ifconfig 命令配置了 IP 地址,并使用 ip route 命令添加了网关,我还使用了伪装规则...
我怀疑我能否使用 tuntap 接口执行 ping 操作,或者它们仅用于路由流量或我对这些接口一无所知的东西,或者可能是配置错误..
可能这个问题听起来很新,但我是,但请给我正确的方向..
好的格哈德,
编辑: 我是这样创建 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 接口的数据包被移交给 user-space 程序进行处理。该程序以某种方式承担了网卡的角色(例如:openvpn)。除非有程序将数据包从设备中取出并对其进行有意义的处理,否则它们将消失在虚无中(就像网卡的电缆断开连接一样)。
我正在学习使用 tuntap 接口进行路由...我已经创建了一个 tun0 接口并在不同的子网上使用 ifconfig 命令配置了 IP 地址,并使用 ip route 命令添加了网关,我还使用了伪装规则... 我怀疑我能否使用 tuntap 接口执行 ping 操作,或者它们仅用于路由流量或我对这些接口一无所知的东西,或者可能是配置错误..
可能这个问题听起来很新,但我是,但请给我正确的方向..
好的格哈德,
编辑: 我是这样创建 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 接口的数据包被移交给 user-space 程序进行处理。该程序以某种方式承担了网卡的角色(例如:openvpn)。除非有程序将数据包从设备中取出并对其进行有意义的处理,否则它们将消失在虚无中(就像网卡的电缆断开连接一样)。