mirror of
https://github.com/netbirdio/docs.git
synced 2026-05-04 00:06:36 +00:00
150 lines
5.7 KiB
Plaintext
150 lines
5.7 KiB
Plaintext
# OPNsense Installation
|
||
|
||
The NetBird client (agent) allows a peer to join a pre-existing NetBird deployment. If a NetBird deployment is not yet available,
|
||
there are both managed and [self-hosted](https://docs.netbird.io/selfhosted/selfhosted-quickstart) options available.
|
||
|
||
|
||
<YouTube videoId="AK0Ct-ULFKg" start={669} />
|
||
|
||
<Note>
|
||
The NetBird package is officially included starting from OPNsense `25.7.3`.
|
||
</Note>
|
||
|
||
|
||
## Prerequisites
|
||
- Shell or Web UI access to your OPNsense system
|
||
- A [setup key](/manage/peers/register-machines-using-setup-keys#types-of-setup-keys) to authenticate and register the OPNsense device
|
||
|
||
## Installation
|
||
|
||
1. **Log in to your OPNsense system**
|
||
|
||
You can use the Web UI or SSH.
|
||
|
||
2. **Install the NetBird package**
|
||
|
||
In the OPNsense Web UI, navigate to `System` > `Firmware` > `Plugins`, and search for the `os-netbird` package. Click the install button next to it.
|
||
|
||
3. **Verify the installation**
|
||
|
||
Once installed, the NetBird configuration interface will be available under `VPN` > `NetBird` in the OPNsense menu
|
||
|
||
## Configuration
|
||
|
||
### Enable the service
|
||
|
||
Navigate to `VPN` > `NetBird` > `Settings` and ensure the toggle `Enable` is turned on in the `General` section.
|
||
This will enable us to continue with the next steps.
|
||
|
||
### Authenticate the machine
|
||
|
||
Fill out the authentication form with the following values and click `Save`:
|
||
|
||
- **Management URL**: Default is `https://api.netbird.io:443`. If self-hosting, enter your custom management server URL.
|
||
- **Setup Key**: Paste the setup key from your NetBird account.
|
||
|
||
<p>
|
||
<img src="/docs-static/img/get-started/opnsense/authentication.png" alt="authentication" className="imagewrapper-big"/>
|
||
</p>
|
||
|
||
### Verify Connection Status
|
||
|
||
The Status page shows detailed information about connected peers and control services, helping you monitor your deployment.
|
||
Access it via `VPN` > `NetBird` > `Status` in the OPNsense menu.
|
||
|
||
Use this section for diagnostics and troubleshooting common connection or setup issues.
|
||
|
||
<p>
|
||
<img src="/docs-static/img/get-started/opnsense/status.png" alt="connection status" className="imagewrapper-big"/>
|
||
</p>
|
||
|
||
### Assign NetBird interface
|
||
After installation, a new interface named `wt0` will be available but unassigned. To assign it go to `Interfaces` >
|
||
`Assignments`. Under `Assign a new interface`, set the following values:
|
||
- **Device**: `wt0`
|
||
- **Description**: `NetBird`
|
||
|
||
<p>
|
||
<img src="/docs-static/img/get-started/opnsense/interface_assignment.png" alt="interfaceAssignment" className="imagewrapper-big"/>
|
||
</p>
|
||
|
||
Click `Add` to assign the interface.
|
||
<p>
|
||
<img src="/docs-static/img/get-started/opnsense/new_interface.png" alt="interfaceAssignment" className="imagewrapper-big"/>
|
||
</p>
|
||
|
||
|
||
### Enable the NetBird interface
|
||
Now that the NetBird interface has been added, you need to enable it. Go to `Interfaces` > `[NetBird]`, then configure
|
||
the following options and click `Save`, then `Apply changes` to activate the interface:
|
||
- **Enable**: `✓ Enable Interface`
|
||
- **Lock**: `✓ Prevent interface removal`
|
||
|
||
<p> <img src="/docs-static/img/get-started/opnsense/enable_interface.png" alt="enableInterface" className="imagewrapper-big"/> </p>
|
||
|
||
<Note>
|
||
OPNsense includes native WireGuard support, however do not configure or manage the NetBird interface (wt0) via the OPNsense WireGuard UI.
|
||
NetBird fully manages the WireGuard interface and keys.
|
||
</Note>
|
||
|
||
### Configure Firewall Rules for the NetBird interface
|
||
To allow NetBird to handle all access control, permit all traffic on the NetBird interface in OPNsense.
|
||
This ensures traffic flows freely, while NetBird’s own policies (ACLs) govern the access restrictions.
|
||
|
||
1. Navigate to `Firewall` > `Rules` > `NetBird`.
|
||
2. Click `+ Add` to create a new rule.
|
||
3. Configure the rule:
|
||
- **Action**: `Pass`
|
||
- **Interface**: `NetBird`
|
||
- **Direction**: `in`
|
||
- **TCP/IP Version**: `IPv4`
|
||
- **Protocol**: `any`
|
||
- **Source**: `any`
|
||
- **Destination**: `any`
|
||
- **Description**: `Allow all on NetBird (managed by NetBird)`
|
||
4. Click `Save`, then `Apply changes`.
|
||
5. Ensure this rule is at the top of the `NetBird` rules list so it isn’t shadowed by other rules.
|
||
|
||
<p>
|
||
<img src="/docs-static/img/get-started/opnsense/firewall_rules.png" alt="firewallRules" className="imagewrapper-big"/>
|
||
</p>
|
||
|
||
### Config for Troubleshooting Relayed Connections
|
||
|
||
By default, OPNsense uses automatic outbound NAT which randomizes source ports. This can cause issues with NetBird's NAT traversal (hole punching). To ensure reliable direct connections, you must configure a Static Port mapping.
|
||
|
||
1. **Change Outbound NAT Mode**:
|
||
- Navigate to `Firewall` > `NAT` > `Outbound`.
|
||
- Select `Hybrid outbound NAT rule generation`.
|
||
- Click `Save`.
|
||
|
||
2. **Add Static Port Rule**:
|
||
- Click `+` to add a new rule.
|
||
- **Interface**: `WAN`
|
||
- **TCP/IP Version**: `IPv4`
|
||
- **Protocol**: `UDP`
|
||
- **Source address**: `Single host or Network` (enter the IP address of your NetBird host)
|
||
- **Destination address**: `any`
|
||
- **Translation / Static-port**: Check `Static-port` box
|
||
- **Description**: `NetBird Static Port`
|
||
- Click `Save` and then `Apply changes`.
|
||
|
||
3. **Reset States**:
|
||
- Go to `Firewall` > `Diagnostics` > `States`.
|
||
- Filter by the NetBird host IP.
|
||
- Delete the states.
|
||
|
||
4. **Restart NetBird**:
|
||
- Run `netbird service restart` on the device.
|
||
- Run `netbird status -d` to verify the connection.
|
||
|
||
## Get started
|
||
<p float="center" >
|
||
<Button name="button" className="button-5" onClick={() => window.open("https://netbird.io/pricing")}>Use NetBird</Button>
|
||
</p>
|
||
|
||
- Make sure to [star us on GitHub](https://github.com/netbirdio/netbird)
|
||
- Follow us [on X](https://x.com/netbird)
|
||
- Join our [Slack Channel](/slack-url)
|
||
- NetBird [latest release](https://github.com/netbirdio/netbird/releases) on GitHub
|