summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README182
-rw-r--r--README.md254
-rw-r--r--accel-pppd/accel-ppp.conf86
-rw-r--r--accel-pppd/accel-ppp.conf.5270
-rw-r--r--cmake/cpack.cmake2
5 files changed, 606 insertions, 188 deletions
diff --git a/README b/README
deleted file mode 100644
index c91a4e0b..00000000
--- a/README
+++ /dev/null
@@ -1,182 +0,0 @@
-Overview
---------
-The ACCEL-PPP v1.0 is completly new implementation of PPTP/PPPoE/L2TP/SSTP which was written from scratch.
-Userspace daemon has its own PPP implementation, so it does not uses pppd and one process (multi-threaded) manages all connections.
-ACCEL-PPP uses kernel-mode implementations of pptp/l2tp/pppoe and user-mode of sstp.
-
-
-Features
---------
-1. Modular architecture
-2. High-performance multi-threaded I/O core
-3. Supported PPTP
-4. Supported PPPoE (including TR-101 extension)
-5. Supported L2TPv2 (without IPsec)
-5. Radius authentication/accounting
-6. Radius DM/CoA extention
-7. Supported authentication types: PAP, CHAP (md5), Microsoft CHAP Extentions (including version 2), not supported - EAP
-8. Supported MPPE
-9. Compression is not supported
-10. Extensible logging engine with per session logging support, implemented log to file, log to remote host and log to PostgreSQL targets
-11. Extensible user/password database, implemented Radius, pppd compatible chap-secrets sources
-12. Extensible IP pool, implemented Radius, chap-secrets and static pools
-13. Supported pppd compatible ip-up/ip-down scripts
-14. Builtin tbf/htb shaper and clsact policer manager
-15. Command line interface via telnet
-16. SNMP support (master or subagent via AgentX)
-17. Supported SSTP
-
-
-Requirment
-----------
-1. modern linux distribution
-2. kernel-2.6.25 or later
-4. cmake-3.5 or later
-5. libnl-2.0 or probably later (required for builtin shaper)
-6. libcrypto-0.9.8 or probably later (openssl-0.9.8)
-7. libpcre2
-8. net-snmp-5.x
-9. libssl-0.9.8 or probably later (openssl-0.9.8)
-
-
-Compilation and instalation
------------
-Make sure you have configured kernel headers in /usr/src/linux,
-or specify other location via KDIR.
-1. cd /path/to/accel-ppp-1.3.5
-2. mkdir build
-3. cd build
-4. cmake [-DBUILD_DRIVER=FALSE] [-DKDIR=/usr/src/linux] [-DCMAKE_INSTALL_PREFIX=/usr/local] [-DCMAKE_BUILD_TYPE=Release] [-DLOG_PGSQL=FALSE] [-DSHAPER=FALSE] [-DRADIUS=TRUE] [-DNETSNMP=FALSE] ..
- Please note that the double dot record in the end of the command is essential. You'll probably get error or misconfigured sources if you miss it.
- BUILD_DRIVER, KDIR, CMAKE_INSTALL_PREFIX, CMAKE_BUILD_TYPE, LOG_PGSQL, SHAPER, RADIUS are optional,
- But while pptp is not present in mainline kernel you probably need BUILD_DRIVER.
- For example:
- cmake -DBUILD_DRIVER=TRUE ..
- will configure sources to build pptp driver, search kernel headers at /usr/src/linux, install to /usr/local,
- build with no debug, pgsql and shaper support, build with radius support.
-5. If you want to use chap-secrets for authentication purpose then you need to disable radius support, configure as following:
- cmake -DBUILD_DRIVER=TRUE -DRADIUS=FALSE ..
- of course you can include additional options if needed.
-6. make
-7. make install
-
-
-Configuration
--------------
-read man accel-ppp.conf
-For DM/CoA deployments, use the `dae-allowed` option to restrict source IPs.
-
-
-Built-in shaper
---------------
-accel-ppp supports tbf and htb based shaper manager. It also supports clsact policer manager.
-To enable it uncomment shaper in [modules] section.
-It accepts radius attributes in various formats: rate, down-rate/up-rate and cisco-like. Values have to be in kilobits except cisco-like.
-For example:
-Filter-Id=1000 (means 1000Kbit both up-stream and down-stream rate)
-Filter-Id=2000/3000 (means 2000Kbit down-stream rate and 3000Kbit up-stream rate)
-To change radius attribute which containes rate information use 'attr' option, for example:
-[shaper]
-attr=My-Custom-Rate-Attribute
-of course this attribute have to be in radius dictionary.
-To specify different attributes for down-stream and up-stream rates use 'attr-down' and 'attr-up' options, for example:
-[shaper]
-attr-down=PPPD-Downstream-Speed
-attr-up=PPPD-Upstream-Speed
-
-If you want to use cisco-like format configure accel-ppp as following:
-[shaper]
-vendor=Cisco
-attr=Cisco-AVPair
-and send two attributes:
-Cisco-AVPair=lcp:interface-config#1=rate-limit input 2000000 8000 8000 conform-action transmit exceed-action drop (which means 2000Kbit up-stream rate and 8Kb burst)
-Cisco-AVPair=lcp:interface-config#1=rate-limit output 2000000 8000 8000 conform-action transmit exceed-action drop (which means 2000Kbit down-stream rate and 8Kb burst)
-
-
-Advanced shaper using
----------------------
-1. Burst configuration.
-If you not using cisco-like format then burst calculates from rate and specified burst factors.
-To specify burst factors use 'down-burst-factor' and 'up-burst-factor' options, for example:
-[shaper]
-down-burst-factor=1.0
-up-burst-factor=10.0
-which means that burst for tbf/htb qdisc will be calculated as down-stream rate multiply to 1.0 and burst for policer/htb will be calculated as up-stream rate multiply to 10.0.
-
-2. Time ranges.
-You can specify time ranges to authomatic rate reconfiguration.
-To specify time ranges use following sample configuration:
-[shaper]
-time-range=1,1:00-3:00
-time-range=2,3:00-5:00
-time-range=3,5:00-7:00
-first number is time range identifier.
-To specify time range specific rates use following format of radius attributes: range-id,rate, range-id,down-rate/up-rate or cisco-like, for example:
-Filter-Id=1000
-Filter-Id=1,2000
-Filter-Id=2,3000
-Filter-Id=3,4000
-which means: set 1000Kbit by default, set 2000Kbit in time range 1, set 3000Kbit in time range 2, set 4000Kbit in time range 3.
-You have to pass multiple Filter-Id attributes to utilize this functionality.
-Or cisco-like:
-Cisco-AVPair=lcp:interface-config#1=rate-limit output access-group 1 1000000 8000 8000 conform-action transmit exceed-action drop
-Cisco-AVPair=lcp:interface-config#1=rate-limit input access-group 1 1000000 8000 8000 conform-action transmit exceed-action drop
-and so on...
-
-3. chap-secrets.
-If you use chap-secrets instead of radius then there is way to utilize built-in shaper too.
-The optional fifth column in chap-secrets file is used to pass rate information to shaper.
-Its format is same as for radius attributes, except you cann't utilize time ranges functionality.
-
-
-SNMP
-----
-SNMP is implemented using net-snmp libraries. By default accel-ppp starts in subagent mode,
-so make sure that net-snmp configured with subagent control turned on (read net-snmp's README.agentx for more details).
-Also you can start accel-ppp as master agent using following configuration:
-[snmp]
-master=1
-
-Usage:
-Place accel-pppd/extra/net-snmp/ACCEL-PPP-MIB.txt to your mibs directory.
-Also you can find used numerical oids in this file.
-1. Requesting statistics:
-snmpwalk -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::accelPPPStat
-2. Requesting sessions:
-snmptable -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::sessionsTable
-3. Terminate session by session identifier (Acct-Session-ID):
-snmpset -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::termBySID.0 = 0000000000000001
-4. Terminate session by interface name:
-snmpset -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::termByIfName.0 = ppp2
-5. Terminaten session by IP address (Framed-IP-Address):
-snmpset -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::termByIP.0 = 192.168.10.10
-6. Terminate session by username:
-snmpset -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::termByUsername.0 = user1
-7. Execute cli command:
-snmpset -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::cli.0 = "shaper change all 1024 temp"
-
-
-chap-secrets encryption
------------------------
-To enable chap-secrets encryption ablity accel-ppp must be compiled with -DCRYPTO=OPENSSL (which is default).
-Username field may be kept as cleartext or hashed through some hash chain. To specify hash chain use username-hash option.
-For example, username-hash=md5,sha1 means hash username through md5 and then binary result hash through sha1.
-Username have to be specified as hexadecimal dump of digest result.
-Password field have to be encrypted using smbencrypt (NT Hash part).
-Encryption is incompatible with auth_chap_md5 module.
-
-
-Warning !!!
------------
-1. The pptp driver conflicts with ip_gre driver (in kernel), so make sure that ip_gre is not built-in or loaded at run time
- (don't matter if you have 2.6.37 or later kernel).
-2. Don't mix connections of accel-ppp and poptop's pptpd, before starting accel-ppp make sure that no connections
- of pptpd exists.
-
-
-Contacts
---------
-http://accel-ppp.org/
-mail: contact@accel-ppp.org
-ICQ: 337258064
-Jabber: dima@accel-ppp.org
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..2ce25b5f
--- /dev/null
+++ b/README.md
@@ -0,0 +1,254 @@
+ACCEL-PPP
+=========
+
+ACCEL-PPP is a high-performance, multi-threaded VPN and broadband access
+concentrator for Linux. It has its own userspace PPP implementation, so one
+daemon can manage all connections without relying on pppd. The implementation
+was developed from scratch rather than as a wrapper around pppd. It uses Linux
+kernel interfaces for PPTP, L2TP, and PPPoE data paths, while SSTP is handled in
+userspace.
+
+
+Features
+========
+
+* Modular architecture and a multi-threaded I/O core
+* PPTP, PPPoE (including TR-101), L2TPv2, SSTP, and IPoE. ACCEL-PPP does not
+ provide integrated IPsec for L2TPv2; deploy IPsec separately when required.
+* RADIUS authentication and accounting, including Disconnect Messages and
+ Change of Authorization (DM/CoA)
+* PAP, CHAP-MD5, MS-CHAPv1, and MS-CHAPv2 authentication
+* Microsoft Point-to-Point Encryption (MPPE)
+* File, syslog, TCP, and optional PostgreSQL logging, including per-session logs
+* Extensible authentication sources, including RADIUS and pppd-compatible
+ chap-secrets files
+* Extensible IP address pools populated by RADIUS, chap-secrets, or static
+ configuration
+* pppd-compatible ip-up and ip-down scripts
+* TBF/HTB shaping and clsact policing
+* Telnet and TCP command-line interfaces
+* Optional SNMP support as a master agent or AgentX subagent
+
+EAP authentication and PPP compression are not supported.
+
+
+Requirements
+============
+
+Building the daemon requires:
+
+* Linux
+* A C compiler and standard build tools
+* CMake 3.10 or newer
+* OpenSSL development files
+* PCRE2 development files
+
+Kernel headers are also required when building the optional PPTP, IPoE, or VLAN
+monitoring kernel modules. Optional features require their corresponding
+development libraries:
+
+* Net-SNMP for NETSNMP=TRUE
+* PostgreSQL client libraries for LOG_PGSQL=TRUE
+* Lua for LUA=TRUE or a specific Lua version such as LUA=5.3
+
+
+Building and installing
+=======================
+
+Use an out-of-tree build directory:
+
+ cmake -S . -B build \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/usr/local
+ cmake --build build
+ sudo cmake --install build
+
+Useful build options:
+
+* BUILD_PPTP_DRIVER=TRUE builds the PPTP kernel module.
+* BUILD_IPOE_DRIVER=TRUE builds the IPoE kernel module.
+* BUILD_VLAN_MON_DRIVER=TRUE builds the VLAN monitoring kernel module.
+* BUILD_DRIVER_ONLY=TRUE builds only the selected kernel modules.
+* KDIR=/path/to/kernel/build sets the kernel build directory.
+* RADIUS=FALSE omits RADIUS support.
+* SHAPER=FALSE omits the traffic-shaping module.
+* NETSNMP=TRUE builds SNMP support.
+* LOG_PGSQL=TRUE builds PostgreSQL logging support.
+
+For example, to build the IPoE and VLAN monitoring modules for the running
+kernel:
+
+ cmake -S . -B build \
+ -DBUILD_IPOE_DRIVER=TRUE \
+ -DBUILD_VLAN_MON_DRIVER=TRUE \
+ -DKDIR="/usr/src/linux-headers-$(uname -r)"
+ cmake --build build
+
+
+Configuration
+=============
+
+The sample configuration is installed as accel-ppp.conf.dist. See
+"man 5 accel-ppp.conf" for the complete configuration reference.
+
+Enable or disable functionality in the [modules] section. To authenticate from
+a pppd-compatible secrets file, enable chap-secrets instead of radius. RADIUS
+may remain compiled in; RADIUS=FALSE is only needed when it should be omitted
+from the build. Loading both providers does not provide dependable automatic
+fallback from RADIUS to chap-secrets because authentication providers are
+consulted in module registration order.
+
+For DM/CoA deployments, configure dae-allowed in the [radius] section to
+restrict permitted source addresses.
+
+
+Built-in shaper
+===============
+
+The shaper supports TBF and HTB queueing disciplines and a clsact policer.
+Build it with SHAPER=TRUE (the default), then enable shaper in the
+configuration's [modules] section.
+
+RADIUS rate attributes accept a single rate or separate downstream/upstream
+rates. The default attribute is Filter-Id. Values are in Kbit/s unless
+Cisco-style attributes are used:
+
+ Filter-Id=1000
+ Filter-Id=2000/3000
+
+The first example sets both directions to 1000 Kbit/s. The second sets the
+downstream rate to 2000 Kbit/s and the upstream rate to 3000 Kbit/s.
+
+Set a custom rate attribute with attr. The named attribute must exist in the
+RADIUS dictionary:
+
+ [shaper]
+ attr=My-Custom-Rate-Attribute
+
+Alternatively, use separate attributes for each direction:
+
+ [shaper]
+ attr-down=PPPD-Downstream-Speed
+ attr-up=PPPD-Upstream-Speed
+
+For Cisco-style attributes:
+
+ [shaper]
+ vendor=Cisco
+ attr=Cisco-AVPair
+
+Send input and output attributes to set both directions. In Cisco-style
+attributes, input controls upstream traffic and output controls downstream
+traffic:
+
+ Cisco-AVPair=lcp:interface-config#1=rate-limit input 2000000 8000 8000 conform-action transmit exceed-action drop
+ Cisco-AVPair=lcp:interface-config#1=rate-limit output 2000000 8000 8000 conform-action transmit exceed-action drop
+
+These examples set a 2000 Kbit/s rate and an 8 KB burst in each direction.
+
+
+Burst configuration
+-------------------
+
+For non-Cisco attributes, configure the factors used to calculate bursts from
+the rate. down-burst-factor applies to downstream TBF/HTB shaping;
+up-burst-factor applies to upstream policing/HTB shaping:
+
+ [shaper]
+ down-burst-factor=1.0
+ up-burst-factor=10.0
+
+
+Time ranges
+-----------
+
+Time ranges can change rates automatically:
+
+ [shaper]
+ time-range=1,1:00-3:00
+ time-range=2,3:00-5:00
+ time-range=3,5:00-7:00
+
+Prefix a rate with its range ID and supply multiple RADIUS attributes:
+
+ Filter-Id=1000
+ Filter-Id=1,2000
+ Filter-Id=2,3000
+ Filter-Id=3,4000
+
+This sets a default of 1000 Kbit/s and rates of 2000, 3000, and 4000 Kbit/s in
+ranges 1, 2, and 3 respectively.
+
+For Cisco-style time ranges, the access-group value is the range ID:
+
+ Cisco-AVPair=lcp:interface-config#1=rate-limit output access-group 1 1000000 8000 8000 conform-action transmit exceed-action drop
+ Cisco-AVPair=lcp:interface-config#1=rate-limit input access-group 1 1000000 8000 8000 conform-action transmit exceed-action drop
+
+When using chap-secrets, an optional fifth column can provide rate information
+in the same format. Time ranges are not supported in chap-secrets.
+
+
+SNMP
+====
+
+Build SNMP support with NETSNMP=TRUE and enable net-snmp in [modules]. ACCEL-PPP
+starts as an AgentX subagent by default, so the Net-SNMP master agent must have
+AgentX enabled. Consult the Net-SNMP AgentX documentation when configuring the
+master agent. To run ACCEL-PPP as the master agent instead:
+
+ [snmp]
+ master=1
+
+Install accel-pppd/extra/net-snmp/ACCEL-PPP-MIB.txt in the local MIB directory.
+The file also contains the numerical OIDs used by ACCEL-PPP. Examples:
+
+ # Read statistics and sessions.
+ snmpwalk -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::accelPPPStat
+ snmptable -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::sessionsTable
+
+ # Terminate sessions by accounting ID, interface, address, or username.
+ snmpset -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::termBySID.0 = 0000000000000001
+ snmpset -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::termByIfName.0 = ppp2
+ snmpset -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::termByIP.0 = 192.0.2.1
+ snmpset -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::termByUsername.0 = user1
+
+ # Run a CLI command.
+ snmpset -m +ACCEL-PPP-MIB -v 2c -c local 127.0.0.1 ACCEL-PPP-MIB::cli.0 = "shaper change all 1024 temp"
+
+
+Encrypted chap-secrets
+======================
+
+The chap-secrets module supports encrypted passwords through OpenSSL. Set
+encrypted=1 in the [chap-secrets] section. Usernames may remain in cleartext or
+be transformed through a hash chain configured with username-hash, for example:
+
+ [chap-secrets]
+ encrypted=1
+ username-hash=md5,sha1
+
+Hashed usernames must be hexadecimal digest values. Passwords must contain the
+NT hash produced by smbencrypt. Encrypted secrets are incompatible with the
+auth_chap_md5 module. Hash chains are applied from left to right; for
+username-hash=md5,sha1, the binary MD5 result is passed to SHA-1 and the final
+digest is stored as hexadecimal.
+
+
+Kernel module warning
+=====================
+
+The out-of-tree PPTP module conflicts with the kernel's ip_gre module. Do not
+build ip_gre into the kernel or load it at runtime when using that PPTP module.
+Do not mix ACCEL-PPP PPTP connections with poptop's pptpd; stop existing pptpd
+sessions before starting ACCEL-PPP.
+
+
+More information
+================
+
+* Project website: https://accel-ppp.org/
+* Source and issue tracker: https://github.com/accel-ppp/accel-ppp
+* Additional RADIUS notes: docs/
+* Email: contact@accel-ppp.org
+* ICQ: 337258064
+* Jabber: dima@accel-ppp.org
diff --git a/accel-pppd/accel-ppp.conf b/accel-pppd/accel-ppp.conf
index 591a8ca7..c9b2017d 100644
--- a/accel-pppd/accel-ppp.conf
+++ b/accel-pppd/accel-ppp.conf
@@ -36,6 +36,7 @@ pppd_compat
[core]
log-error=/var/log/accel-ppp/core.log
+#log-debug=/var/log/accel-ppp/debug.log
thread-count=4
[common]
@@ -43,11 +44,14 @@ thread-count=4
#single-session-ignore-case=0
#sid-case=upper
#sid-source=seq
+#seq-file=/var/lib/accel-ppp/seq
#max-sessions=1000
#max-starting=0
+#session-timeout=0
#check-ip=0
#nl-snd-buffer=32768
#nl-rcv-buffer=1048576
+#netns-run-dir=/var/run/netns
[ppp]
verbose=1
@@ -57,7 +61,14 @@ mru=1400
#accomp=deny
#pcomp=deny
#ccp=0
+#ccp-max-configure=3
#mppe=require
+#timeout=3
+#max-configure=10
+#max-failure=10
+#max-terminate=2
+#max-mtu=1500
+#check-ip=0
ipv4=require
ipv6=deny
ipv6-intf-id=0:0:0:1
@@ -79,7 +90,14 @@ unit-cache=1
[pptp]
verbose=1
+#bind=0.0.0.0
+#port=1723
#echo-interval=30
+#echo-failure=3
+#timeout=5
+#mppe=allow
+#ppp-max-mtu=1436
+#session-timeout=0
#ip-pool=pptp
#ipv6-pool=pptp
#ipv6-pool-delegate=pptp
@@ -89,16 +107,23 @@ verbose=1
verbose=1
#ac-name=xxx
#service-name=yyy
+#accept-any-service=0
+#accept-blank-service=0
#pado-delay=0
#pado-delay=0,100:100,200:200,-1:500
called-sid=mac
#tr101=1
#padi-limit=0
+#mac-filter=/path/to/mac-filter,allow
+#mppe=allow
+#session-timeout=0
#ip-pool=pppoe
#ipv6-pool=pppoe
#ipv6-pool-delegate=pppoe
#ifname=pppoe%d
+#ifname-in-sid=0
#sid-uppercase=0
+#cookie-timeout=5
#vlan-mon=eth0,10-200
#vlan-timeout=60
#vlan-name=%I.%N
@@ -107,6 +132,8 @@ interface=eth0
[l2tp]
verbose=1
+#bind=0.0.0.0
+#port=1701
#dictionary=/usr/local/share/accel-ppp/l2tp/dictionary
#hello-interval=60
#timeout=60
@@ -117,8 +144,14 @@ verbose=1
#host-name=accel-ppp
#dir300_quirk=0
#secret=
+#hide-avps=0
#dataseq=allow
#reorder-timeout=0
+#use-ephemeral-ports=0
+#ppp-max-mtu=1420
+#mppe=allow
+#session-timeout=0
+#avp_permissive=0
#ip-pool=l2tp
#ipv6-pool=l2tp
#ipv6-pool-delegate=l2tp
@@ -126,6 +159,8 @@ verbose=1
[sstp]
verbose=1
+#bind=0.0.0.0
+#port=443
#cert-hash-proto=sha1,sha256
#cert-hash-sha1=
#cert-hash-sha256=
@@ -142,6 +177,10 @@ verbose=1
#http-error=allow
#timeout=60
#hello-interval=60
+#ppp-max-mtu=1452
+#sndbuf=0
+#rcvbuf=0
+#session-timeout=0
#ip-pool=sstp
#ipv6-pool=sstp
#ipv6-pool-delegate=sstp
@@ -151,6 +190,7 @@ verbose=1
verbose=1
username=ifname
#password=username
+#netmask=24
lease-time=600
#renew-time=300
#rebind-time=525
@@ -160,6 +200,7 @@ max-lease-time=3600
#l4-redirect-ipset=l4
#l4-redirect-on-reject=300
#l4-redirect-ip-pool=pool1
+#noauth=0
shared=0
ifcfg=1
mode=L2
@@ -169,7 +210,12 @@ start=dhcpv4
#proxy-arp=0
#nat=0
#proto=100
+#src=192.0.2.1
#relay=10.10.10.10
+#relay-timeout=3
+#relay-retransmit=3
+#agent-remote-id=accel-ppp
+#link-selection=0.0.0.0
#vendor=Custom
#weight=0
#attr-dhcp-client-ip=DHCP-Client-IP-Address
@@ -186,6 +232,7 @@ start=dhcpv4
#attr-l4-redirect-ipset=l4-redirect
#lua-file=/etc/accel-ppp.lua
#offer-delay=0,100:100,200:200,-1:1000
+#offer-timeout=10
#vlan-mon=eth0,10-200
#vlan-timeout=60
#vlan-name=%I.%N
@@ -197,6 +244,8 @@ start=dhcpv4
#soft-terminate=0
#check-mac-change=1
#calling-sid=mac
+#ipv6=0
+#check-ip=0
#local-net=192.168.0.0/16
interface=eth0
@@ -221,6 +270,10 @@ dae-server=127.0.0.1:3799,testing123
verbose=1
#timeout=3
#max-try=3
+#req-limit=0
+#fail-timeout=0
+#max-fail=10
+#interim-verbose=0
#acct-timeout=120
#acct-delay-time=0
#acct-delay-start=0
@@ -230,7 +283,10 @@ verbose=1
#default-realm=
#strip-realm=0
#attr-tunnel-type=My-Tunnel-Type
+#sid-in-auth=0
#nas-port-id-in-req=1
+#bind=0.0.0.0
+#require-nas-identification=0
blast-protection=1
[client-ip-range]
@@ -267,6 +323,8 @@ level=3
[log-pgsql]
conninfo=user=log
+#connect-inteval=5
+#log-query=insert into log (timestamp, username, sessionid, msg) values ($1, $2, $3, $4)
log-table=log
[pppd-compat]
@@ -286,6 +344,10 @@ gw-ip-address=192.168.100.1
[shaper]
#attr=Filter-Id
+#vendor=Cisco
+#attr-down=PPPD-Downstream-Speed
+#attr-up=PPPD-Upstream-Speed
+#burst-factor=0.1
#down-burst-factor=0.1
#up-burst-factor=1.0
#latency=50
@@ -310,6 +372,8 @@ verbose=1
telnet=127.0.0.1:2000
tcp=127.0.0.1:2001
#password=123
+#prompt=accel-ppp
+#history-file=/var/lib/accel-ppp/cli-history
#sessions-columns=ifname,username,ip,ip6,ip6-dp,type,state,uptime,uptime-raw,calling-sid,called-sid,sid,comp,inbound-if,service-name,rx-bytes,tx-bytes,rx-bytes-raw,tx-bytes-raw,rx-pkts,tx-pkts,netns,vrf
[snmp]
@@ -327,6 +391,8 @@ timeout=60
#format=prometheus
#address=127.0.0.1:8080
#allowed_ips=["127.0.0.1/32"]
+#read_timeout=5
+#max_clients=64
[ipv6-pool]
#gw-ip6-address=fc00:0:1::1
@@ -347,9 +413,29 @@ delegate=fc00:3::/36,48,name=pool4,next=pool3
#fc00:1::3
#dnssl=suffix1.local.net
#dnssl=suffix2.local.net.
+#lifetime=600
[ipv6-dhcp]
verbose=1
pref-lifetime=604800
valid-lifetime=2592000
route-via-gw=1
+#aftr-gw=aftr.example.net
+#server-id=0:0:0:1
+
+[ipv6-nd]
+#MaxRtrAdvInterval=600
+#MinRtrAdvInterval=198
+#MaxInitialRtrAdvCount=5
+#MaxInitialRtrAdvInterval=3
+#AdvManagedFlag=0
+#AdvOtherConfigFlag=0
+#AdvLinkMTU=0
+#AdvReachableTime=0
+#AdvRetransTimer=0
+#AdvCurHopLimit=64
+#AdvDefaultLifetime=1800
+#AdvValidLifetime=2592000
+#AdvPreferredLifetime=604800
+#AdvOnLinkFlag=1
+#AdvAutonomousFlag=1
diff --git a/accel-pppd/accel-ppp.conf.5 b/accel-pppd/accel-ppp.conf.5
index 7c72233e..bfe97e38 100644
--- a/accel-pppd/accel-ppp.conf.5
+++ b/accel-pppd/accel-ppp.conf.5
@@ -49,6 +49,14 @@ PPPoE discovery stage handling module.
.br
SSTP controlling connection handling module.
.TP
+.BI l2tp
+.br
+L2TPv2 connection handling module.
+.TP
+.BI ipoe
+.br
+IPoE connection handling module.
+.TP
.BI auth_pap
PAP authentication module.
.TP
@@ -65,6 +73,10 @@ Microsoft CHAP (version 2) authentication module.
.br
RADIUS interaction module.
.TP
+.BI chap-secrets
+.br
+Authentication and address assignment from a pppd-compatible chap-secrets file.
+.TP
.BI ippool
.br
IPv4 address assigning module.
@@ -77,6 +89,26 @@ IPv6 address assigning module.
.br
IPv6 DHCP module.
.TP
+.BI ipv6_nd
+.br
+IPv6 Neighbor Discovery and Router Advertisement module.
+.TP
+.BI shaper
+.br
+Traffic shaping and policing module.
+.TP
+.BI net-snmp
+.br
+SNMP agent module. It must be built with NETSNMP enabled.
+.TP
+.BI logwtmp
+.br
+Module that writes session records to wtmp.
+.TP
+.BI metrics
+.br
+HTTP statistics endpoint module.
+.TP
.BI sigchld
Helper module to manage child processes, required by pppd_compat
.TP
@@ -91,6 +123,9 @@ Configuration of core module
.BI "log-error=" path
Path to file for core module error logging.
.TP
+.BI "log-debug=" path
+Path to file for core module debug logging.
+.TP
.BI "thread-count=" n
number of working threads, optimal - number of processors/cores
.SH [common]
@@ -116,7 +151,7 @@ Specifies whether accel-ppp should ignore the case when comparing username withi
Specifies in which case generate session identifier (default lower).
.TP
.BI "sid-source=" urandom|seq
-Specifies method assign session id (default urandom).
+Specifies method used to assign session IDs (default seq).
.br
.B urandom
Assign session id by random method
@@ -143,6 +178,9 @@ Specifies netlink maximum send buffer size (SO_SNDBUF option) (default 32768).
.BI "nl-rcv-buffer=" n
Specifies netlink maximum receive buffer size (SO_RCVBUF option) (default 1048576).
.TP
+.BI "netns-run-dir=" path
+Directory containing named network namespace handles (default /var/run/netns).
+.TP
.BI "session-timeout=" n
Specifies max sessions time in seconds, after this time session will be terminated.
.br
@@ -185,7 +223,10 @@ Protocol field compression negotiation.
Disable CCP negotiation if this parameter is zero.
.TP
.BI "ccp-max-configure=" n
-Specifies the maximum number of CCP Configure-Request packets sent without receiving a valid Configure-Ack, Configure-Nak or Configure-Reject before assuming the peer is unable to respond (default 10).
+Specifies the maximum number of CCP Configure-Request packets sent without receiving a valid Configure-Ack, Configure-Nak or Configure-Reject before assuming the peer is unable to respond (default 3).
+.TP
+.BI "timeout=" n
+Specifies the timeout, in seconds, used by PPP finite-state machines (default 3).
.TP
.BI "mppe=" require|prefer|deny
Specifies mppe negotiation preference.
@@ -540,6 +581,81 @@ If enabled accel-ppp will terminate session when detects change of mac address o
.TP
.BI "calling-sid=" mac|ip
Specifies value of Calling-Station-Id attribute.
+.TP
+.BI "netmask=" n
+Specifies the IPv4 prefix length assigned to IPoE sessions (1 through 32).
+.TP
+.BI "nat=" 0|1
+Marks IPoE sessions as requiring NAT.
+.TP
+.BI "noauth=" 0|1
+Authorizes IPoE sessions without consulting a password database. The default is 0.
+.TP
+.BI "check-ip=" 0|1
+Overrides the common duplicate-address check for IPoE sessions.
+.TP
+.BI "ipv6=" 0|1
+Enables IPv6 on IPoE interfaces by default.
+.TP
+.BI "src=" x.x.x.x
+Specifies the source address used by the IPoE service.
+.TP
+.BI "relay-timeout=" n
+Specifies the DHCP relay reply timeout in seconds (default 3).
+.TP
+.BI "relay-retransmit=" n
+Specifies the maximum number of DHCP relay retransmissions (default 3).
+.TP
+.BI "ip-pool=" pool_name
+Specifies the default IPv4 address pool.
+.TP
+.BI "ipv6-pool=" pool_name
+Specifies the default IPv6 address pool.
+.TP
+.BI "ipv6-pool-delegate=" pool_name
+Specifies the default delegated IPv6 prefix pool.
+.TP
+.BI "lua-file=" path
+Loads the Lua file that supplies IPoE Lua hooks. Lua support must be built in.
+.TP
+.BI "vendor=" vendor
+Specifies the RADIUS vendor used when resolving the IPoE attribute options below.
+.TP
+.BI "attr-dhcp-client-ip=" attribute
+Specifies the RADIUS attribute containing the DHCP client address.
+.TP
+.BI "attr-dhcp-router-ip=" attribute
+Specifies the RADIUS attribute containing the DHCP router address.
+.TP
+.BI "attr-dhcp-mask=" attribute
+Specifies the RADIUS attribute containing the DHCP subnet mask.
+.TP
+.BI "attr-dhcp-lease-time=" attribute
+Specifies the RADIUS attribute containing the DHCP lease time.
+.TP
+.BI "attr-dhcp-renew-time=" attribute
+Specifies the RADIUS attribute containing the DHCP renewal time.
+.TP
+.BI "attr-dhcp-rebind-time=" attribute
+Specifies the RADIUS attribute containing the DHCP rebinding time.
+.TP
+.BI "attr-dhcp-opt82=" attribute
+Specifies the RADIUS attribute used for the complete DHCP Option 82 value.
+.TP
+.BI "attr-dhcp-opt82-remote-id=" attribute
+Specifies the RADIUS attribute used for the Option 82 remote ID.
+.TP
+.BI "attr-dhcp-opt82-circuit-id=" attribute
+Specifies the RADIUS attribute used for the Option 82 circuit ID.
+.TP
+.BI "attr-l4-redirect=" attribute
+Specifies the RADIUS attribute that enables Layer-4 redirection.
+.TP
+.BI "attr-l4-redirect-table=" attribute
+Specifies the RADIUS attribute containing the redirection routing-table ID.
+.TP
+.BI "attr-l4-redirect-ipset=" attribute
+Specifies the RADIUS attribute containing the redirection ipset name.
.SH [dns]
.TP
.BI "dns1=" x.x.x.x
@@ -561,6 +677,9 @@ Specifies IPv6 DNS to be sent to peer. You may specify up to 3 dns options.
.TP
.BI "dnssl=" name
Specify DNS Search List. You may specify multiple dns and dnssl options.
+.TP
+.BI "lifetime=" n
+Specifies the RDNSS and DNSSL lifetime advertised by the ipv6_nd module.
.SH [client-ip-range]
You have to explicitly specify range of ip address from which clients can connect to server in form:
.br
@@ -610,6 +729,15 @@ sessions. Default value is 1436.
Specifies max sessions time in seconds, after this time session will be terminated.
.br
This timeout can be redefined with radius attribute Session-Timeout. 0 value means infinite timeout.
+.TP
+.BI "ip-pool=" pool_name
+Specifies the name of the IPv4 pool used by PPTP sessions.
+.TP
+.BI "ipv6-pool=" pool_name
+Specifies the name of the IPv6 pool used by PPTP sessions.
+.TP
+.BI "ipv6-pool-delegate=" pool_name
+Specifies the name of the delegated IPv6 prefix pool used by PPTP sessions.
.SH [pppoe]
.br
Configuration of PPPoE module.
@@ -653,9 +781,11 @@ By default vlan-name=%I.%N.
.TP
.BI "ac-name=" ac-name
Specifies AC-Name tag value. If absent tag will not be sent.
+The compatibility alias AC-Name=ac-name is also accepted.
.TP
.BI "service-name=" service-name
Specifies Service-Name to respond. If absent any Service-Name is acceptable and client's Service-Name will be sent back.
+The compatibility alias Service-Name=service-name is also accepted.
.TP
.BI "accept-any-service=" n
If service-name specified still will answer with service names, but accepts any service name in PADR request. Useful
@@ -667,6 +797,7 @@ Useful when needs to allow only Service-Names described in the config and also b
.TP
.BI "pado-delay=" delay[,delay1:count1[,delay2:count2[,...]]]
Specifies delays (also in condition of connection count) to send PADO (ms).
+The compatibility alias PADO-Delay=delay is also accepted.
Last delay in list may be -1 which means don't accept new connections.
List have to be sorted by count key.
.TP
@@ -732,6 +863,9 @@ Specifies the timeout in seconds for the PPPoE cookie (PADO/PADR stage).
.br
Configuration of L2TP module.
.TP
+.BI "dictionary=" path
+Specifies an alternate L2TP attribute dictionary.
+.TP
.BI "bind=" x.x.x.x
Specifies IP address to bind.
.TP
@@ -882,6 +1016,9 @@ This is useful when accel-ppp is running behind a load balancer (like HAProxy or
- \fBCalling-Station-Id\fR attribute in RADIUS and logs.
.br
.TP
+.BI "ssl=" 0|1
+Deprecated compatibility option that enables legacy SSL mode. Use accept=ssl instead.
+.TP
.BI "ssl-protocol=" ssl2|ssl3|tls1|tls1.1|tls1.2|tls1.3
Specifies the enabled SSL/TLS protocols supported by OpenSSL library.
.TP
@@ -915,6 +1052,9 @@ If not set, secret key will be loaded from the
.BI pemfile
parameter.
.TP
+.BI "ssl-ca-file=" file
+Specifies a CA bundle loaded into the SSTP TLS context.
+.TP
.BI "cert-hash-proto=" sha1,sha256
Specifies hashing methods that can be used to compute the Compound MAC in the Crypto Binding attribute.
Default is sha1 and sha256 both.
@@ -981,6 +1121,9 @@ This timeout can be redefined with radius attribute Session-Timeout. 0 value mea
.br
Configuration of RADIUS module.
.TP
+.BI "dictionary=" path
+Specifies an alternate RADIUS dictionary.
+.TP
.BI "nas-identifier=" identifier
Specifies value to send to RADIUS server in NAS-Identifier attribute and to be matched in DM/CoA requests.
.TP
@@ -1059,6 +1202,18 @@ Timeout to wait response from server (sec)
.BI "max-try=" n
Specifies number of tries to send Access-Request/Accounting-Request queries.
.TP
+.BI "req-limit=" n
+Specifies the global limit of simultaneous requests per RADIUS server. Zero means unlimited.
+.TP
+.BI "fail-timeout=" n
+Specifies how long, in seconds, an unresponsive RADIUS server remains unavailable.
+.TP
+.BI "max-fail=" n
+Specifies the number of consecutive unanswered requests before a RADIUS server is marked unavailable.
+.TP
+.BI "fail-time=" n
+Deprecated alias for fail-timeout.
+.TP
.BI "acct-timeout=" n
Specifies timeout of accounting interim update.
.TP
@@ -1117,6 +1272,12 @@ Path to file to write emergency messages.
.BI "log-fail-file=" file
Path to file to write authentication failed session log.
.TP
+.BI "log-debug=" file
+Path to file to write debug messages.
+.TP
+.BI "color=" 0|1
+Enables ANSI color sequences in file log output.
+.TP
.BI "log-tcp=" x.x.x.x:port
Send logs to specified host.
.TP
@@ -1165,6 +1326,14 @@ Configuration of log_pgsql module.
.BI "conninfo=" conninfo
Conninfo to connect to PostgreSQL server.
.TP
+.BI "connect-inteval=" n
+Specifies the PostgreSQL reconnect interval in seconds (default 5).
+The option name intentionally preserves its historical spelling.
+.TP
+.BI "log-query=" query
+Specifies a custom parameterized INSERT query. Parameters $1 through $4 are
+timestamp, username, session ID, and message respectively.
+.TP
.BI "log-table=" table
Table to send log messages. Table must contain following field:
.br
@@ -1179,7 +1348,7 @@ text
.br
.B msg
text
-.SH [pppd_compat]
+.SH [pppd-compat]
.br
Configuration of pppd_compat module.
.TP
@@ -1200,6 +1369,10 @@ Prefix of radattr files (for example /var/run/radattr, resulting files will be /
.TP
.BI "verbose=" n
If specified and greater than zero pppd_module will produce verbose logging.
+.TP
+.BI "fork-limit=" n
+Limits the number of concurrently running compatibility scripts. The default is
+twice the number of online processors.
.SH [chap-secrets]
.br
Configuration of chap-secrets module.
@@ -1211,7 +1384,7 @@ Specifies address to use as local address of ppp interfaces if chap-secrets is u
Specifies alternate chap-secrets file location (default is /etc/ppp/chap-secrets).
.TP
.BI "encrypted=" 0|1
-Specifies either chap-secrets is encrypted (read README).
+Specifies whether chap-secrets is encrypted (see README.md).
.TP
.BI "username-hash=" hash1[,hash2]
Specifies hash chain to calculate username hash.
@@ -1268,8 +1441,71 @@ If attribute is vendor-specific then specify vendor name in this option.
Note: overlapping ranges in different pools are not de-duplicated. If two pools cover the same address, that IP can be allocated from each pool independently. Use non-overlapping ranges (or a single pool with next= chaining) to avoid duplicate assignments.
.SH [ipv6-dhcp]
.TP
+.BI "verbose=" 0|1
+Enables verbose DHCPv6 logging.
+.TP
+.BI "pref-lifetime=" n
+Specifies the preferred address and prefix lifetime in seconds (default 604800).
+.TP
+.BI "valid-lifetime=" n
+Specifies the valid address and prefix lifetime in seconds (default 2592000).
+.TP
+.BI "route-via-gw=" 0|1
+Controls whether delegated IPv6 routes are installed through the session gateway (default 1).
+.TP
+.BI "server-id=" x:x:x:x
+Specifies the four 16-bit hexadecimal components used as the DHCPv6 server identifier.
+.TP
.BI "aftr-gw=" name
Specifies the AFTR-Name option value to be returned on DHCPv6 replies upon request from the client.
+.SH [ipv6-nd]
+.br
+Configuration of IPv6 Neighbor Discovery and Router Advertisements.
+.TP
+.BI "MaxRtrAdvInterval=" n
+Maximum unsolicited Router Advertisement interval in seconds (default 600).
+.TP
+.BI "MinRtrAdvInterval=" n
+Minimum unsolicited Router Advertisement interval in seconds (default one third of MaxRtrAdvInterval).
+.TP
+.BI "MaxInitialRtrAdvCount=" n
+Maximum number of initial Router Advertisements (default 5).
+.TP
+.BI "MaxInitialRtrAdvInterval=" n
+Maximum interval between initial Router Advertisements in seconds (default 3).
+.TP
+.BI "AdvManagedFlag=" 0|1
+Sets the Managed Address Configuration flag. By default it follows whether ipv6_dhcp is loaded.
+.TP
+.BI "AdvOtherConfigFlag=" 0|1
+Sets the Other Configuration flag. By default it follows whether ipv6_dhcp is loaded.
+.TP
+.BI "AdvLinkMTU=" n
+Specifies the MTU advertised in Router Advertisements. Zero omits the MTU option.
+.TP
+.BI "AdvReachableTime=" n
+Specifies the advertised reachable time in milliseconds.
+.TP
+.BI "AdvRetransTimer=" n
+Specifies the advertised retransmission timer in milliseconds.
+.TP
+.BI "AdvCurHopLimit=" n
+Specifies the advertised current hop limit (default 64).
+.TP
+.BI "AdvDefaultLifetime=" n
+Specifies the router lifetime in seconds (default three times MaxRtrAdvInterval).
+.TP
+.BI "AdvValidLifetime=" n
+Specifies the advertised prefix valid lifetime in seconds (default 2592000).
+.TP
+.BI "AdvPreferredLifetime=" n
+Specifies the advertised prefix preferred lifetime in seconds (default 604800).
+.TP
+.BI "AdvOnLinkFlag=" 0|1
+Sets the advertised prefix on-link flag (default 1).
+.TP
+.BI "AdvAutonomousFlag=" 0|1
+Sets the autonomous address-configuration flag. By default it is disabled when ipv6_dhcp is loaded and enabled otherwise.
.SH [ipv6-pool]
.br
Configuration of ipv6pool module.
@@ -1350,7 +1586,7 @@ after
.BI "read_timeout=" seconds
Maximum time a client may take to deliver a complete HTTP request.
Connections that have not produced a terminating
-.BR \(dq\\r\\n\\r\\n\(dq
+.B \(dq\er\en\er\en\(dq
within this deadline are closed. Defaults to 5 seconds. Set to
.B 0
to disable the deadline.
@@ -1378,6 +1614,9 @@ This module controls shaper.
.BI "attr=" name
Specifies which radius attribute contains rate information. Default - Filter-ID.
.TP
+.BI "vendor=" vendor
+Specifies the RADIUS vendor for vendor-specific rate attributes.
+.TP
.BI "attr-up=" name
.TP
.BI "attr-down=" name
@@ -1397,6 +1636,9 @@ Specifies latency (in milliseconds) parameter of tbf qdisc.
.BI "mpu=" n
Specifies mpu parameter of tbf qdisc and policer.
.TP
+.BI "mtu=" n
+Specifies the MTU used in shaper calculations.
+.TP
.BI "r2q=" n
Specifies r2q parameter of root htb qdisc.
.TP
@@ -1406,6 +1648,12 @@ Specifies quantum parameter of htb classes.
.BI "moderate-quantum=" 1|0
If fixed quantum is not specified and this option is specified then shaper module will check for quantum value is valid (in range 1000-200000).
.TP
+.BI "cburst=" n
+Specifies the HTB class ceil burst in bytes (default 1534).
+.TP
+.BI "ifb=" ifname
+Specifies the IFB interface used for upstream HTB shaping. Without it, upstream HTB falls back to policing.
+.TP
.BI "fwmark=" n
Specifies the fwmark for traffic that won't be passed through shaper.
.TP
@@ -1428,6 +1676,9 @@ Due to accel-ppp operates with rates in kilobit basis if you send rates in diffe
.TP
.BI "rate-limit=" download_speed/upload_speed
Specifies, should accel-ppp set default rate-limit for clients. Clients rate-limit will be overwritten by RADIUS filter attributes or chap-secrets rate-limit params.
+.TP
+.BI "verbose=" 0|1
+Enables verbose shaper logging.
.SH [cli]
.br
Configuration of the command line interface.
@@ -1543,3 +1794,12 @@ command (defaults to
- virtual routing and forwarding
.br
Invalid column names are silently discarded.
+.SH [snmp]
+.br
+Configuration of the optional net-snmp module.
+.TP
+.BI "master=" 0|1
+Runs as an AgentX subagent when set to 0 (the default), or as the SNMP master agent when set to 1.
+.TP
+.BI "agent-name=" name
+Specifies the AgentX subagent name (default accel-ppp).
diff --git a/cmake/cpack.cmake b/cmake/cpack.cmake
index ee2a0391..b0c4823d 100644
--- a/cmake/cpack.cmake
+++ b/cmake/cpack.cmake
@@ -17,7 +17,7 @@ SET(CPACK_PACKAGE_CONTACT "Dmitry Kozlov <xeb@mail.ru>")
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "PPtP/L2TP/PPPoE/SSTP server for Linux")
SET(CPACK_PACKAGE_VENDOR "Dmitry Kozlov")
-SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
+SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
IF(CPACK_TYPE STREQUAL Debian9)