【发布时间】:2021-08-15 09:30:48
【问题描述】:
我正在学习使用 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
任何帮助将不胜感激......
【问题讨论】:
-
您似乎在使用 shell 命令来完成这些任务。我没有看到您问题的任何与编程相关的部分。我想,SuperUser 或 Unix&Linux 会比 StackOverflow 更适合这个问题。另外请不要添加与您的问题无关的标签。根本不涉及 C。
-
@Gerhardh no no 实际上我是通过从 /dev/net/tun 打开 fd 并使用命令进行所有配置来创建 tun0 设备
-
在这种情况下,你应该展示你做了什么。
-
@gerhardh 请检查编辑。
标签: c networking routes vpn tun