˥С TUN/TAP ǥХɥ饤
Copyright (C) 1999-2000 Maxim Krasnyansky <max_mk@yahoo.com>

  Linux, Solaris бɥ饤
  Copyright (C) 1999-2000 Maxim Krasnyansky <max_mk@yahoo.com>

  FreeBSD б TAP ɥ饤
  Copyright (c) 1999-2000 Maksim Yevmenkin <m_evmenkin@yahoo.com>

1. 
  TUN/TAP ǥХɥ饤ФϡѥåȤ륤󥿥ե
  桼ڡΥץ󶡤ޤ
  ΥǥХϡʪŪʥǥѥåȤ뤫
  桼ڡΥץफѥåȤʪŪʥǥͳ
  ѥåȤ뤫˥桼ڡΥץ˸ƥѥåȤ
  Τǡñ Point-to-Point ǥХ䥤ͥåȥǥХ
  Ʊ褦ʤΤȤƤߤʤȤǤޤ

  ץब /dev/net/tun 򥪡ץ󤹤ȡɥ饤Фб
  ͥåȥǥХ tunX ޤ tapX 쥸Ȥޤ
  ץब嵭ΥǥХ򥯥ȡɥ饤ФϼưŪ
  tunXX ޤ tapXX ǥХӤΥǥХ̿Ƥ
  ٤Ƥηϩ(route)ޤ

  Υѥå (http://vtun.sourceforge.net/tun) ˤϡtun ǥХ
  tup ǥХλȤ㼨դĤδñʥץबޤޤƤޤ
  (: ʸˤ°Ƥޤ)
  ɤΥץ⡢դĤΥͥåȥ󥿥ե֤
  (֥å)Τ褦ưޤ
  br_select.c - select ƥॳ١ˤ֥å
  br_sigio.c  - async io  SIGIO ʥ١ˤ֥å
  Ǥ⡢٥Ȥμ VTun http://vtun.sourceforge.net Ǥ :))  

2. 
  ǥХΡɤ:
     mknod /dev/net/tun c 10 200

  ɥ饤ФΥ⥸塼ϼưŪ˥ɤޤ:
     ȤΥͥǡ֥ͥ⥸塼סݥ⥸塼
     ưɤΥݡȡݤͭˤʤäƤΤǧƤ

     ιԤ /etc/modules.conf ɲä:
	alias char-major-10-200 tun

     Υޥɤ¹Ԥ:
        depmod -a

     ץꥱ	/dev/net/tun ˥ȡɥ饤ФưŪ
     ɤ褦ˤʤޤ

3. ץΥ󥿥ե
  3.1 ͥåȥǥХγ:

  int tun_alloc(char *dev)
  {
      struct ifreq ifr;
      int fd, err;

      if( (fd = open("/dev/net/tun", O_RDWR)) < 0 )
         return tun_alloc_old(dev);

      memset(&ifr, 0, sizeof(ifr));

      /* ե饰: IFF_TUN   - TUN ǥХ (ͥåȤΥإåʤ) 
       *         IFF_TAP   - TAP ǥХ
       *
       *         IFF_NO_PI - ѥåȤξ󶡤ʤ
       */
      ifr.ifr_flags = IFF_TUN; 
      if( *dev )
         strncpy(ifr.ifr_name, dev, IFNAMSIZ);

      if( (err = ioctl(fd, TUNSETIFF, (void *) &ifr)) < 0 ){
         close(fd);
         return err;
      }
      strcpy(dev, ifr.ifr_name);
      return fd;
  }              

  3.2 ե졼Υեޥå:
  ե饰 IFF_NO_PI åȤƤʤ硢
  줾Υե졼ΥեޥåȤ:
    ե饰     [2 Х]
    ץȥ [2 Х]
    Υץȥ(IP, IPv6, ʤ)Υե졼

˥С TUN/TAP ǥХɥ饤ФˤĤƤ褯
1. TUN ȤϤʤǤ?
TUN ϡ Point-to-Point ͥåȥǥХǤ
TUN ɥ饤ФϡIP ȥͥ󥰤Υ(low)٥
ͥ륵ݡȤȤ߷פޤ
桼ɤΥץꥱˡդĤΥ󥿥ե
󶡤ޤ:
  - /dev/tunX	- 饯ǥХ
  - tunX	-  Point-to-Point 󥿥ե

桼ɤΥץꥱ IP ե졼
/dev/tunX ˽񤭤ळȤǤͥ
Υե졼 tunX 󥿥եޤ
Ʊˡͥ뤬 tunX 󥿥ե˽񤭤ह٤Ƥ
ե졼򡢥桼ɤΥץꥱ
/dev/tunX ǥХɤळȤǽǤ

2. TAP ȤϤʤǤ?
TAP ϡۥͥåȥͥåȥǥХǤ
TAP ɥ饤Фϡͥåȥȥͥ󥰤Υ(low)٥
ͥ륵ݡȤȤ߷פޤ
桼ɤΥץꥱˡդĤΥ󥿥ե
󶡤ޤ:
  - /dev/tapX	- 饯ǥХ
  - tapX	- ۥͥåȥ󥿥ե

桼ɤΥץꥱϥͥåȥե졼
/dev/tapX ˽񤭤ळȤǤͥ
Υե졼 tapX 󥿥եޤ
Ʊˡͥ뤬 tapX 󥿥ե˽񤭤ह٤Ƥ
ե졼򡢥桼ɤΥץꥱ
/dev/tapX ǥХɤळȤǽǤ

3. ɤΥץåȥեब TUN/TAP ɥ饤Ф򥵥ݡȤƤޤ?
ΤȤɥ饤Ф 3  Unix  OS ˸ƽ񤫤Ƥޤ
   Linux kernels 2.2.x, 2.4.x 
   FreeBSD 3.x, 4.x, 5.x
   Solaris 2.6, 7.0, 8.0

4. TUN/TAP ɥ饤ФϤɤӤ˻ȤΤǤ?
嵭̤ꡢTUN/TAP ɥ饤ФμӤϥȥͥ󥰤Ǥ
VTun (http://vtun.sourceforge.net) ѤƤޤ

5. ۥͥåȥǥХϼºݤɤΤ褦ưΤǤ?
ۥͥåȥǥХϡʪŪʥǥѥåȤ뤫
桼ڡΥץफѥåȤʪŪʥǥͳ
ѥåȤ뤫˥桼ڡΥץ˸ƥѥåȤ
Τǡñ Point-to-Point ǥХ䥤ͥåȥǥХ
Ʊ褦ʤΤȤƤߤʤȤǤޤ

 tap0  IPX ꤷȤȡθϥͥ뤬 tap0 
IPX ѥåȤ뤿ӤˡΥѥåȤϥץꥱ
(Ȥ VTun) ϤޤץꥱϥѥåȤ
Ź沽̤TCP  UDP ͳ̿ޤ
̿ưƤ륢ץꥱϡΥǡ
Ĺ沽ơ줿ѥåȤ TAP ǥХ˽񤭤ߤޤ
ȥͥϤΥѥåȤ򤢤ºݤʪǥХ
褿ΤƱͤ˽ΤǤ

6. TUN ɥ饤Ф TAP ɥ饤Фΰ㤤ϤʤǤ?
TUN  IP ե졼ȤȤưޤTAP ϥͥåȥե졼
Ȥưޤ

7. BPF  TUN/TAP ɥ饤Фΰ㤤ϤʤǤ?
BPF Ūʥѥåȥե륿ǤǤ¸ߤƤ
ͥåȥ󥿥ե˷ӤĤ뤳ȤǤޤ
BPF ۥͥåȥ󥿥ե󶡤뤳ȤϤޤ
TUN/TAP ɥ饤Фϲۥͥåȥ󥿥ե󶡤ޤ
βۥͥåȥ󥿥ե BPF ӤĤ뤳Ȥ
ǽǤ

8. TAP ɥ饤ФϥͥΥͥåȥ֥å󥰤򥵥ݡ
Ƥޤ?
ϤLinux  FreeBSD ѤΥɥ饤Фϥͥåȥ֥å󥰤
ݡȤƤޤ

ܸ:  ŵ <zap03216@nifty.ne.jp> (2001/05/06)
