1. About this Guide
This guide has been created in order to help sales engineers, product managers, or network specialists demonstrate the PacketFence capabilities on-site with an existing or potential customer. It can also provide guidelines to setup a proof of concept for a potential PacketFence deployment using the MobileIron mobile device manager.
You have a configured PacketFence environment with working test equipment;
You have access to a MobileIron cloud account.
3. Quick installation
3.1. Step 1: Configure MobileIron
First of all you will need to configure the basic functionality of MobileIron using their documentation.
3.1.1. MDM profile
One important step is to enable the MDM profile like in this screenshot. Note that this will require you to create an MDM certificate with Apple. Refer to the MobileIron documentation for specifics about this step.
3.2. Step 2: Create an API user
Next, we will need a user that has the rights to access the MobileIron API in order to verify the state of the devices directly from PacketFence.
First go in the USERS & DEVICES tab and then in Users and click Add local user.
Now enter the information about your user and note the user ID and password for usage in the PacketFence configuration, then hit Save.
Now go in the ADMIN tab, check the box next to your newly created user and then in Actions select Assign to Space.
Select the Global space at the top and then check API at the bottom. You should now see API in the roles list of your newly created user when viewing the users list.
3.3. Step 3: Gather the boarding host
To find the boarding host, add a fake device to MobileIron and at the end of the process you will see the registration instructions.
In it you will find the boarding host and port for the PacketFence configuration. In this case, the boarding host is
m.mobileiron.net and the boarding port is
3.4. Step 4: Configure PacketFence
In PacketFence, MDM are referred to as provisioners. This will walk you through adding MobileIron as a provisioner.
3.4.1. Create the provisioner
Login in the PacketFence administration interface, then go in the Configuration tab, then in Provisioners. Click Add provisioner then select mobileiron.
Now configure this new provisioner with the information you got above.
The Provisioning ID is the friendly name of the provisioner.
The Username is the user you created with API access above.
The password is the password of the API user.
The host is the domain name of the instance + your account name if you have a cloud account (ex:
Now add the download URI for the agent. See below for more details.
The Boarding host is the host that you got in step 3.
The Boarding port is the port that you got in step 3.
Here are the URIs that should work by default.
accountName by your real account/instance name at MobileIron.
3.4.2. Add the provisioner to the connection profile
In order for the provisioner to be used by your captive portal you need to add it in its configuration. Go in Connection Profiles, then select the portal you want to modify and add mobileiron as a provisioner.
3.5. Step 5: Add the necessary passthroughs
Next, still in the PacketFence administration console, go in Fencing in the left menu, then scroll then to Passthroughs.
Check the Passthrough box above the field and add the following domains to the passthrough list.
3.5.1. Restart PacketFence
In order to enable the boarding passthrough for the device enrollment, you will need to restart the iptables service of PacketFence.
You can do this using the command line by doing /usr/local/pf/bin/pfcmd service iptables restart or in the administration interface under Status / Services.
3.6. Step 6: Test
You can now test that MobileIron is mandatory after the device registration. Connect a device to your test network and register like you normally would. At the end of the registration process you will be presented a page asking you to install the MobileIron on your device. After you install the agent click Continue. If your access is enabled than this means the connectivity between PacketFence and MobileIron is good.