IP パケットを (ユーザー空間から) tun デバイスに送信することと raw ソケットを使用することの違いは何ですか?
ユーザー空間を介して IP パケットをトンネリングするため。なぜある方法を他の方法よりも使用するのでしょうか?
生のソケット:
s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
send(s, ip_pkt, len, 0);
チューン デバイス:
struct ifreq ifr;
fd = open("/dev/net/tun", O_RDWR);
ifr.ifr_flags = IFF_TUN;
ioctl(fd, TUNSETIFF, (void *) &ifr)
send(s, ip_pkt, len, 0);