V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Livid
V2EX  ›  Nebula

Nebula 的 launchd.plist 用于实现 macOS 上开机自动启动 Nebula

  •  1
     
  •   Livid · 2019-12-13 07:15:26 +08:00 · 10653 次点击
    这是一个创建于 1807 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Nebula 是 Slack 开源的一款用于搭建 overlay network 的工具,在开源之前已经在 Slack 内部使用了两年多。

    https://www.v2ex.com/t/621442

    最近用了一段时间,觉得非常好用。所以研究了一下怎么样让它在 macOS 上自动启动,目前在 Homebrew 里还没有包。

    这是一个可以让 Nebula 在 macOS 上开机就自动启动的 launchd.plist 脚本。

    sudo vi /Library/LaunchDaemons/com.slack.nebula.plist

    内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
      <dict>
        <key>Label</key>
        <string>com.slack.nebula</string>
        <key>KeepAlive</key>
        <true/>
        <key>RunAtLoad</key>
        <true/>
        <key>ProgramArguments</key>
        <array>
          <string>/usr/local/bin/nebula</string>
          <string>-config</string>
          <string>/usr/local/etc/nebula.yaml</string>
        </array>
        <key>StandardErrorPath</key>
        <string>/dev/null</string>
        <key>StandardOutPath</key>
        <string>/dev/null</string>
      </dict>
    </plist>
    

    然后在这个目录下 sudo launchctl load com.slack.nebula.plist,因为增加用户态网卡需要 root 权限,所以需要用 sudo 执行。如果你的 Nebula 配置文件不在 /usr/local/etc/nebula.yaml 这个位置那么就根据实际情况对 plist 内容进行调整。

    第 1 条附言  ·  2019-12-17 06:44:07 +08:00
    这个方法似乎在 Catalina 上无效。在 Catalina 上 sudo launchctl load 似乎不会保存下来。
    第 2 条附言  ·  2020-01-04 07:31:07 +08:00

    在 macOS 10.15 Catalina 上,这个启动文件需要放在 /Library/LaunchDaemons 下,并且:

    • owner/group 是 root/wheel
    • 权限是 644

    然后用 sudo launchctl load -w 加载。

    18 条回复    2019-12-25 17:22:24 +08:00
    wzw
        1
    wzw  
       2019-12-13 07:36:50 +08:00 via iPhone
    什么情况下需要用这类工具,想不到使用场景呀。
    Livid
        2
    Livid  
    MOD
    OP
       2019-12-13 07:44:10 +08:00
    @wzw 我这里的场景是需要从外面的网络安全地连到内网的开发服务器上。这个方案比 VPN 好。
    hronro
        3
    hronro  
       2019-12-15 01:54:20 +08:00
    可以给 Homebrew 提一个 PR 啊!
    Livid
        4
    Livid  
    MOD
    OP
       2019-12-15 04:13:20 +08:00
    @hronro 这个包应该迟早会有官方 maintainer 的,吧?
    hronro
        5
    hronro  
       2019-12-15 13:55:15 +08:00   ❤️ 1
    @Livid #4 感觉 Homebrew 不像是每个 Formulae 都有固定 maintainer 的,应该是谁都可以去提 PR 的。我查了一下,貌似现在还没有 Nenula 的 PR。https://github.com/Homebrew/homebrew-core
    wzw
        6
    wzw  
       2019-12-16 10:08:09 +08:00
    @Livid #2 周末试一下, 有一个台服务器用来当 lighthouse, 其他没有公网 ip.

    结果是: 有些成功,有些不成功.
    Seymer
        7
    Seymer  
       2019-12-17 01:01:05 +08:00 via iPhone
    @Livid #2 请问可以说得更详细些吗,或是您使用过程中总结出一些最佳实践什么的,期待您的分享及回复。
    Livid
        8
    Livid  
    MOD
    OP
       2019-12-17 06:47:24 +08:00   ❤️ 1
    @Seymer 比如假设你需要访问两台位于不同的云里面的服务器。这些服务器为了安全本身做了各种限制访问的规则。

    之前如果要连这些服务器,可能需要使用 IPsec VPN 或者跳板机。而现在有了像 Nebula 这样的基于 PKI 的方案,那么基本上我开机之后,什么都不用做,就可以直接访问到这些服务器,还足够安全。
    wzw
        9
    wzw  
       2019-12-18 07:27:02 +08:00 via iPhone
    @Livid 机器十台,有内外网,zerotier 组网正常使用,
    但是尝试 nebula,效果只能能 ping 通……

    所以继续用 zerotier
    psirnull
        10
    psirnull  
       2019-12-18 08:34:19 +08:00 via iPhone
    n2n 不是更简单
    whitegerry
        11
    whitegerry  
       2019-12-23 10:37:13 +08:00
    @wzw tinc/n2n/zerotier 长期使用,最近内网只在一台机器配置 nebula,跨网段组网也成功了,稳定使用。
    wzw
        12
    wzw  
       2019-12-23 11:25:28 +08:00
    @whitegerry #11 我以前都用 frp,
    现在尝试了 nebula, 发现不成功后.
    尝试 zerotier, 发现挺好用, 搭建了自己的 moon

    有多个公网服务器+多个内网终端
    如果让你选 zerotier/nebula/tinc/n2n , 你选哪个, 根据你使用经验, 我就不一一尝试了
    whitegerry
        13
    whitegerry  
       2019-12-25 12:39:08 +08:00
    @wzw

    frp 只临时用,zero/tinc/n2n 都能通的话 nebula 也没问题的,moon 用过一段时间,没有明显益处,现在还用 zerotier 只因为有 ios 端。

    也是多个公网服务器内网多个终端,多服务器当然还是用 nebula 建多个 lighthouse 了,跟内网有多少个终端没什么关系。
    wzw
        14
    wzw  
       2019-12-25 13:50:02 +08:00
    @whitegerry #13 nebula 只能 ping 通, 其他都不行呀...
    whitegerry
        15
    whitegerry  
       2019-12-25 16:57:19 +08:00 via iPhone
    proto: icmp,icmp 要改成 any
    whitegerry
        16
    whitegerry  
       2019-12-25 16:58:33 +08:00 via iPhone
    @wzw proto: icmp,icmp 要改成 any
    wzw
        17
    wzw  
       2019-12-25 17:21:02 +08:00
    @whitegerry #16 😂, 尴尬, 没有注意到. 改成 any/tcp 应该会好很多.
    wzw
        18
    wzw  
       2019-12-25 17:22:24 +08:00
    @whitegerry #15 我先继续用 zerotier, 等一等 nebula 的生态.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2935 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:07 · PVG 16:07 · LAX 00:07 · JFK 03:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.