cnetwork-programmingroutesvpntun

Can I ping with Tun/Tap interface


I am learning routing with tuntap interfaces... and I had created a tun0 interface and configured Ip address with ifconfig command on different subnet and adding the gateway with ip route command and I have also used masquerading rule ... my doubt is can i ping with tuntap interface or they are only used to route the traffic or something I don't know about these interface or may be misconfiguration..

May be this question sounds me new bie and I am but give please give me correct direction..

Ok Gerhardh,

Edit: I had created tun dev like this:

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;

}

configuration of this tun0 device:

$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

and ping response now:

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

Any help would be appreciated...


Solution

  • Standard network interfaces have a piece of hardware behind them (a network card).

    Tuntap don't:

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

    tl;dr: packets sent to a tuntap interface are handed over to a user-space program for processing. This program takes on the role of the network card in some way (example: openvpn). Unless there is a program taking packets out of the device and doing something meaningful with them, they will vanish into the void (like a network card with a disconnected cable).