summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Dockerfile27
-rw-r--r--README.md18
-rw-r--r--docker/Dockerfile36
-rwxr-xr-xdocker/entrypoint.sh32
-rw-r--r--docs/conf.py4
-rw-r--r--docs/services/pppoe-server.rst56
-rw-r--r--docs/system/index.rst6
-rw-r--r--docs/system/system-users.rst111
-rw-r--r--docs/system/systemusers.rst56
9 files changed, 244 insertions, 102 deletions
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index 929f36a3..00000000
--- a/Dockerfile
+++ /dev/null
@@ -1,27 +0,0 @@
-# Must be run with --privileged flag
-# Recommended to run the container with a volume mapped
-# in order to easy exprort images built to "external" world
-FROM debian:stretch
-
-RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
- vim \
- git \
- mc \
- make \
- python3-sphinx \
- python-sphinx-rtd-theme \
- latexmk \
- texlive-latex-recommended \
- texlive-fonts-recommended \
- texlive-latex-extra sudo \
- && rm -rf /var/lib/apt/lists/*
-
-RUN groupadd -g 1000 debian
-RUN useradd -d /home/debian -ms /bin/bash -g 1000 -u 1000 debian && \
- echo "debian:debian" | chpasswd && \
- adduser debian sudo
-
-RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
-
-USER debian
-WORKDIR ~
diff --git a/README.md b/README.md
index 0ac09cb0..87484405 100644
--- a/README.md
+++ b/README.md
@@ -20,22 +20,18 @@ Required Debian Packages:
## Docker
-## Create Container
+Using our [Dockerfile](docker/Dockerfile) you create your own Docker container
+that is used to build a VyOS documentation.
+
+## Setup
```bash
-$ docker build -t vyos-docu - < Dockerfile
+$ docker build -t vyos-docu docker
```
-### Build Documentation
+### Build
Linux
```bash
-$ docker run -v `pwd`:`pwd` -w `pwd`/docs -i -t --rm vyos-docu bash
-```
-
-Windows PowerShell
-```powershell
-docker run -v "$($pwd.path):/vyos" -w "/vyos/docs" -i -t --rm vyos-docu bash
+$ docker run --rm -it -v "$(pwd)":/vyos -w /vyos/docs -e GOSU_UID=$(id -u) -e GOSU_GID=$(id -g) vyos-docu make html
```
-
-Inside the container you can then build the documentation as stated above.
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 00000000..06302f2b
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,36 @@
+# Must be run with --privileged flag
+# Recommended to run the container with a volume mapped
+# in order to easy exprort images built to "external" world
+FROM debian:stretch
+LABEL authors="VyOS Maintainers <maintainers@vyos.io>"
+
+ENV DEBIAN_FRONTEND noninteractive
+
+# Standard shell should be bash not dash
+RUN echo "dash dash/sh boolean false" | debconf-set-selections && \
+ dpkg-reconfigure dash
+
+RUN apt-get update && apt-get install -y \
+ vim \
+ git \
+ mc \
+ make \
+ python3-sphinx \
+ python-sphinx-rtd-theme \
+ latexmk \
+ texlive-latex-recommended \
+ texlive-fonts-recommended \
+ texlive-latex-extra \
+ sudo \
+ gosu
+
+# Cleanup
+RUN rm -rf /var/lib/apt/lists/*
+
+# Allow password-less 'sudo' for all users in group 'sudo'
+RUN sed "s/^%sudo.*/%sudo\tALL=(ALL) NOPASSWD:ALL/g" -i /etc/sudoers && \
+ chmod a+s /usr/sbin/useradd /usr/sbin/groupadd /usr/sbin/gosu /usr/sbin/usermod
+
+COPY entrypoint.sh /usr/local/bin/entrypoint.sh
+ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
+
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
new file mode 100755
index 00000000..8db41103
--- /dev/null
+++ b/docker/entrypoint.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -e
+
+USER_NAME="vyos_bld"
+NEW_UID=$(stat -c "%u" .)
+NEW_GID=$(stat -c "%g" .)
+
+# Change effective UID to the one specified via "-e GOSU_UID=`id -u $USER`"
+if [ -n "$GOSU_UID" ]; then
+ NEW_UID=$GOSU_UID
+fi
+
+# Change effective UID to the one specified via "-e GOSU_GID=`id -g $USER`"
+if [ -n "$GOSU_GID" ]; then
+ NEW_GID=$GOSU_GID
+fi
+
+# Notify user about selected UID/GID
+echo "Current UID/GID: $NEW_UID/$NEW_GID"
+
+# Create UNIX group on the fly if it does not exist
+if ! grep -q $NEW_GID /etc/group; then
+ groupadd --gid $NEW_GID $USER_NAME
+fi
+
+useradd --shell /bin/bash --uid $NEW_UID --gid $NEW_GID --non-unique --create-home $USER_NAME
+usermod --append --groups sudo $USER_NAME
+sudo chown $NEW_UID:$NEW_GID /home/$USER_NAME
+export HOME=/home/$USER_NAME
+
+# Execute process
+exec /usr/sbin/gosu $USER_NAME "$@"
diff --git a/docs/conf.py b/docs/conf.py
index e9960a8e..aa76a7d6 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -24,10 +24,10 @@ copyright = u'2018, VyOS maintainers and contributors'
author = u'VyOS maintainers and contributors'
# The short X.Y version
-version = u'1.2.0'
+version = u'1.3.0'
# The full version, including alpha/beta/rc tags
-release = u'1.2.0-beta'
+release = u'current'
# -- General configuration ---------------------------------------------------
diff --git a/docs/services/pppoe-server.rst b/docs/services/pppoe-server.rst
index 1316898e..9c457af5 100644
--- a/docs/services/pppoe-server.rst
+++ b/docs/services/pppoe-server.rst
@@ -33,9 +33,10 @@ Connections can be locally checked via the command
.. code-block:: sh
show pppoe-server sessions
- ifname | username | calling-sid | ip | type | comp | state | uptime
- -------+----------+-------------------+------------+-------+------+--------+----------
- ppp0 | foo | 08:00:27:fa:3e:50 | 10.1.1.100 | pppoe | | active | 00:04:15
+ ifname | username | ip | calling-sid | rate-limit | state | uptime | rx-bytes | tx-bytes
+ -------+----------+------------+-------------------+-------------+--------+----------+----------+----------
+ ppp0 | foo | 10.1.1.100 | 08:00:27:ba:db:15 | 20480/10240 | active | 00:00:11 | 214 B | 76 B
+
To use a radius server, you need to switch to authentication mode radius and
@@ -52,5 +53,54 @@ server configured, if you wish to achieve redundancy.
RADIUS provides the IP addresses in the example above via Framed-IP-Address.
+Bandwidth Shaping
+=================
+
+Bandwidth rate limits can be set for local users or RADIUS based attributes.
+
+Local user setup
+================
+
+The rate-limit is set in kbit/sec.
+
+.. code-block:: sh
+
+ set service pppoe-server access-concentrator 'ACN'
+ set service pppoe-server authentication local-users username foo password 'bar'
+ set service pppoe-server authentication local-users username foo rate-limit download '20480'
+ set service pppoe-server authentication local-users username foo rate-limit upload '10240'
+ set service pppoe-server authentication mode 'local'
+ set service pppoe-server client-ip-pool start '10.1.1.100'
+ set service pppoe-server client-ip-pool stop '10.1.1.111'
+ set service pppoe-server dns-servers server-1 '10.100.100.1'
+ set service pppoe-server dns-servers server-2 '10.100.200.1'
+ set service pppoe-server interface 'eth1'
+ set service pppoe-server local-ip '10.1.1.2'
+
+
+Once the user is connected, the user session is using the set limits and can be displayed via 'show pppoe-server sessions'.
+
+.. code-block:: sh
+
+ show pppoe-server sessions
+ ifname | username | ip | calling-sid | rate-limit | state | uptime | rx-bytes | tx-bytes
+ -------+----------+------------+-------------------+-------------+--------+----------+----------+----------
+ ppp0 | foo | 10.1.1.100 | 08:00:27:ba:db:15 | 20480/10240 | active | 00:00:11 | 214 B | 76 B
+
+
+RADIUS shaper setup
+===================
+
+The current attribute 'Filter-ID' is being used as default and can be setup within RADIUS:
+
+Filter-ID=2000/3000 (means 2000Kbit down-stream rate and 3000Kbit up-stream rate)
+
+The command below enables it, assuming the RADIUS connection has been setup and is working.
+
+.. code-block:: sh
+
+ set service pppoe-server authentication radius-settings rate-limit enable
+
+Other attributes can be used, but they have to be in one of the dictionaries in /usr/share/accel-ppp/radius.
.. _`accel-ppp`: https://accel-ppp.org/
diff --git a/docs/system/index.rst b/docs/system/index.rst
index f833bcc8..cea729e3 100644
--- a/docs/system/index.rst
+++ b/docs/system/index.rst
@@ -10,13 +10,13 @@ should be ready for further configuration which is described in this chapter.
.. toctree::
:maxdepth: 2
:hidden:
-
+
eventhandler
flowaccounting
host-information
serialconsole
- systemusers
+ system-users
syslog
task-scheduler
config-management
- time-zone \ No newline at end of file
+ time-zone
diff --git a/docs/system/system-users.rst b/docs/system/system-users.rst
new file mode 100644
index 00000000..a6be5a05
--- /dev/null
+++ b/docs/system/system-users.rst
@@ -0,0 +1,111 @@
+.. _systemusers:
+
+Login
+-----
+
+The default VyOS user account (`vyos`), as well as newly created user accounts,
+have all capabilities to configure the system. All accounts have sudo capabilities
+and therefore can operate as root on the system. Setting the level to admin is
+optional, all accounts on the system will have admin privileges.
+
+Both local administered and remote administered RADIUS (Remote Authentication
+Dial-In User Service) accounts are supported.
+
+Local
+^^^^^
+
+Create user account `jsmith` and the password `mypassword`.
+
+.. code-block:: sh
+
+ set system login user jsmith full-name "Johan Smith"
+ set system login user jsmith authentication plaintext-password mypassword
+
+The command:
+
+.. code-block:: sh
+
+ show system login
+
+will show the contents of :code:`system login` configuration node:
+
+.. code-block:: sh
+
+ user jsmith {
+ authentication {
+ encrypted-password $6$0OQHjuQ8M$AYXVn7jufdfqPrSk4/XXsDBw99JBtNsETkQKDgVLptXogHA2bU9BWlvViOFPBoFxIi.iqjqrvsQdQ./cfiiPT.
+ plaintext-password ""
+ }
+ full-name "Johan Smith"
+ level admin
+ }
+
+SSH with Public Keys
+********************
+
+The following command will load the public key `dev.pub` for user `jsmith`
+
+.. code-block:: sh
+
+ loadkey jsmith dev.pub
+
+.. note:: This requires uploading the `dev.pub` public key to the VyOS router
+ first. As an alternative you can also load the SSH public key directly
+ from a remote system:
+
+.. code-block:: sh
+
+ loadkey jsmith scp://devuser@dev001.vyos.net/home/devuser/.ssh/dev.pub
+
+In addition SSH public keys can be fully added using the CLI. Each key can be
+given a unique identifier, `calypso` is used oin the example below to id an SSH
+key.
+
+.. code-block:: sh
+
+ set system login user jsmith authentication public-keys callisto key 'AAAAB3Hso...Q=='
+ set system login user jsmith authentication public-keys callisto type 'ssh-rsa'
+
+RADIUS
+^^^^^^
+
+VyOS supports using one or more RADIUS servers as backend for user authentication.
+
+The following command sets up two servers for RADIUS authentication, one with a
+discrete timeout of `5` seconds and a discrete port of `1812` and the other using
+a default timeout and port.
+
+.. code-block:: sh
+
+ set system login radius server 192.168.1.2 secret 's3cr3t0815'
+ set system login radius server 192.168.1.2 timeout '5'
+ set system login radius server 192.168.1.2 port '1812'
+ set system login radius server 192.168.1.3 secret 's3cr3t0816'
+
+This configuration results in:
+
+.. code-block:: sh
+
+ show system login radius
+ server 192.168.1.2 {
+ secret s3cr3t0815
+ timeout 5
+ port 1812
+ }
+ server 192.168.1.3 {
+ secret s3cr3t0816
+ }
+
+RADIUS Source Address
+*********************
+
+If you are using e.g. OSPF as IGP always the nearest interface facing the RADIUS
+server is used. With VyOS 1.2 you can bind all outgoing RADIUS requests to a
+single source IP e.g. the loopback interface.
+
+.. code-block:: sh
+
+ set system login radius source-address 3.3.3.3
+
+Above command will use `3.3.3.3` as source IPv4 address for all queries originating
+from this NAS.
diff --git a/docs/system/systemusers.rst b/docs/system/systemusers.rst
deleted file mode 100644
index ef153377..00000000
--- a/docs/system/systemusers.rst
+++ /dev/null
@@ -1,56 +0,0 @@
-.. _systemusers:
-
-System Users
-------------
-
-The default vyos user account, as well as newly created user accounts, have all capabilities to configure the system.
-All accounts have sudo capabilities and therefore can operate as root on the system.
-Setting the level to admin is optional, all accounts on the system
-will have admin privileges.
-
-
-Creating Login User Accounts
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Create user account `jsmith` and the password `mypassword`.
-
-.. code-block:: sh
-
- set system login user jsmith full-name "Johan Smith"
- set system login user jsmith authentication plaintext-password mypassword
-
-The command:
-
-.. code-block:: sh
-
- show system login
-
-will show the contents of :code:`system login` configuration node:
-
-.. code-block:: sh
-
- user jsmith {
- authentication {
- encrypted-password $6$0OQHjuQ8M$AYXVn7jufdfqPrSk4/XXsDBw99JBtNsETkQKDgVLptXogHA2bU9BWlvViOFPBoFxIi.iqjqrvsQdQ./cfiiPT.
- plaintext-password ""
- }
- full-name "Johan Smith"
- level admin
- }
-
-SSH Access using Shared Public Keys
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The following command will load the public key `dev.pub` for user `jsmith`
-
-.. code-block:: sh
-
- loadkey jsmith dev.pub
-
-.. note:: This requires uploading the `dev.pub` public key to the VyOS router
- first. As an alternative you can also load the SSH public key directly
- from a remote system:
-
-.. code-block:: sh
-
- loadkey jsmith scp://devuser@dev001.vyos.net/home/devuser/.ssh/dev.pub