nebula.yml(5)
β¨ nebula.yml β the config file glow-up β¨
okay bestie, welcome to nebula.yml(5) π this is the File Formats Manual page for the nebula config file, and yes it's a whole mood. sit down, grab a strawberry drink π, and let's get into it.
πΈ NAME πΈ
nebula.yml β nebula configuration files. that's it, that's the name, iconic.
π DESCRIPTION π
so the config file for nebula(1) is written in YAML. every section gets its own lil explanation below, and no we are not skipping any of them, periodt. β¨
π pki
the PKI section is where you define the location of your credentials. your lil identity papers, if you will π
caβ path to the CA certificatecertβ path to this node's certificate filekeyβ path to this node's key file
πΊοΈ static_host_map
the static host map defines a set of hosts with fixed IP addresses out there on the internet. you can define multiple addresses, and Nebula will try each one when it's establishing a tunnel. it's giving "here are my known locations, come find me" π¦
πΌ lighthouse
the lighthouse section lets you enable and configure lighthouse behavior. in Nebula, lighthouses are nodes with fixed IP addresses that other nodes use to locate each other. they're the main characters of the network, fr fr π
am_lighthouseβ enables lighthouse behavior on this node. should ONLY be true on nodes you have actually configured to be lighthouses on your network. no cap.intervalβ number of seconds between updates from this node to a lighthouse. when a lighthouse receives an update, it sends information about its current IP address to each node.hostsβ a list of lighthouse nodes this node should report to and query from. should be empty on lighthouse nodes.serve_dnsβ starts a DNS listener which responds to various queries (VAGUE) and be delegated for resolution. yes bestie, the manpage literally says "(VAGUE)" β we report, we don't explain π
π§ listen
control the port and interface on which nebula listens.
hostβ set the ip to which nebula bindsportβ set the port to which nebula binds
π₯ punchy
punchβ continue to punch inbound/outbound at a regular interval to avoid expiration of firewall NAT mappingrespondβ configure the node to reach out and connect to you if your hole punching fails. this is extremely useful if one node is behind a difficult NAT, such as a symmetric NAT.delayβ delay a punch response for misbehaving NATs, default is 1 second,respondmust be true to take effect
π cipher
choose between the available ciphers for your network. options are "chachapoly" or "aes." must be identical across all nodes on a network β matching fits, mismatch does not π«Ά
π₯οΈ sshd
SSHD can expose information and administrative function via ssh.
enabledβ if true, this enables SSHD administrationlistenβ host and port to listen on. (port 22 is not allowed.) π«host_keyβ a file containing a list of authorized public keysauthorized_usersβ a list of users each with an array of keys
π§ tun
disabledβ when tun is disabled, a lighthouse can be started without a local run interface (and therefore without root)devβ the name of the devicedrop_local_broadcastβ toggles forwarding of local broadcast packets, the address of which depends on the ip/mask encoded in thepki.certdrop_multicastβ drop the forwarding of multicast packetstx_queueβ sets the transmit queue length. (if you notice lots of transmit drops on the tun it may help to raise this number. defaults to 500.mtuβ default MTU for every packet, safe setting is (and the default) 1300 for internet based traffic.unsafe_routesβ unsafe routes allows you to route traffic over nebula to non-nebula nodes. unsafe routes should be avoided unless you have hosts/services that cannot run nebula. β οΈ the name is literally "unsafe", bestie, heed it.
π logging
configure logging.
levelβ configure the logging level. must be one of panic, fatal, error, warning, info, or debug.formatβ either json or textdisable_timestampβ disables timestamp logging. useful when redirected into to a logging system which appends a time stamp. defaults to false.
π stats
enable a statistics exporter.
typeβ type of statistics exporter. either"prometheus"or"graphite"intervalβ interval to provide updates for either graphite or prometheus.prefixβ prefix for graphiteprotocolβ protocol for graphitehostβ listener for graphitelistenβ ip and port to bind the prometheus listenerpathβ path on which metrics are supplied in prometheusnamespaceβ prometheus namespacesubsystemβ prometheus subsystemmessage_metricsβ enables counter metrics for meta packets. (e.g.message.tx.handshake)lighthouse_metricsβ enables detailed counter metrics for lighthouse packets (e.g.lighthouse.rx.HostQuery)
π€ handshakes
handshakes are sent to all known addresses at each interval with a linear back off. very "we'll try again, but like, progressively more chill about it" energy π
try_intervalβ nebula waitstry_intervalafter the first attempt, 2 *try_intervalon the second attempt, until the handshake is older than timeout. this allows you to control this interval.retriesβ number of retries before timing outtrigger_bufferβ size of the buffer channel for quickly sending handshakes after receiving the response for lighthouse queries
π§± firewall
the firewall is default deny. there is no way to write a deny rule. rules are comprised of a protocol, port, and one or more of host, group, or CIDR. logical evaluation is roughly:
port AND proto AND (ca_sha OR ca_name) AND (host OR group OR groups OR CIDR)
outboundβ section containing rules which apply to traffic send from this node. see the rules section.inboundβ section containing rules which apply to traffic send to this node from other hosts. see the rules section.
π rules
rules are written in the outbound and inbound sections described above.
protoβ protocol. one of"any","tcp","udp", or"icmp"hostβ"any"or literal hostnamegroupβ"any"or literal group namegroupsβ same as group but accepts a list of values. certificate has to contain all groups to pass.cidrβ a CIDR,"0.0.0.0/0"is anyca_nameβ an issuing CA nameca_sumβ an issuing CA shasum
π EXAMPLES π
there is a example configuration file in the FILES section below. π
configuration files placed in /etc/nebula can take advantage of the built-in systemd templates. for example, if you have a nebula configuration /etc/nebula/office.yml:
[#] systemctl enable nebula@office.service
π FILES π
/etc/nebulaβ contains configuration files fornebula(1). this provides a designated place to store configuration data and credentials. configuration files placed in this directory can take advantage of the provided systemd template unit./usr/share/doc/nebula/examples/config.ymlβ see this example configuration file.
π SEE ALSO π
and that's the whole page, bestie!! go forth and configure, you absolute legend π«Ά
this was nebula 1.4.0, dated July 2021 β file formats manual energy, nebula.yml(5), slay π
β¨
π¦ where this page comes from
- debian bookworm: nebula 1.6.1+dfsg-3+b4 Β· MIT
- debian trixie: nebula 1.9.3+dfsg-6+b2 Β· MIT
- ubuntu noble: nebula 1.6.1+dfsg-3build1 Β· MIT
- ubuntu noble: nebula 1.6.1+dfsg-3ubuntu0.24.04.3 Β· MIT
- ubuntu questing: nebula 1.9.3+dfsg-6
- ubuntu resolute: nebula 1.10.3+dfsg-1 Β· MIT
- ubuntu stonking: nebula 1.11.0+dfsg-1 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms