https://github.com/creekorful/pfsense-netbox-sync
Allows to synchronize NetBox IPAM DNS information to a pfSense instance (mirror)
https://github.com/creekorful/pfsense-netbox-sync
netbox pfsense python sync
Last synced: about 2 months ago
JSON representation
Allows to synchronize NetBox IPAM DNS information to a pfSense instance (mirror)
- Host: GitHub
- URL: https://github.com/creekorful/pfsense-netbox-sync
- Owner: creekorful
- License: gpl-3.0
- Created: 2025-02-23T18:22:09.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2025-02-24T18:49:57.000Z (about 2 months ago)
- Last Synced: 2025-02-24T19:36:59.150Z (about 2 months ago)
- Topics: netbox, pfsense, python, sync
- Language: Python
- Homepage: https://pypi.org/project/pfsense-netbox-sync/
- Size: 20.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: Changelog.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# 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
This package is available on PyPi. You can install it using pip.
```
$ pip install pfsense-netbox-sync
```## 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 pfsense_netbox_sync
```The script will indicate any change made.