Livid
396.81D
543.17D
V2EX  ›  Nebula

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

By Livid at 2019 年 12 月 13 日 · 12256 次点击

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 日
这个方法似乎在 Catalina 上无效。在 Catalina 上 sudo launchctl load 似乎不会保存下来。
第 2 条附言  ·  2020 年 1 月 4 日

在 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 日 via iPhone
什么情况下需要用这类工具,想不到使用场景呀。
Livid
   2
Livid  
MOD
OP
PRO
   2019 年 12 月 13 日
@wzw 我这里的场景是需要从外面的网络安全地连到内网的开发服务器上。这个方案比 VPN 好。
hronro
   3
hronro  
   2019 年 12 月 15 日
可以给 Homebrew 提一个 PR 啊!
Livid
   4
Livid  
MOD
OP
PRO
   2019 年 12 月 15 日
@hronro 这个包应该迟早会有官方 maintainer 的,吧?
hronro
   5
hronro  
   2019 年 12 月 15 日   ❤️ 1
@Livid #4 感觉 Homebrew 不像是每个 Formulae 都有固定 maintainer 的,应该是谁都可以去提 PR 的。我查了一下,貌似现在还没有 Nenula 的 PR。https://github.com/Homebrew/homebrew-core
wzw
   6
wzw  
   2019 年 12 月 16 日
@Livid #2 周末试一下, 有一个台服务器用来当 lighthouse, 其他没有公网 ip.

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

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

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

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

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

也是多个公网服务器内网多个终端,多服务器当然还是用 nebula 建多个 lighthouse 了,跟内网有多少个终端没什么关系。
wzw
   14
wzw  
   2019 年 12 月 25 日
@whitegerry #13 nebula 只能 ping 通, 其他都不行呀...
whitegerry
   15
whitegerry  
   2019 年 12 月 25 日 via iPhone
proto: icmp,icmp 要改成 any
whitegerry
   16
whitegerry  
   2019 年 12 月 25 日 via iPhone
@wzw proto: icmp,icmp 要改成 any
wzw
   17
wzw  
   2019 年 12 月 25 日
@whitegerry #16 😂, 尴尬, 没有注意到. 改成 any/tcp 应该会好很多.
wzw
   18
wzw  
   2019 年 12 月 25 日
@whitegerry #15 我先继续用 zerotier, 等一等 nebula 的生态.
© 2026 V2EX · 46ms · 3.9.8.5