Files
api_utils_converse_v2/readme/Mikrotik - EasyFi.md
T
2025-02-09 16:30:07 +05:30

407 lines
9.9 KiB
Markdown

# MiktoTik Configuration Steps
### We need to configure MikroTik servers for two end use cases - PPPoE or HotSpot. here are the steps to achieve them through MikroTik's REST API facility. Use the `MiktoTik (EasyFi)` Postman collection for this.
#### Authors: Bhushan, Hari, Khushal
#### Date: 20250209
### General Notes:
Private IP series has been allocated for doing carrier-grade NAT = 100.64.0.0/10
PPPoE:
- PPPoE user master subnet = 100.64.0.0/16
- pppoe_ip_subnet: 100.64.0.0/24 = if user is under 256
- pppoe_ip_subnet: 100.64.0.0/23 = if user is under 512
- pppoe_ip_subnet: 100.64.0.0/22 = if user is under 1024
- pppoe_ip_subnet: 100.64.0.0/21 = if user is under 2048
- PPPoE deactivated user master subnet = 10.0.0.0/16
HotSpot
- HotSpot user master subnet = 100.65.0.0/16
- hotspot_ip_subnet: 100.65.0.0/24 = if user is under 256
- hotspot_ip_subnet: 100.65.0.0/23 = if user is under 512
- hotspot_ip_subnet: 100.65.0.0/22 = if user is under 1024
- hotspot_ip_subnet: 100.65.0.0/21 = if user is under 2048
---
## Steps for HotSpot
### 1. Interface
- Enlist the available interfaces.
- Select the first one that has field `"running"` set to `"false"`, and pick its `".id"`.
- Rename it to `"easyfi-hs"` by its `".id"`.
### 2. Create a VLAN
Create a VLAN with the following config:
```json
{
"name": "easyfi-vlan-<vlan_id>",
"interface": "easyfi-hs", // The name that was given in the previous step.
"vlan-id": "<vlan_id>", // From the config received on the portal.
"disabled": "no"
}
```
### 3. Add a new IP Address to the VLAN interface
```json
{
"address": "<hotspot_ip_subnet>", // Refer to the general notes.
"interface": "easyfi-vlan-<vlan_id>", // Same as the 'name' given in the previous step.
"disabled": "no"
}
```
### 4. Add a New IP Pool for HotSpot Users
```json
{
"name": "easyfi-hs-pool-<vlan_id>",
"ranges": "<hotspot_ip_subnet>" // Refer to the general notes.
}
```
### 5. Add a New HotSpot Profile
```json
{
"dns-name": "hs01.easyfi.net.in",
"hotspot-address": "100.65.0.1", // First from the subnet. Refer to the general notes.
"html-directory": "hotspot",
"html-directory-override": "",
"http-cookie-lifetime": "3d",
"http-proxy": "0.0.0.0:0",
"install-hotspot-queue": "false",
"login-by": "cookie,http-chap",
"name": "hs01.easyfi.net.in",
"split-user-domain": "false",
"use-radius": "true",
"nas-port-type": "wireless-802.11",
"radius-accounting": "true",
"radius-default-domain": "",
"radius-interim-update": "received",
"radius-location-id": "",
"radius-location-name": "",
"radius-mac-format": "XX:XX:XX:XX:XX:XX"
}
```
### 6. Add a New HotSpot Server
```json
{
"address-pool": "easyfi-hs-pool-<vlan_id>", // Same as the name given when creating the pool.
"addresses-per-mac": "2",
"idle-timeout": "5m",
"interface": "easyfi-vlan-<vlan_id>", // Same as the 'name' given when creating the VLAN.
"keepalive-timeout": "none",
"login-timeout": "none",
"name": "hs01.easyfi.net.in",
"profile": "hs01.easyfi.net.in",
"disabled": "false"
}
```
### 7. Add a New DHCP Server
```json
{
"address-pool": "easyfi-hs-pool-<vlan_id>", // Same as the name given when creating the pool.
"authoritative": "yes",
"disabled": "false",
"interface": "easyfi-vlan-<vlan_id>", // Same as the 'name' given when creating the VLAN.
"lease-time": "30m",
"name": "easyfi-hs-dhcp-<vlan_id>",
"use-radius": "no"
}
```
### 8. Add a New DHCP Network
```json
{
"address": "<hotspot_ip_subnet>", // Refer to the general notes.
"gateway": "100.65.0.1", // First from the subnet. Refer to the general notes.
"netmask": "24", // Refer to the no. of users in the general notes.
"dns-server": "100.65.0.1" // First from the subnet. Refer to the general notes.
}
```
### 9. Whitelist the RADIUS Server IP in the HotSpot Server
Hint: Walled-Garden IPs
```json
{
"action": "accept",
"dst-address": "<radius_server_ip>" // Received from the portal.
}
```
### 10. Add a New RADIUS Server:
```json
{
"accounting-port": "1813",
"address": "<radius_server_ip>", // Received from the portal.
"authentication-port": "1812",
"disabled": "false",
"protocol": "udp",
"secret": "<radius_server_secret>", // Received from the portal.
"service": "ppp,login,hotspot,dhcp",
"timeout": "300ms"
}
```
### 11. Allow Incoming Communication from the RADIUS Server to the MikroTik Device
```json
{
"accept": "yes",
"port": "3799"
}
```
### 12. Add a New DNS Server
```json
{
"allow-remote-requests": "true",
"servers": "8.8.8.8,8.8.4.4"
}
```
### 13. Add Firewall Rules for NAT-ing
**NOTE:** Looping needed to split the bigger IP subnet into smaller subnets.
```json
{
"action": "src-nat",
"chain": "srcnat",
"disabled": "false",
"src-address": "100.65.0.16/28",
"to-addresses": "111.222.111.111"
}
```
### 14. Add a New SNMP Community
```json
{
"addresses": "::/0",
"authentication-password": "",
"authentication-protocol": "MD5",
"disabled": "false",
"encryption-password": "",
"encryption-protocol": "DES",
"name": "<random_16_chars>",
"read-access": "true",
"security": "none",
"write-access": "false" // ALWAYS FALSE
}
```
---
## Steps for PPPoE
### 1. Interface
- Enlist the available interfaces.
- Select the first one that has field `"running"` set to `"false"`, and pick its `".id"`.
- Rename it to `"easyfi-ppp"` by its `".id"`.
### 2. Create a VLAN
Create a VLAN with the following config:
```json
{
"name": "easyfi-vlan-<vlan_id>",
"interface": "easyfi-ppp", // The name that was given in the previous step.
"vlan-id": "<vlan_id>", // From the config received on the portal.
"disabled": "no"
}
```
### 3. Add a New IP Pool for PPPoE Users
```json
{
"name": "easyfi-ppp-pool-<vlan_id>",
"ranges": "<pppoe_ip_subnet>" // Refer to the general notes.
}
```
### 4. Add a New PPPoE Profile
```json
{
"address-list": "",
"bridge-learning": "default",
"change-tcp-mss": "yes",
"dns-server": "8.8.8.8",
"local-address": "102.210.175.251", // nasIP (MikroTik IP)
"name": "easyfi-ppp-profile",
"only-one": "yes",
"remote-address": "easyfi-ppp-pool-<vlan_id>",
"use-compression": "default",
"use-encryption": "default",
"use-ipv6": "yes",
"use-mpls": "default",
"use-upnp": "default"
}
```
### 5. Add a PPPoE Server
```json
{
"address-list": "",
"bridge-learning": "default",
"change-tcp-mss": "yes",
"default": "false",
"dns-server": "8.8.8.8",
"local-address": "102.210.175.251",
"name": "easyfi-ppp-profile",
"only-one": "yes",
"remote-address": "easyfi-ppp-pool-2001",
"use-compression": "default",
"use-encryption": "default",
"use-ipv6": "yes",
"use-mpls": "default",
"use-upnp": "default"
}
```
### 6. Allowing User Authentication RADIUS Server
```json
{
"accounting": "true",
"interim-update": "3m",
"use-circuit-id-in-nas-port-id": "false",
"use-radius": "true"
}
```
### 7. Add a New RADIUS Server:
```json
{
"accounting-port": "1813",
"address": "<radius_server_ip>", // Received from the portal.
"authentication-port": "1812",
"disabled": "false",
"protocol": "udp",
"secret": "<radius_server_secret>", // Received from the portal.
"service": "ppp,login,hotspot,dhcp",
"timeout": "300ms"
}
```
### 8. Allow Incoming Communication from the RADIUS Server to the MikroTik Device
```json
{
"accept": "yes",
"port": "3799"
}
```
### 9. Add Firewall Rules for NAT-ing
**NOTE:** Looping needed to split the bigger IP subnet into smaller subnets.
```json
{
"action": "src-nat",
"chain": "srcnat",
"disabled": "false",
"src-address": "100.64.0.16/28",
"to-addresses": "111.222.111.111"
}
```
### 10. Add a New SNMP Community
```json
{
"addresses": "::/0",
"authentication-password": "",
"authentication-protocol": "MD5",
"disabled": "false",
"encryption-password": "",
"encryption-protocol": "DES",
"name": "<random_16_chars>",
"read-access": "true",
"security": "none",
"write-access": "false" // ALWAYS FALSE
}
```
---
### General Notes:
- Master Block Private IP series used for Active Customers PPPoE and HotSpot range is 100.64.0.0/10
- - Private IP series used for Active Customers PPPoE and is 100.64.0.0/16
- Private IP series used for Active Customers HotSpot range is 100.65.0.0/16
- Private IP series used for Deactivated Customers PPPoE range is 10.0.0.0/16
---
### Steps for PPPoE:
- Create IP Pool.
- /ip/pool
- Add a new pool with the `"Name"` set to `"permitted"` and `Addresses` set to `100.64.0.0/24`.
- Add a new pool with the `"Name"` set to `"deactived"` and `Addresses` set to `10.0.0.0/16`.
- Create a PPPoE profile.
- /ppp/profiles
- Add a local address (Local Address is the WAN IP of the MikroTik) to the profile.
- Add a remote address to the profile with the `Name` set to `"permitted"`.
- Add a DNS server to the profile.
- Change `TCP MSS` to `"yes"`
- Change `Limits -> Only One` to `"yes"`
- /interface/pppoe-server
- Add a new server.
- Add service name (as per req.)
- Select the interface.
- Select the profile.
- Select authentication mechanism (chap/pap/mschap1/mschap2).
- Keepalive Timeout 900
- /ppp/secret/ppp-authorization and accounting, select use radius and accounting.
- Go to RADIUS
- Add service (select: ppp, login, hotspot, dhcp)
- Put in the RADIUS server's addr in the address col, select UDP as the protocol, put the secret.
- Go to IP firewall.
- NAT
- Create source-map (as per req.)
---
### Steps for HotSpot:
- Create IP Pool.
- /ip/pool
- Add a new pool with the `"Name"` set to `"hotspot"` and `Addresses` set to `100.65.0.0/24`.
- IP -> Hotspot -> Add -> Server Name = "New hotspot" -> Interface -> Pool -> Name = "hotspot" -> Add
- IP -> Addresses -> Add -> Address -> First IP from the Hotspot IP Pool as the gateway (100.65.0.1/24)