X-Git-Url: http://git.sameswireless.fr/l2tpns.git/blobdiff_plain/8261839e1625710ec2c3db3bb569f5dfb5881fa3..07e1df5b92a099b3b390822d0f594b175226dc01:/Docs/manual.html diff --git a/Docs/manual.html b/Docs/manual.html index ff7f0b3..68b3759 100644 --- a/Docs/manual.html +++ b/Docs/manual.html @@ -56,34 +56,21 @@ H3 {
  • Filtering
  • Clustering
  • Routing
  • -
  • Avoiding Fragmentation
  • Performance
  • Overview

    -l2tpns is half of a complete L2TP implementation. It supports only the -LNS side of the connection.

    +l2tpns a complete L2TP implementation. It supports the LAC, LNS, PPPOE and DHCPv6 server.

    -L2TP (Layer 2 Tunneling Protocol) is designed to allow any layer 2 -protocol (e.g. Ethernet, PPP) to be tunneled over an IP connection. l2tpns -implements PPP over L2TP only.

    +L2TP (Layer 2 Tunneling Protocol) is designed to allow any layer 2 protocol (e.g. Ethernet, PPP) to be tunneled over an IP connection. l2tpns implements PPP over L2TP only.

    -There are a couple of other L2TP implementations, of which l2tpd is probably the -most popular. l2tpd also will handle being either end of a tunnel, and -is a lot more configurable than l2tpns. However, due to the way it works, -it is nowhere near as scalable.

    +There are a couple of other L2TP implementations, of which l2tpd is probably the most popular. l2tpd also will handle being either end of a tunnel, and is a lot more configurable than l2tpns. However, due to the way it works, it is nowhere near as scalable.

    -l2tpns uses the TUN/TAP interface provided by the Linux kernel to receive -and send packets. Using some packet manipulation it doesn't require a -single interface per connection, as l2tpd does.

    +l2tpns uses the TUN/TAP interface provided by the Linux kernel to receive and send packets. Using some packet manipulation it doesn't require a single interface per connection, as l2tpd does.

    -This allows it to scale extremely well to very high loads and very high -numbers of connections.

    +This allows it to scale extremely well to very high loads and very high numbers of connections.

    -It also has a plugin architecture which allows custom code to be run -during processing. An example of this is in the walled garden module -included.

    +It also has a plugin architecture which allows custom code to be run during processing. An example of this is in the walled garden module included.


    Documentation is not my best skill. If you find any problems @@ -168,15 +155,15 @@ only ever be used for working out why it doesn't work at all.

  • log_file (string)
    -This will be where all logging and debugging information is written -to. This may be either a filename, such as /var/log/l2tpns, or -the special magic string syslog:facility, where facility -is any one of the syslog logging facilities, such as local5. +This will be where all logging and debugging information is written to. This may be either a filename, such as /var/log/l2tpns, or the special magic string syslog:facility, where facility is any one of the syslog logging facilities, such as local5.
  • pid_file (string)
    -If set, the process id will be written to the specified file. The -value must be an absolute path. +If set, the process id will be written to the specified file. The value must be an absolute path. +
  • + +
  • random_deviceB> (string)
    +Path to random data source (default /dev/urandom). Use "" to use the rand() library function.
  • l2tp_secret (string)
    @@ -185,6 +172,17 @@ the same as the LAC, or authentication will fail. Only actually be used if the LAC requests authentication.
  • +
  • l2tp_mtu (int)
    +MTU of interface for L2TP traffic (default: 1500). Used to set link MRU and adjust TCP MSS. +
  • + +
  • ppp_restart_time (int)
    +ppp_max_configure (int)
    +ppp_max_failure (int)
    +PPP counter and timer values, as described in §4.1 of +RFC1661. +
  • +
  • primary_dns (ip address)
  • secondary_dns (ip address)
    Whenever a PPP connection is established, DNS servers will be sent to the @@ -220,8 +218,7 @@ session is closed.
  • radius_secret (string)
    -This secret will be used in all RADIUS queries. If this is not set then -RADIUS queries will fail. +This secret will be used in all RADIUS queries. If this is not set then RADIUS queries will fail.
  • radius_authtypes (string)
    @@ -229,6 +226,11 @@ A comma separated list of supported RADIUS authentication methods (pap or chap), in order of preference (default pap).
  • +
  • radius_dae_port (short)
    +Port for DAE RADIUS (Packet of Death/Disconnect, Change of Authorization) +requests (default: 3799). +
  • +
  • allow_duplicate_users (boolean)
    Allow multiple logins with the same username. If false (the default), any prior session with the same username will be dropped when a new @@ -236,15 +238,39 @@ session is established.
  • bind_address (ip address)
    -When the tun interface is created, it is assigned the address -specified here. If no address is given, 1.1.1.1 is used. Packets -containing user traffic should be routed via this address if given, -otherwise the primary address of the machine. +It's the listen address of the l2tp udp protocol sent and received to LAC. This address is also assigned to the tun interface if no iftun_address is specified. Packets containing user traffic should be routed via this address if given, otherwise the primary address of the machine. +
  • + +
  • iftun_address (ip address)
    +This parameter is used when you want a tun interface address different +from the address of "bind_address" (For use in cases of specific configuration). +If no address is given to iftun_address and bind_address, 1.1.1.1 is used. +
  • + +
  • bind_multi_address (ip address)
    +This parameter permit to listen several addresss of the l2tp udp protocol +(and set several address to the tun interface). +
    +WHEN this parameter is set, It OVERWRITE the parameters "bind_address" +and "iftun_address". +
    +these can be interesting when you want do load-balancing in cluster mode +of the uploaded from the LAC. For example you can set a bgp.prepend(MY_AS) +for Address1 on LNS1 and a bgp.prepend(MY_AS) for Address2 on LNS2 +(see BGP AS-path prepending). +
    +example of use with 2 address: +
    +set bind_multi_address "64.14.13.41, 64.14.13.42" +
  • + +
  • tundevicename (string)
    +Name of the tun interface (default: "tun0").
  • peer_address (ip address)
    Address to send to clients as the default gateway. - +
  • send_garp (boolean)
    Determines whether or not to send a gratuitous ARP for the @@ -271,13 +297,13 @@ every connected use will be dumped to a file in this directory. Each file dumped begins with a header, where each line is prefixed by #. Following the header is a single line for every connected user, fields separated by a space.
    The fields are username, ip, qos, -uptxoctets, downrxoctets. The qos field is 1 if a standard user, and -2 if the user is throttled. +uptxoctets, downrxoctets, origin (optional). The qos field is 1 if a standard user, and +2 if the user is throttled. The origin field is dump if account_all_origin is set to true +(origin value: L=LAC data, R=Remote LNS data, P=PPPOE data).
  • -
  • setuid (int)
    -After starting up and binding the interface, change UID to this. This -doesn't work properly. +
  • account_all_origin (boolean)
    +If set to true, all origin of the usage is dumped to the accounting file (LAC+Remote LNS+PPPOE)(default false).
  • dump_speed (boolean)
    @@ -323,6 +349,10 @@ on Clustering for more information. Interface for cluster packets (default: eth0).
  • +
  • cluster_mcast_ttl (int)
    +TTL for multicast packets (default: 1). +
  • +
  • cluster_hb_interval (int)
    Interval in tenths of a second between cluster heartbeat/pings.
  • @@ -337,8 +367,101 @@ from the master. Determines the minumum number of up to date slaves required before the master will drop routes (default: 1). + +
  • echo_timeout (int)
    +Time between last packet sent and LCP ECHO generation +(default: 10 (seconds)). +
  • + +
  • idle_echo_timeout (int)
    +Drop sessions who have not responded within idle_echo_timeout seconds +(default: 240 (seconds)) +
  • + +
  • ppp_keepalive (int)
    +Change this value to no to force generation of LCP ECHO every +echo_timeout seconds, even there are activity on the link. +(default: yes) +
  • + +
  • auth_tunnel_change_addr_src (boolean)
    +This parameter authorize to change the source IP of the tunnels l2tp. +This parameter can be used when the remotes BAS/LAC are l2tpns server +configured in cluster mode, but that the interface to remote LNS are +not clustered (the tunnel can be coming from different source IP) +(default: no). +
  • + +
  • disable_sending_hello (boolean)
    +Disable l2tp sending HELLO message for Apple compatibility. +Some OS X implementation of l2tp no manage the L2TP "HELLO message". +(default: no). +
  • + + + +

    LAC configuration

    + + +

    A static REMOTES LNS configuration can be entered by the command:

    +
    setforward MASK IP PORT SECRET
    + +where MASK specifies the mask of users who have forwarded to +remote LNS (ex: "/friendISP@company.com").
    +where IP specifies the IP of the remote LNS (ex: "66.66.66.55").
    +where PORT specifies the L2TP Port of the remote LNS +(Normally should be 1701) (ex: 1701).
    +where SECRET specifies the secret password the remote LNS (ex: mysecret).
    +
    +The static Remote LNS configuration can be used when the friend ISP not +have a proxied Radius.
    +If the proxied Radius is used, It will return the RADIUS attributes:
    + Tunnel-Type: 1 = L2TP
    + Tunnel-Medium-Type: 1 = IPv4
    + Tunnel-Password: 1 = "LESECRETL2TP"
    + Tunnel-Server-Endpoint: 1 = "88.xx.xx.x1"
    + Tunnel-Assignment-Id: 1 = "friendisp_lns1"
    + Tunnel-Type: 2 = L2TP
    + Tunnel-Medium-Type: 2 = IPv4
    + Tunnel-Password: 2 = "LESECRETL2TP"
    + Tunnel-Server-Endpoint: 2 = "88.xx.xx.x2"
    + Tunnel-Assignment-Id: 2 = "friendisp_lns2"
    + +

    PPPOE configuration

    + + +

    BGP configuration

    +

    BGP routing configuration is entered by the command: The routing configuration section is entered by the command

    router bgp as
    @@ -702,7 +825,8 @@ The signals understood are: terminated. This signal should be used to stop l2tpns on a cluster node where there are other machines to continue handling traffic. -
    SIGQUIT
    Shut down: closes sessions and tunnels.
    +
    SIGQUIT
    Shut down tunnels and sessions, exit process when +complete.

    Throttling

    @@ -816,14 +940,14 @@ supplied structure: some way. - +
    +
    t
    Tunnel +
    s
    Session +
    username +
    password +
    protocol
    0xC023 for PAP, 0xC223 for CHAP +
    continue_auth
    Set to 0 to stop processing authentication modules +
    post_auth @@ -833,16 +957,16 @@ supplied structure: to be accepted. - + allow or disallow authentication +
    protocol
    0xC023 for PAP, 0xC223 for CHAP + packet_rx @@ -851,12 +975,12 @@ supplied structure: seriously slow down the system. - +
    +
    t
    Tunnel +
    s
    Session +
    buf
    The raw packet data +
    len
    The length of buf +
    packet_tx @@ -865,12 +989,12 @@ supplied structure: seriously slow down the system. - +
    +
    t
    Tunnel +
    s
    Session +
    buf
    The raw packet data +
    len
    The length of buf +
    timer @@ -879,9 +1003,9 @@ supplied structure: you do is reentrant. - +
    +
    time_now
    The current unix timestamp +
    new_session @@ -889,10 +1013,10 @@ supplied structure: session is now ready to handle traffic. - +
    +
    t
    Tunnel +
    s
    Session +
    kill_session @@ -900,10 +1024,10 @@ supplied structure: This may be called multiple times for the same session. - +
    +
    t
    Tunnel +
    s
    Session +
    radius_response @@ -913,12 +1037,24 @@ supplied structure: modules. - +
    +
    t
    Tunnel +
    s
    Session +
    key +
    value +
    + + + radius_reset + This is called whenever a RADIUS CoA request is + received to reset any options to default values before + the new values are applied. + + +
    +
    t
    Tunnel +
    s
    Session +
    control @@ -927,21 +1063,13 @@ supplied structure: required. - +
    +
    iam_master
    Cluster master status +
    argc
    The number of arguments +
    argv
    Arguments +
    response
    Return value: NSCTL_RES_OK or NSCTL_RES_ERR +
    additional
    Extended response text +
    @@ -1033,22 +1161,6 @@ ibgp" for IBGP. If this is not supported by your IOS revision, you can use "maximum-paths" (which works for EBGP) and set as_number to a private value such as 64512.

    -

    Avoiding Fragmentation

    - -Fragmentation of encapsulated return packets to the LAC may be avoided -for TCP sessions by adding a firewall rule to clamps the MSS on -outgoing SYN packets. - -The following is appropriate for interfaces with a typical MTU of -1500: - -
    -iptables -A FORWARD -i tun+ -o eth0 	\
    -    -p tcp --tcp-flags SYN,RST SYN	\
    -    -m tcpmss --mss 1413:1600		\
    -    -j TCPMSS --set-mss 1412
    -
    -

    Performance

    Performance is great.