Перейти до змісту

accel-ppp PPPoE Server

Вступ

PPPoE — це протокол, який використовується в основному провайдерами DSL і оптоволокна до дому, де клієнти автентифікуються за допомогою комбінації імені користувача та пароля. PPPoE використовується в країнах, де від чинного провайдера потрібен спільний доступ до своєї мережі з іншими провайдерами, оскільки клієнти можуть бути маршрутизовані через доменне ім’я до потрібного провайдера.

accel-ppp — це прискорена реалізація PPPoE за допомогою ядра Linux і пов’язаних протоколів, таких як PPTP, L2TP та інші.

Передумови

  • Сервер з двома мережевими інтерфейсами
  • Клієнтський маршрутизатор або машина, що розмовляє PPPoE

Встановлення accel-ppp

Оскільки accel-ppp відсутній у сховищах Rocky або EPEL за замовчуванням, ми спочатку встановлюємо необхідні пакунки для його створення:

dnf install -y rpm-build make cmake gcc git openssl-devel pcre-devel kernel-modules-extra

Згодом клонуйте вихідний код accel-ppp до папки:

git clone https://github.com/accel-ppp/accel-ppp.git /opt/accel-ppp
mkdir /opt/accel-ppp/build
cd /opt/accel-ppp/build/

Далі нам потрібно створити accel-ppp (Примітка: якщо ви використовуєте Rocky Linux 8.x, замініть у Centos8 Centos9):

cmake -DCMAKE_INSTALL_PREFIX=/usr -DCPACK_TYPE=Centos9 ..
make

Нарешті, ми створимо пакет rpm і встановимо його:

cpack -G RPM
rpm -ivh accel-ppp.rpm

Налаштування accel-ppp

По-перше, нам потрібно ввімкнути IP-переадресацію:

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

Потім додайте наступне до /etc/accel-ppp.conf:

[modules]
log_file
pppoe
auth_mschap_v2
auth_mschap_v1
auth_chap_md5
auth_pap
chap-secrets
ippool

[core]
log-error=/var/log/accel-ppp/core.log
thread-count=4

[ppp]
ipv4=require

[pppoe]
interface=YOUR_INTERFACE

[dns]
dns1=YOUR_DNS1
dns2=YOUR_DNS2

[ip-pool]
gw-ip-address=YOUR_GW
YOUR_IP_RANGE

[chap-secrets]
gw-ip-address=YOUR_GW
chap-secrets=/etc/chap-secrets

Замініть наступну інформацію:

  • YOUR_INTERFACE з інтерфейсом, який прослуховує клієнтів PPPoE.
  • YOUR_DNS1 і YOUR_DNS2 із DNS-серверами для передачі клієнтам.
  • YOUR_GW – це IP-адреса сервера для клієнтів PPPoE. Це повинно відрізнятися від IP-адреси сервера WAN або шлюзу за замовчуванням.
  • YOUR_IP_RANGE з діапазонами IP-адрес для роздачі клієнтам. Це може бути діапазон IP-адрес, наприклад X.X.X.Y-Z, або у форматі CDIR, наприклад X.X.X.X/MASK.

Згодом додамо файл barebone /etc/chap-secrets:

user    *   password    *

Ви можете додати більше користувачів за допомогою додаткових рядків, замінивши user і password на потрібне ім'я користувача та пароль.

Налаштування клієнта PPPoE

Після налаштування сервера PPPoE ми можемо почати додавати клієнтів PPPoE. Автор любить використовувати MikroTik CHR як свій клієнт PPPoE для тестування, тому ми будемо використовувати його.

Після встановлення MikroTik CHR на систему, підключену до тієї ж мережі Ethernet, що й інтерфейс прослуховування сервера PPPoE, ми налаштуємо PPPoE:

[admin@MikroTik] > /interface pppoe-client
[admin@MikroTik] > add add-default-route=yes disabled=no interface=ether1 name=pppoe-out1 \
    password=password user=user

Якщо все працює належним чином, ми повинні отримати адресу IPv4:

[admin@MikroTik] > /ip/address/print
Flags: D - DYNAMIC
Columns: ADDRESS, NETWORK, INTERFACE
#   ADDRESS      NETWORK   INTERFACE 
0 D 10.0.0.1/32  10.0.0.0  pppoe-out1

Висновок

PPPoE часто отримує погану репутацію, і легко зрозуміти чому: вам потрібно налаштувати імена користувачів і паролі вручну. Незважаючи на це, він забезпечує безпеку під час підключення до широкомовного домену рівня 2 у сценаріях провайдера, де вимагати 802.1X або MACsec було б небажано, наприклад, щоб дозволити маршрутизатори, що належать клієнтам, або статичні IP-адреси. І тепер ви власний міні-провайдер, вітаємо!

Author: Neel Chauhan