50 lines
No EOL
1.8 KiB
Markdown
50 lines
No EOL
1.8 KiB
Markdown
# pfsense-netbox-sync
|
|
|
|
Allows to synchronize NetBox IPAM DNS information to a pfSense instance.
|
|
This allows automatic DNS resolution on the pfSense based on the DNS names stored in Netbox.
|
|
|
|
## How does it work?
|
|
|
|
This script work by pulling IP addresses with DNS name from NetBox (source of truth) and create/update/delete
|
|
corresponding DNS entries on pfSense DNS resolver.
|
|
|
|
## Installation
|
|
|
|
## Configuration
|
|
|
|
### On NetBox
|
|
|
|
You'll need to create a dedicated user (ex: pfsense-netbox-sync) on your NetBox instance and then create a read only API
|
|
token.
|
|
|
|
The following env variables will need to be set:
|
|
|
|
- **NB_API_URL**: The URL to your NetBox instance. (ex: https://netbox.example.org)
|
|
- **NB_API_TOKEN**: The token created previously. (ex: f74cb99cf552b7005fd1a616b53efba2ce0c9656)
|
|
|
|
### On pfSense
|
|
|
|
pfSense does not provide any REST API out of the box. Therefore, you'll first need to install
|
|
the [pfrest package](https://pfrest.org/INSTALL_AND_CONFIG/#).
|
|
|
|
Once it's done you can create a user dedicated for this application (ex: pfsense-netbox-sync).
|
|
You'll then need to grant the account all permissions for ``/api/v2/services/dns_resolver/*`` (Effective Privileges in
|
|
the user page).
|
|
|
|
Note: You **should** restrict API access to the IP who are using it.
|
|
|
|
The following env variables will need to be set:
|
|
|
|
- **PF_API_URL**: The URL to your pfSense instance. (ex: https://fw.example.org)
|
|
- **PF_API_USER**: The username of the account created previously. (ex: pfsense-netbox-sync)
|
|
- **PF_API_PASS**: The password of the account created previously. (ex: MQILv21OJIJ_x4dO0hZgJtwl)
|
|
|
|
## Executing the script
|
|
|
|
You can then execute the script using the following command:
|
|
|
|
```
|
|
PF_API_URL=xx PF_API_USER=xx PF_API_PASS=xx NB_API_URL=xx NB_API_TOKEN=xx python3 -m app
|
|
```
|
|
|
|
The script will indicate any change made. |