> For the complete documentation index, see [llms.txt](https://docs.acecloud.ai/knowledge-base/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.acecloud.ai/knowledge-base/tutorials/installing-and-configuring-pfsense-firewall-on-acecloud-via-openstack-horizon.md).

# Installing and Configuring pfSense Firewall on AceCloud (via OpenStack Horizon)

## Step 1: **Download pfSense ISO Image**

1. Visit the official pfSense download page: <https://www.pfsense.org/download/>
2. Select the following options:
3. Installer: CD Image (ISO) Installer
4. Proceed with checkout (amount will be $0). Create an account if prompted.
5. Once downloaded, extract the compressed file using **7-Zip** to obtain the raw ISO image.

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/TOsPSTpBQXuhpUYnM3tl/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/answ1t78AX5MOAmmKQRj/Unknown%20image)

## **Step 2: Upload ISO to AceCloud Horizon**

1. Log in to your AceCloud Horizon dashboard.
2. Navigate to **Project → Compute → Images**.
3. Click **Create Image**:

* Name: pfSense ISO
* Format: ISO
* Image Source: File
* Upload the extracted .iso file.

4. Complete the creation process.

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/yIqU4meyChx0GHbIINVl/Unknown%20image)

## **Step 3: Launch an Instance for pfSense Installation**

1. Navigate to **Project → Compute → Instances**.
2. Click **Launch Instance**:

a. Use the pfSense ISO as the source image.

b. Select a flavor with a minimum of 2 vCPUs and 2 GB RAM.

c. Attach **two NICs**:

1\. One **public** network interface (WAN)

2\. One **private/VPC** interface (LAN)

d. Under **Volumes**, attach an additional blank volume (50 GB) for installation.

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/FZ6ceupmX0PkezkkVz7A/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/msgw2zDDjHsidK9wFWl5/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/1eKGJSIDuSnVwC31fYKu/Unknown%20image)

## **Step 4: Install pfSense on Volume via Console**

1. Open the **console** of the instance.
2. Follow the installation steps as shown in the screenshots to install pfSense **on the attached 50 GB volume**.
3. After successful installation, **shut down the instance**.

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/bzEhvtSaXx9hxio4xIDO/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/iFUmrQaDv2147U9jmBCU/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/yziTIFDlEztgE2EQGDxo/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/SiDYgREDsoTlRTvQkLD1/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/dRGhsB0KZln5w5zbwLcs/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/k6zYsoeDaDOeBHa1DDBp/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/g0nrctXHb0aiRNDlb7IG/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/MOnwH2KpPvJ912qWoo4k/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/fwlNmyMyO9Kckd683W5N/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/y6INPunGeiPL71iD5CoO/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/620wbo6OpsMwXob1VYhm/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/KEnWxtp36E2Ijw8k6nMH/Unknown%20image)

## **Step 5: Create a Bootable pfSense Volume**

1. Detach the 50 GB volume from the instance.
2. Optionally, create an image from this volume for future use.
3. Launch a **new instance**:

a. Source: **Boot from Volume**

b. Use the 50 GB volume or image created from it

c. Flavor: minimum 4 vCPUs, 8 GB RAM

d. Root Disk: minimum **50 GB** (resized volume)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/3QwsVe19h0Tsss71qlpB/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/blnzhXR8kyDQJzvUUWHY/Unknown%20image)

## **Step 6: Set up Networking for pfSense**

1. Attach a **security group** with **all-allow rules**.

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/6qEiN8EOC8yYaX6ILe1n/Unknown%20image)

2. Assign a **WAN interface (public network)**.
3. Create a **private network** (VPC) **without a router** via Horizon.

a. Navigate to **Project → Network → Networks → Create Network**.

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/KgWQvVILz2mB7IW2bqle/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/HZA5yPSZyrbW8ySxzO3q/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/a5IOFsl0PX3InlbY8aT1/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/a5IOFsl0PX3InlbY8aT1/Unknown%20image)

4. Attach this private network to the pfSense VM.
5. Set the **gateway IP** manually from the console.
6. Disable **port security** for this private interface.

![Picture](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/gyiJVkLAYLC9MfQWcA5T/Unknown%20image)

![Picture](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/q9oH0ONzSDZhvPDNF8mc/Unknown%20image)

### **Step 7: pfSense Initial Console Configuration**

1. In the console, identify LAN and WAN interfaces using MAC addresses from Horizon.
2. Set LAN IP via **Option 2**.
3. Reset the default admin password via **Option 3**.

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/DWIUkFZ0nTGzjE3UDhv4/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/Nq5DfYBq88SPwGk2aIAs/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/26F2NB2Oqg5yNvvKntY4/Unknown%20image)

### **Step 8: Connect a Windows VM Behind pfSense**

1. Launch a Windows VM with only the **private interface** (same VPC as pfSense LAN).
2. Access the VM via console.
3. Open a browser and visit pfSense's LAN IP.
4. Log in using default credentials (admin/pfsense) and follow the setup wizard.

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/SUurwltbAsANbwwG2bU9/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/17hWFFNQacSpgx8UPezM/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/UmAQHISWbDS9TMYfrsqV/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/zt0DXQqRhxjorCg8aU3T/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/BACRSTLFLm4jYA6sn2jT/Unknown%20image)

### **Step 9: Configure 1:1 NAT for Internal Machine**

1. Attach a new **public interface** to pfSense (for mapping a public IP).
2. Go to **Interfaces → Assignments** and add the new interface.
3. Name and enable the interface.

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/fya69hdEHmPAUl1x6fE5/Unknown%20image)

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/hKvgPNrrY0rbdecsdClr/Unknown%20image)

4. Go to **Firewall → Rules → \[New Interface]** and allow all traffic.

![](https://content.gitbook.com/content/VBa3yjTJ7LPbjby0TKRi/blobs/HovyWJapZ0fRyzJbojCE/Unknown%20image)

5. Navigate to **Firewall → NAT → 1:1**:

a. Interface: newly added interface

b. External Subnet IP: new public IP

c. Internal IP: Windows machine’s private IP

d. Save and apply changes

### Step 10: Final Testing

Test connectivity to the Windows VM using the new public IP.

Ensure access to pfSense Web UI and confirm internet routing via the WAN interface.

### pfSense Deployment Completed

You have now successfully:

* Installed pfSense on a VM in AceCloud
* Configured LAN/WAN interfaces
* Deployed a Windows machine behind the firewall
* Mapped a public IP via 1:1 NAT
