# Quickstart Guide This guide is intended to bring up a vagrant environment with 1 lighthouse and 2 generic hosts running nebula. ## Pre-requisites There are two pre-requisites prior to bringing up the vagrant environment - build the binaries locally for the vagrant deploy - create a virtualenv for ansible ### Building the binaries Build the `nebula` and `nebula-cert` binaries for vagrant by doing the following `make bin-vagrant` (under the src directory with Makefile) For convenience, ansible will run this for you in every deploy (see `ansible/playbook.yml`) ### Creating the virtualenv Within the `quickstart/` directory, do the following ``` # make a virtual environment virtualenv venv # get into the virtualenv source venv/bin/activate # install ansible pip install -r requirements.yml ``` ## Bringing up the vagrant environment A plugin that is used for the Vagrant environment is `vagrant-hostmanager` To install, run ``` vagrant plugin install vagrant-hostmanager ``` All hosts within the Vagrantfile are brought up with `vagrant up` Once the boxes are up, go into the `ansible/` directory and deploy the playbook by running `ansible-playbook playbook.yml -i inventory -u vagrant` ## Testing within the vagrant env Once the ansible run is done, hop onto a vagrant box `vagrant ssh generic1.vagrant` or specifically `ssh vagrant@` (password for the vagrant user on the boxes is `vagrant`) See `/etc/nebula/config.yml` on a box for firewall rules. To see full handshakes and hostmaps, change the logging config of `/etc/nebula/config.yml` on the vagrant boxes from info to debug. You can watch nebula logs by running ``` sudo journalctl -fu nebula ``` Refer to the nebula src code directory's README for further instructions on configuring nebula. ## Troubleshooting ### Is nebula up and running? Run and verify that ``` ifconfig ``` shows you an interface with the name `nebula1` being up. ``` vagrant@generic1:~$ ifconfig nebula1 nebula1: flags=4305 mtu 1300 inet 10.168.91.210 netmask 255.128.0.0 destination 10.168.91.210 inet6 fe80::aeaf:b105:e6dc:936c prefixlen 64 scopeid 0x20 unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC) RX packets 2 bytes 168 (168.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 11 bytes 600 (600.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ``` ### Connectivity Are you able to ping other boxes on the private nebula network? The following are the private nebula ip addresses of the vagrant env ``` generic1.vagrant [nebula_ip] 10.168.91.210 generic2.vagrant [nebula_ip] 10.168.91.220 lighthouse1.vagrant [nebula_ip] 10.168.91.230 ``` Try pinging generic1.vagrant to and from any other box using its nebula ip above. Double check the nebula firewall rules under /etc/nebula/config.yml to make sure that connectivity is allowed for your use-case if on a specific port. ``` vagrant@lighthouse1:~$ grep -A21 firewall /etc/nebula/config.yml firewall: conntrack: tcp_timeout: 12m udp_timeout: 3m default_timeout: 10m max_connections: 100,000 inbound: - proto: icmp port: any host: any - proto: any port: 22 host: any - proto: any port: 53 host: any outbound: - proto: any port: any host: any ```