Nebula搭建

nebula,P2P建VPN内网的工具,含NAT打洞功能。lighthouse需要外网机,符合自己的设想。下载安装一套。

设定的部署场景:

lighthouse->具有公网ip的一台VPS,

node1-> 移动4G网络路由器内网的一台设备

node2-> 联通4G网络路由器内网的一台设备

nebula 特点

  • 可以设置lighthouse和多个普通节点
  • 通过证书验证网络,由lighthouse,签发证书,各节点用私钥验证
  • 内置ssh工具

下载地址

https://github.com/slackhq/nebula/releases/

1
2
3
4
wget https://github.com/slackhq/nebula/releases/download/v1.4.0/nebula-linux-amd64.tar.gz

mkdir -p /opt/nebula && cd /opt/nebula
tar zxvf nebula-linux-amd64.tar.gz

创建lighthouse

建立ca证书

1
./nebula-cert ca -name "xxx. Inc"

几个参数

1
2
3
-ips string #显示ca证书所使用的网络,支持多个网络,不写则表示无限制

例如:nebula-cert ca -name example.org -ips 192.0.2.0/24,10.12.0.0/24

生成lighthouse的key和crt

1
./nebula-cert sign -name "lighthouse" -ip "10.12.0.1/24" -groups work

这里是直接跨过了生成公司要的过程,直接签发一个证书。而在ios和安卓端,会生成pub秘钥。此时就必须用这个pub秘钥和ca的秘钥、证书,生成自有的crt。

1
nebula-cert sign -ca-crt ca.crt -ca-key ca.key -in-pub host.pub -out-crt host.crt -groups "Workstation" -ip 10.12.0.1/24 -name "lighthouse"

编辑配置文件config.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
pki:
ca: /opt/nebula/ca.crt #默认ca证书,所有端都是这么写
cert: /opt/nebula/lighthouse.crt #lighthouse的秘钥
key: /opt/nebula/lighthouse.key

static_host_map:
"10.12.0.1": ["lighthouse服务器公网IP:4242"]

lighthouse:
am_lighthouse: true #为true表示是公网服务
interval: 60

listen:
host: 0.0.0.0 #监听所有ip,可以写成某个IP
port: 4242

punchy:
punch: true #使用nat

cipher: chachapoly

tun:
dev: nebula1
drop_local_broadcast: false
drop_multicast: false
tx_queue: 500
mtu: 1300

logging:
level: info
format: text

firewall: #默认为全部禁止,下面的填写的则为开放
conntrack:
tcp_timeout: 12m
udp_timeout: 3m
default_timeout: 10m
max_connections: 100000

outbound: #全部开放
- port: any
proto: any
host: any

inbound:
- port: any
proto: any
host: any

启动

1
/opt/nebula/nebula -config config.yml