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
プロパティを設定すると、 SIOCSIFDSTADDR
ioctl が生成されます。
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.