15

TAP/TUN デバイスの「宛先アドレス」の目的は何ですか?

Pytunを使用すると、タップ/チューニング デバイスのパラメーターを簡単に設定できます。

tun = TapTunDevice(name='mytun')
tun.addr = '10.66.66.1'
tun.dstaddr = '10.66.66.2'
tun.netmask = '255.255.255.0'
tun.up()

これを行うと、次のように構成されたデバイスになります。

$ ifconfig mytun
mytun: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.66.66.1  netmask 255.255.255.0  destination 10.66.66.2
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

システムに IP 10.66.66.1 の仮想インターフェイスがあることを理解しています。そして、このシナリオでは、TUN デバイスは、IP アドレスが 10.66.66.2 のデバイス (VPN ゲートウェイなど) に「接続」されていると考えられます。

しかし、これが「ポイントツーポイント」インターフェースであり、宛先の IP アドレスであることをカーネルが認識することは、具体的にどのような目的に役立つのでしょうか? 単純にルート テーブルを構成するだけでは達成できない何らかの方法でルーティングに影響を与えますか?


dstaddrプロパティを設定すると、 SIOCSIFDSTADDRioctl が生成されます。

netdevice(7)マニュアルページには次のように書かれています:

  SIOCGIFDSTADDR, SIOCSIFDSTADDR
          Get or set the destination address of a point-to-point  device
          using  ifr_dstaddr.  For compatibility, only AF_INET addresses
          are accepted or returned.  Setting the destination address  is
          a privileged operation.
4

2 に答える 2

0

でインターフェースを追加する場合

inet 10.66.66.1 ネットマスク 255.255.255.0

ポイントツーポイントとして作成するかどうかに関係なく、新しいインターフェイスの宛先を持つ 10.66.66.1/24 の新しいルーティング エントリがカーネルに追加されます。

ですからそこに違いがあるとは思いません。

于 2016-04-06T16:58:03.890 に答える