如何在OSX上为TUN接口设置IP地址?我不知道如何在不指定目标IP的情况下为接口设置IP地址。我不想这样做-我想在以后的某个时间或多或少地建立到任意地址的隧道。先前没有帮助的问题:


a question的答案不清楚,因此我尝试按照参考进行操作。
This question为tun设备设置点对点ip地址,因此它具有目的地,而这正是我所不想要的。


osxtuntap页面上显示:

ifconfig tap0 10.1.2.3 up


我无法在OSX 10.6的TUN接口上进行此工作:

$ sudo ifconfig tun0 10.1.2.3 up
ifconfig: ioctl (SIOCAIFADDR): Destination address required


添加网络掩码无济于事-OSX似乎需要目标地址:

$ ifconfig tun0 10.0.0.1/24 netmask 255.255.255.0
ifconfig: ioctl (SIOCAIFADDR): Destination address required


对于linux,我知道它是如何工作的。根据this page的描述,您打开()接口,并使用ip命令执行此操作,而我之前这样做是零问题:

$ ip link set tun0 up
$ ip addr add 10.0.0.1/24 dev tun0


我要做的只是在Linux中做的相同的事情。



编辑:

我正在编写一个UDP隧道应用程序。像这样:

tun1-> udp应用程序#1-> udp隧道-> udp应用程序2-> tun2

如果udp应用位于不同的计算机上(例如本地和远程),我想将其各自的tun设备与ip地址相关联,因此我可以通过将数据包发送到本地来通过隧道将数据包从本地发送到远程删除机器上tun设备的ip地址。

要从Linux教程中借用更多内容,作者在本地和远程上设置了tun设备,关联了ips,并运行了一个简单的隧道应用程序,然后ping隧道的另一端:

[remote]# ip link set tun3 up
[remote]# ip addr add 192.168.0.2/24 dev tun3
[remote]$ ./simpletun -i tun3 -s
# server blocks waiting for the client to connect
[local]# ip link set tun11 up
[local]# ip addr add 192.168.0.1/24 dev tun11
[local]$ ./simpletun -i tun11 -c 10.2.3.4
# nothing happens, but the peers are now connected
[local]$ ping 192.168.0.2

最佳答案

默认情况下,Tun设备以点对点的第3层模式运行。您需要的是与通用以太网设备更相似的第2层模式。 Linux将这些Tap设备称为。在OpenBSD中,您可以使用“ ifconfig tun0 link0”将tun设备切换到第2层模式。 Macintosh tuntaposx驱动程序模仿Linux的设备结构。而是打开水龙头设备。

您可能需要查看https://community.openvpn.net/openvpn/wiki/BridgingAndRouting以确定您是否真的想要点击设备。它们增加了一些开销。如果您只需要两个盒子即可在彼此之间传递IP数据包,而无需桥接或广播到更大的子网,则点对点就足够了。

例如,如果您有两台计算机,其中一台我们用LAN IP地址标记为“ local”,例如192.168.0.12,另一台我们用LAN IP地址标记“ remote”,例如192.168.1.14,则可以这样分配隧道IP地址:

ifconfig tun0 inet 10.0.0.1 10.0.0.2 up


在本地系统上,以及:

ifconfig tun0 inet 10.0.0.2 10.0.0.1 up


在远程系统上。请注意远程机器上的透视图。不要将点对点的地址设置为现有子网中的任何地址。它不会正确路由。

我对此不够强调:阅读并重新阅读手册页(“ man ifconfig”和“ man tun”,可能还有其他内容),直到它们有意义为止。我上面的ifconfig示例可能与您的操作系统略有不同。

从另一个角度来看,您可能会研究GRE隧道,因为它们的功能反映了您为程序描述的内容。但是,GRE在当今以TCP为中心的网络中可能不可行,由于重大的安全问题,它也不是一个好主意。

如果您的目标是避开霸道的防火墙,请注意,许多此类防火墙会阻止UDP(尤其是GRE)数据包。在这种情况下,请尝试使用SSH接口隧道来设置tun / tap接口并转发数据包。您将获得加密以及可选的压缩。 :)

10-04 10:52