gpt4 book ai didi

networking - 如何在 OSX 上为 TUN 接口(interface)设置 IP 地址(没有目标地址)?

转载 作者:行者123 更新时间:2023-12-04 07:39:23 25 4
gpt4 key购买 nike

如何在 OSX 上为 TUN 接口(interface)设置 IP 地址?如果不指定目标 IP,我无法弄清楚如何为我的接口(interface)设置 IP 地址。我不想那样做——我想或多或少地在以后的某个时间点建立一条通往任意地址的隧道。之前没有帮助的问题:

  • a question这有一个不清楚的答案,所以我尝试按照引用。
  • This question为 tun 设备设置点对点 IP 地址,因此它有一个目的地,这正是我不想要的。

  • osxtuntap 的页面上它说:
    ifconfig tap0 10.1.2.3 up

    对于 TUN 接口(interface),我无法在 OSX 10.6 上完成这项工作:
    $ 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 ,你 open() 界面,并使用 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 将这些分接头称为设备。在 OpenBSD 中,您可以使用“ifconfig tun0 link0”将 tun 设备切换到第 2 层模式。 Macintosh tuntaposx 驱动程序模仿 Linux 的设备 split ;而是打开水龙头设备。

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

    例如,如果您有两台机器,一台我们使用 LAN IP 地址(如 192.168.0.12)标记“本地”,另一台使用 LAN IP 地址(如 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 隧道,因为它们的功能反射(reflect)了您为程序描述的内容。但是,GRE 在当今以 TCP 为中心的网络中可能不可行,由于主要的安全问题,它也不是一个好主意。

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

    关于networking - 如何在 OSX 上为 TUN 接口(interface)设置 IP 地址(没有目标地址)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17510101/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com