mirror of
				https://github.com/vyos/vyos-documentation.git
				synced 2025-10-26 08:41:46 +01:00 
			
		
		
		
	arrange services and protocols
This commit is contained in:
		
							parent
							
								
									e33e1268f9
								
							
						
					
					
						commit
						8943fc9f87
					
				| @ -766,3 +766,68 @@ Example Partial Config | |||||||
|          } |          } | ||||||
|      } |      } | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | .. _routing-mss-clamp: | ||||||
|  | 
 | ||||||
|  | ################ | ||||||
|  | TCP-MSS Clamping | ||||||
|  | ################ | ||||||
|  | 
 | ||||||
|  | As Internet wide PMTU discovery rarely works, we sometimes need to clamp | ||||||
|  | our TCP MSS value to a specific value. This is a field in the TCP | ||||||
|  | Options part of a SYN packet. By setting the MSS value, you are telling | ||||||
|  | the remote side unequivocally 'do not try to send me packets bigger than | ||||||
|  | this value'. | ||||||
|  | 
 | ||||||
|  | Starting with VyOS 1.2 there is a firewall option to clamp your TCP MSS | ||||||
|  | value for IPv4 and IPv6. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | .. note:: MSS value = MTU - 20 (IP header) - 20 (TCP header), resulting | ||||||
|  |    in 1452 bytes on a 1492 byte MTU. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | IPv4 | ||||||
|  | ==== | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set firewall options interface <interface> adjust-mss <number-of-bytes> | ||||||
|  | 
 | ||||||
|  |    Use this command to set the maximum segment size for IPv4 transit | ||||||
|  |    packets on a specific interface (500-1460 bytes). | ||||||
|  | 
 | ||||||
|  | Example | ||||||
|  | ------- | ||||||
|  | 
 | ||||||
|  | Clamp outgoing MSS value in a TCP SYN packet to `1452` for `pppoe0` and | ||||||
|  | `1372` | ||||||
|  | for your WireGuard `wg02` tunnel. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   set firewall options interface pppoe0 adjust-mss '1452' | ||||||
|  |   set firewall options interface wg02 adjust-mss '1372' | ||||||
|  | 
 | ||||||
|  | IPv6 | ||||||
|  | ==== | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set firewall options interface <interface> adjust-mss6 <number-of-bytes> | ||||||
|  | 
 | ||||||
|  |    Use this command to set the maximum segment size for IPv6 transit | ||||||
|  |    packets on a specific interface (1280-1492 bytes). | ||||||
|  | 
 | ||||||
|  | Example | ||||||
|  | ------- | ||||||
|  | 
 | ||||||
|  | Clamp outgoing MSS value in a TCP SYN packet to `1280` for both `pppoe0` and | ||||||
|  | `wg02` interface. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   set firewall options interface pppoe0 adjust-mss6 '1280' | ||||||
|  |   set firewall options interface wg02 adjust-mss6 '1280' | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | .. hint:: When doing your byte calculations, you might find useful this | ||||||
|  |    `Visual packet size calculator <https://baturin.org/tools/encapcalc/>`_. | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								docs/configuration/protocols/igmp-proxy.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								docs/configuration/protocols/igmp-proxy.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | igmp-proxy | ||||||
|  | ########## | ||||||
							
								
								
									
										22
									
								
								docs/configuration/protocols/index.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								docs/configuration/protocols/index.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | |||||||
|  | ######### | ||||||
|  | Protocols | ||||||
|  | ######### | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | .. toctree:: | ||||||
|  |    :maxdepth: 1 | ||||||
|  |    :includehidden: | ||||||
|  | 
 | ||||||
|  |    bfd | ||||||
|  |    bgp | ||||||
|  |    igmp | ||||||
|  |    igmp-proxy | ||||||
|  |    mpls | ||||||
|  |    ospf | ||||||
|  |    ospfv3 | ||||||
|  |    pim | ||||||
|  |    rip | ||||||
|  |    ripng | ||||||
|  |    rpki | ||||||
|  |    static | ||||||
|  |    vrf | ||||||
							
								
								
									
										70
									
								
								docs/configuration/protocols/ospf.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								docs/configuration/protocols/ospf.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,70 @@ | |||||||
|  | .. include:: /_include/need_improvement.txt | ||||||
|  | 
 | ||||||
|  | .. _routing-ospf: | ||||||
|  | 
 | ||||||
|  | #### | ||||||
|  | OSPF | ||||||
|  | #### | ||||||
|  | 
 | ||||||
|  | :abbr:`OSPF (Open Shortest Path First)` is a routing protocol for Internet | ||||||
|  | Protocol (IP) networks. It uses a link state routing (LSR) algorithm and falls | ||||||
|  | into the group of interior gateway protocols (IGPs), operating within a single | ||||||
|  | autonomous system (AS). It is defined as OSPF Version 2 in :rfc:`2328` (1998) | ||||||
|  | for IPv4. Updates for IPv6 are specified as OSPF Version 3 in :rfc:`5340` | ||||||
|  | (2008). OSPF supports the :abbr:`CIDR (Classless Inter-Domain Routing)` | ||||||
|  | addressing model. | ||||||
|  | 
 | ||||||
|  | OSPF is a widely used IGP in large enterprise networks. | ||||||
|  | 
 | ||||||
|  | OSPFv2 (IPv4) | ||||||
|  | ############# | ||||||
|  | 
 | ||||||
|  | In order to have a VyOS system exchanging routes with OSPF neighbors, you will | ||||||
|  | at least need to configure an OSPF area and some network. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   set protocols ospf area 0 network 192.168.0.0/24 | ||||||
|  | 
 | ||||||
|  | That is the minimum configuration you will need. | ||||||
|  | It is a good practice to define the router ID too. | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   set protocols ospf parameters router-id 10.1.1.1 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Below you can see a typical configuration using 2 nodes, redistribute loopback | ||||||
|  | address and the node 1 sending the default route: | ||||||
|  | 
 | ||||||
|  | **Node 1** | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   set interfaces loopback lo address 10.1.1.1/32 | ||||||
|  |   set protocols ospf area 0 network 192.168.0.0/24 | ||||||
|  |   set protocols ospf default-information originate always | ||||||
|  |   set protocols ospf default-information originate metric 10 | ||||||
|  |   set protocols ospf default-information originate metric-type 2 | ||||||
|  |   set protocols ospf log-adjacency-changes | ||||||
|  |   set protocols ospf parameters router-id 10.1.1.1 | ||||||
|  |   set protocols ospf redistribute connected metric-type 2 | ||||||
|  |   set protocols ospf redistribute connected route-map CONNECT | ||||||
|  | 
 | ||||||
|  |   set policy route-map CONNECT rule 10 action permit | ||||||
|  |   set policy route-map CONNECT rule 10 match interface lo | ||||||
|  | 
 | ||||||
|  | **Node 2** | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   set interfaces loopback lo address 10.2.2.2/32 | ||||||
|  |   set protocols ospf area 0 network 192.168.0.0/24 | ||||||
|  |   set protocols ospf log-adjacency-changes | ||||||
|  |   set protocols ospf parameters router-id 10.2.2.2 | ||||||
|  |   set protocols ospf redistribute connected metric-type 2 | ||||||
|  |   set protocols ospf redistribute connected route-map CONNECT | ||||||
|  | 
 | ||||||
|  |   set policy route-map CONNECT rule 10 action permit | ||||||
|  |   set policy route-map CONNECT rule 10 match interface lo | ||||||
|  | 
 | ||||||
| @ -1,73 +1,3 @@ | |||||||
| .. include:: /_include/need_improvement.txt |  | ||||||
| 
 |  | ||||||
| .. _routing-ospf: |  | ||||||
| 
 |  | ||||||
| #### |  | ||||||
| OSPF |  | ||||||
| #### |  | ||||||
| 
 |  | ||||||
| :abbr:`OSPF (Open Shortest Path First)` is a routing protocol for Internet |  | ||||||
| Protocol (IP) networks. It uses a link state routing (LSR) algorithm and falls |  | ||||||
| into the group of interior gateway protocols (IGPs), operating within a single |  | ||||||
| autonomous system (AS). It is defined as OSPF Version 2 in :rfc:`2328` (1998) |  | ||||||
| for IPv4. Updates for IPv6 are specified as OSPF Version 3 in :rfc:`5340` |  | ||||||
| (2008). OSPF supports the :abbr:`CIDR (Classless Inter-Domain Routing)` |  | ||||||
| addressing model. |  | ||||||
| 
 |  | ||||||
| OSPF is a widely used IGP in large enterprise networks. |  | ||||||
| 
 |  | ||||||
| OSPFv2 (IPv4) |  | ||||||
| ############# |  | ||||||
| 
 |  | ||||||
| In order to have a VyOS system exchanging routes with OSPF neighbors, you will |  | ||||||
| at least need to configure an OSPF area and some network. |  | ||||||
| 
 |  | ||||||
| .. code-block:: none |  | ||||||
| 
 |  | ||||||
|   set protocols ospf area 0 network 192.168.0.0/24 |  | ||||||
| 
 |  | ||||||
| That is the minimum configuration you will need. |  | ||||||
| It is a good practice to define the router ID too. |  | ||||||
| 
 |  | ||||||
| .. code-block:: none |  | ||||||
| 
 |  | ||||||
|   set protocols ospf parameters router-id 10.1.1.1 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Below you can see a typical configuration using 2 nodes, redistribute loopback |  | ||||||
| address and the node 1 sending the default route: |  | ||||||
| 
 |  | ||||||
| **Node 1** |  | ||||||
| 
 |  | ||||||
| .. code-block:: none |  | ||||||
| 
 |  | ||||||
|   set interfaces loopback lo address 10.1.1.1/32 |  | ||||||
|   set protocols ospf area 0 network 192.168.0.0/24 |  | ||||||
|   set protocols ospf default-information originate always |  | ||||||
|   set protocols ospf default-information originate metric 10 |  | ||||||
|   set protocols ospf default-information originate metric-type 2 |  | ||||||
|   set protocols ospf log-adjacency-changes |  | ||||||
|   set protocols ospf parameters router-id 10.1.1.1 |  | ||||||
|   set protocols ospf redistribute connected metric-type 2 |  | ||||||
|   set protocols ospf redistribute connected route-map CONNECT |  | ||||||
| 
 |  | ||||||
|   set policy route-map CONNECT rule 10 action permit |  | ||||||
|   set policy route-map CONNECT rule 10 match interface lo |  | ||||||
| 
 |  | ||||||
| **Node 2** |  | ||||||
| 
 |  | ||||||
| .. code-block:: none |  | ||||||
| 
 |  | ||||||
|   set interfaces loopback lo address 10.2.2.2/32 |  | ||||||
|   set protocols ospf area 0 network 192.168.0.0/24 |  | ||||||
|   set protocols ospf log-adjacency-changes |  | ||||||
|   set protocols ospf parameters router-id 10.2.2.2 |  | ||||||
|   set protocols ospf redistribute connected metric-type 2 |  | ||||||
|   set protocols ospf redistribute connected route-map CONNECT |  | ||||||
| 
 |  | ||||||
|   set policy route-map CONNECT rule 10 action permit |  | ||||||
|   set policy route-map CONNECT rule 10 match interface lo |  | ||||||
| 
 |  | ||||||
| OSPFv3 (IPv6) | OSPFv3 (IPv6) | ||||||
| ############# | ############# | ||||||
| 
 | 
 | ||||||
							
								
								
									
										2
									
								
								docs/configuration/protocols/pim.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								docs/configuration/protocols/pim.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | PIM | ||||||
|  | ### | ||||||
							
								
								
									
										3
									
								
								docs/configuration/protocols/ripng.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/configuration/protocols/ripng.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | ##### | ||||||
|  | RIPng | ||||||
|  | ##### | ||||||
| @ -132,3 +132,64 @@ TBD | |||||||
| 
 | 
 | ||||||
| Alternate routing tables are used with policy based routing of by utilizing | Alternate routing tables are used with policy based routing of by utilizing | ||||||
| :ref:`vrf`. | :ref:`vrf`. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | .. _routing-arp: | ||||||
|  | 
 | ||||||
|  | ### | ||||||
|  | ARP | ||||||
|  | ### | ||||||
|  | 
 | ||||||
|  | :abbr:`ARP (Address Resolution Protocol)` is a communication protocol used for | ||||||
|  | discovering the link layer address, such as a MAC address, associated with a | ||||||
|  | given internet layer address, typically an IPv4 address. This mapping is a | ||||||
|  | critical function in the Internet protocol suite. ARP was defined in 1982 by | ||||||
|  | :rfc:`826` which is Internet Standard STD 37. | ||||||
|  | 
 | ||||||
|  | In Internet Protocol Version 6 (IPv6) networks, the functionality of ARP is | ||||||
|  | provided by the Neighbor Discovery Protocol (NDP). | ||||||
|  | 
 | ||||||
|  | To manipulate or display ARP_ table entries, the following commands are | ||||||
|  | implemented. | ||||||
|  | 
 | ||||||
|  | Configure | ||||||
|  | ========= | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set protocols static arp <address> hwaddr <mac> | ||||||
|  | 
 | ||||||
|  |    This will configure a static ARP entry always resolving `<address>` to | ||||||
|  |    `<mac>`. | ||||||
|  | 
 | ||||||
|  |    Example: | ||||||
|  | 
 | ||||||
|  |    .. code-block:: none | ||||||
|  | 
 | ||||||
|  |      set protocols static arp 192.0.2.100 hwaddr 00:53:27:de:23:aa | ||||||
|  | 
 | ||||||
|  | Operation | ||||||
|  | ========= | ||||||
|  | 
 | ||||||
|  | .. opcmd:: show protocols static arp | ||||||
|  | 
 | ||||||
|  |    Display all known ARP table entries spanning across all interfaces | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   vyos@vyos:~$ show protocols static arp | ||||||
|  |   Address                  HWtype  HWaddress           Flags Mask     Iface | ||||||
|  |   10.1.1.1                 ether   00:53:00:de:23:2e   C              eth1 | ||||||
|  |   10.1.1.100               ether   00:53:00:de:23:aa   CM             eth1 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | .. opcmd:: show protocols static arp interface eth1 | ||||||
|  | 
 | ||||||
|  |    Display all known ARP table entries on a given interface only (`eth1`): | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   vyos@vyos:~$ show protocols static arp interface eth1 | ||||||
|  |   Address                  HWtype  HWaddress           Flags Mask     Iface | ||||||
|  |   10.1.1.1                 ether   00:53:00:de:23:2e   C              eth1 | ||||||
|  |   10.1.1.100               ether   00:53:00:de:23:aa   CM             eth1 | ||||||
|  | 
 | ||||||
|  | .. _ARP: https://en.wikipedia.org/wiki/Address_Resolution_Protocol | ||||||
							
								
								
									
										3
									
								
								docs/configuration/protocols/vrf.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								docs/configuration/protocols/vrf.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | ############# | ||||||
|  | Protocols VRF | ||||||
|  | ############# | ||||||
							
								
								
									
										2
									
								
								docs/configuration/service/dhcp-relay.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								docs/configuration/service/dhcp-relay.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | dhcp-relay | ||||||
|  | ########## | ||||||
							
								
								
									
										2
									
								
								docs/configuration/service/dhcpv6-relay.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								docs/configuration/service/dhcpv6-relay.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | dhcpv6-relay | ||||||
|  | ############ | ||||||
							
								
								
									
										2
									
								
								docs/configuration/service/dhcpv6-server.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								docs/configuration/service/dhcpv6-server.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | dhcpv6-server | ||||||
|  | ############# | ||||||
| @ -145,3 +145,169 @@ Operation | |||||||
| .. opcmd:: restart dns forwarding | .. opcmd:: restart dns forwarding | ||||||
| 
 | 
 | ||||||
|    Restarts the DNS recursor process. This also invalidates the local DNS forwarding cache. |    Restarts the DNS recursor process. This also invalidates the local DNS forwarding cache. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | .. _dynamic-dns: | ||||||
|  | 
 | ||||||
|  | ########### | ||||||
|  | Dynamic DNS | ||||||
|  | ########### | ||||||
|  | 
 | ||||||
|  | VyOS is able to update a remote DNS record when an interface gets a new IP | ||||||
|  | address. In order to do so, VyOS includes ddclient_, a Perl script written for | ||||||
|  | this only one purpose. | ||||||
|  | 
 | ||||||
|  | ddclient_ uses two methods to update a DNS record. The first one will send | ||||||
|  | updates directly to the DNS daemon, in compliance with :rfc:`2136`. The second | ||||||
|  | one involves a third party service, like DynDNS.com or any other similar | ||||||
|  | website. This method uses HTTP requests to transmit the new IP address. You | ||||||
|  | can configure both in VyOS. | ||||||
|  | 
 | ||||||
|  | Configuration | ||||||
|  | ============= | ||||||
|  | 
 | ||||||
|  | :rfc:`2136` Based | ||||||
|  | ----------------- | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> | ||||||
|  | 
 | ||||||
|  |    Create new :rfc:`2136` DNS update configuration which will update the IP | ||||||
|  |    address assigned to `<interface>` on the service you configured under | ||||||
|  |    `<service-name>`. | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> key <keyfile> | ||||||
|  | 
 | ||||||
|  |    File identified by `<keyfile>` containing the secret RNDC key shared with | ||||||
|  |    remote DNS server. | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> server <server> | ||||||
|  | 
 | ||||||
|  |    Configure the DNS `<server>` IP/FQDN used when updating this dynamic | ||||||
|  |    assignment. | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> zone <zone> | ||||||
|  | 
 | ||||||
|  |    Configure DNS `<zone>` to be updated. | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> record <record> | ||||||
|  | 
 | ||||||
|  |    Configure DNS `<record>` which should be updated. This can be set multiple | ||||||
|  |    times. | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> ttl <ttl> | ||||||
|  | 
 | ||||||
|  |    Configure optional TTL value on the given resource record. This defualts to | ||||||
|  |    600 seconds. | ||||||
|  | 
 | ||||||
|  | Example | ||||||
|  | ^^^^^^^ | ||||||
|  | 
 | ||||||
|  | * Register DNS record ``example.vyos.io`` on DNS server ``ns1.vyos.io`` | ||||||
|  | * Use auth key file at ``/config/auth/my.key`` | ||||||
|  | * Set TTL to 300 seconds | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   vyos@vyos# show service dns dynamic | ||||||
|  |    interface eth0.7 { | ||||||
|  |        rfc2136 VyOS-DNS { | ||||||
|  |            key /config/auth/my.key | ||||||
|  |            record example.vyos.io | ||||||
|  |            server ns1.vyos.io | ||||||
|  |            ttl 300 | ||||||
|  |            zone vyos.io | ||||||
|  |        } | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | This will render the following ddclient_ configuration entry: | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   # | ||||||
|  |   # ddclient configuration for interface "eth0.7": | ||||||
|  |   # | ||||||
|  |   use=if, if=eth0.7 | ||||||
|  | 
 | ||||||
|  |   # RFC2136 dynamic DNS configuration for example.vyos.io.vyos.io | ||||||
|  |   server=ns1.vyos.io | ||||||
|  |   protocol=nsupdate | ||||||
|  |   password=/config/auth/my.key | ||||||
|  |   ttl=300 | ||||||
|  |   zone=vyos.io | ||||||
|  |   example.vyos.io | ||||||
|  | 
 | ||||||
|  | .. note:: You can also keep different DNS zone updated. Just create a new | ||||||
|  |    config node: ``set service dns dynamic interface <interface> rfc2136 | ||||||
|  |    <other-service-name>`` | ||||||
|  | 
 | ||||||
|  | HTTP based services | ||||||
|  | ------------------- | ||||||
|  | 
 | ||||||
|  | VyOS is also able to use any service relying on protocols supported by ddclient. | ||||||
|  | 
 | ||||||
|  | To use such a service, one must define a login, password, one or multiple | ||||||
|  | hostnames, protocol and server. | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set service dns dynamic interface <interface> service <service> host-name <hostname> | ||||||
|  | 
 | ||||||
|  |    Setup the dynamic DNS hostname `<hostname>` associated with the DynDNS | ||||||
|  |    provider identified by `<service>` when the IP address on interface | ||||||
|  |    `<interface>` changes. | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set service dns dynamic interface <interface> service <service> login <username> | ||||||
|  | 
 | ||||||
|  |    Configure `<username>` used when authenticating the update request for | ||||||
|  |    DynDNS service identified by `<service>`. | ||||||
|  |    For Namecheap, set the <domain> you wish to update. | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set service dns dynamic interface <interface> service <service> password <password> | ||||||
|  | 
 | ||||||
|  |    Configure `<password>` used when authenticating the update request for | ||||||
|  |    DynDNS service identified by `<service>`. | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set service dns dynamic interface <interface> service <service> protocol <protocol> | ||||||
|  | 
 | ||||||
|  |    When a ``custom`` DynDNS provider is used the protocol used for communicating | ||||||
|  |    to the provider must be specified under `<protocol>`. See the embedded | ||||||
|  |    completion helper for available protocols. | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set service dns dynamic interface <interface> service <service> server <server> | ||||||
|  | 
 | ||||||
|  |    When a ``custom`` DynDNS provider is used the `<server>` where update | ||||||
|  |    requests are being sent to must be specified. | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | ^^^^^^^^ | ||||||
|  | 
 | ||||||
|  | Use DynDNS as your preferred provider: | ||||||
|  | 
 | ||||||
|  | .. code-block:: none | ||||||
|  | 
 | ||||||
|  |   set service dns dynamic interface eth0 service dyndns | ||||||
|  |   set service dns dynamic interface eth0 service dyndns login my-login | ||||||
|  |   set service dns dynamic interface eth0 service dyndns password my-password | ||||||
|  |   set service dns dynamic interface eth0 service dyndns host-name my-dyndns-hostname | ||||||
|  | 
 | ||||||
|  | .. note:: Multiple services can be used per interface. Just specify as many | ||||||
|  |    serives per interface as you like! | ||||||
|  | 
 | ||||||
|  | Running Behind NAT | ||||||
|  | ------------------ | ||||||
|  | 
 | ||||||
|  | By default, ddclient_ will update a dynamic dns record using the IP address | ||||||
|  | directly attached to the interface. If your VyOS instance is behind NAT, your | ||||||
|  | record will be updated to point to your internal IP. | ||||||
|  | 
 | ||||||
|  | ddclient_ has another way to determine the WAN IP address. This is controlled | ||||||
|  | by: | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set service dns dynamic interface <interface> use-web url <url> | ||||||
|  | 
 | ||||||
|  |    Use configured `<url>` to determine your IP address. ddclient_ will load | ||||||
|  |    `<url>` and tries to extract your IP address from the response. | ||||||
|  | 
 | ||||||
|  | .. cfgcmd:: set service dns dynamic interface <interface> use-web skip <pattern> | ||||||
|  | 
 | ||||||
|  |    ddclient_ will skip any address located before the string set in `<pattern>`. | ||||||
|  | 
 | ||||||
|  | .. _ddclient: https://github.com/ddclient/ddclient | ||||||
							
								
								
									
										29
									
								
								docs/configuration/service/index.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								docs/configuration/service/index.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | |||||||
|  | ####### | ||||||
|  | Service | ||||||
|  | ####### | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | .. toctree:: | ||||||
|  |    :maxdepth: 1 | ||||||
|  |    :includehidden: | ||||||
|  | 
 | ||||||
|  |    broadcast-relay | ||||||
|  |    conntrack-sync | ||||||
|  |    console-server | ||||||
|  |    dhcp-relay | ||||||
|  |    dhcp-server | ||||||
|  |    dhcpv6-relay | ||||||
|  |    dhcpv6-server | ||||||
|  |    dns | ||||||
|  |    https | ||||||
|  |    ipoe-server | ||||||
|  |    lldp | ||||||
|  |    mdns | ||||||
|  |    pppoe-advert | ||||||
|  |    pppoe-server | ||||||
|  |    router-advert | ||||||
|  |    salt-minion | ||||||
|  |    snmp | ||||||
|  |    ssh | ||||||
|  |    tftp-server | ||||||
|  |    webproxy | ||||||
							
								
								
									
										2
									
								
								docs/configuration/service/pppoe-advert.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								docs/configuration/service/pppoe-advert.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | pppoe-advert | ||||||
|  | ############ | ||||||
							
								
								
									
										2
									
								
								docs/configuration/service/salt-minion.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								docs/configuration/service/salt-minion.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | salt-minion | ||||||
|  | ########### | ||||||
							
								
								
									
										10
									
								
								docs/operation/index.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								docs/operation/index.rst
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | ############## | ||||||
|  | Operation Mode | ||||||
|  | ############## | ||||||
|  | 
 | ||||||
|  | .. toctree:: | ||||||
|  |    :maxdepth: 1 | ||||||
|  |    :includehidden: | ||||||
|  | 
 | ||||||
|  |    information | ||||||
|  |    ip-command | ||||||
| @ -1,59 +0,0 @@ | |||||||
| .. _routing-arp: |  | ||||||
| 
 |  | ||||||
| ### |  | ||||||
| ARP |  | ||||||
| ### |  | ||||||
| 
 |  | ||||||
| :abbr:`ARP (Address Resolution Protocol)` is a communication protocol used for |  | ||||||
| discovering the link layer address, such as a MAC address, associated with a |  | ||||||
| given internet layer address, typically an IPv4 address. This mapping is a |  | ||||||
| critical function in the Internet protocol suite. ARP was defined in 1982 by |  | ||||||
| :rfc:`826` which is Internet Standard STD 37. |  | ||||||
| 
 |  | ||||||
| In Internet Protocol Version 6 (IPv6) networks, the functionality of ARP is |  | ||||||
| provided by the Neighbor Discovery Protocol (NDP). |  | ||||||
| 
 |  | ||||||
| To manipulate or display ARP_ table entries, the following commands are |  | ||||||
| implemented. |  | ||||||
| 
 |  | ||||||
| Configure |  | ||||||
| ========= |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set protocols static arp <address> hwaddr <mac> |  | ||||||
| 
 |  | ||||||
|    This will configure a static ARP entry always resolving `<address>` to |  | ||||||
|    `<mac>`. |  | ||||||
| 
 |  | ||||||
|    Example: |  | ||||||
| 
 |  | ||||||
|    .. code-block:: none |  | ||||||
| 
 |  | ||||||
|      set protocols static arp 192.0.2.100 hwaddr 00:53:27:de:23:aa |  | ||||||
| 
 |  | ||||||
| Operation |  | ||||||
| ========= |  | ||||||
| 
 |  | ||||||
| .. opcmd:: show protocols static arp |  | ||||||
| 
 |  | ||||||
|    Display all known ARP table entries spanning across all interfaces |  | ||||||
| 
 |  | ||||||
| .. code-block:: none |  | ||||||
| 
 |  | ||||||
|   vyos@vyos:~$ show protocols static arp |  | ||||||
|   Address                  HWtype  HWaddress           Flags Mask     Iface |  | ||||||
|   10.1.1.1                 ether   00:53:00:de:23:2e   C              eth1 |  | ||||||
|   10.1.1.100               ether   00:53:00:de:23:aa   CM             eth1 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| .. opcmd:: show protocols static arp interface eth1 |  | ||||||
| 
 |  | ||||||
|    Display all known ARP table entries on a given interface only (`eth1`): |  | ||||||
| 
 |  | ||||||
| .. code-block:: none |  | ||||||
| 
 |  | ||||||
|   vyos@vyos:~$ show protocols static arp interface eth1 |  | ||||||
|   Address                  HWtype  HWaddress           Flags Mask     Iface |  | ||||||
|   10.1.1.1                 ether   00:53:00:de:23:2e   C              eth1 |  | ||||||
|   10.1.1.100               ether   00:53:00:de:23:aa   CM             eth1 |  | ||||||
| 
 |  | ||||||
| .. _ARP: https://en.wikipedia.org/wiki/Address_Resolution_Protocol |  | ||||||
| @ -1,22 +0,0 @@ | |||||||
| .. _routing: |  | ||||||
| 
 |  | ||||||
| ####### |  | ||||||
| Routing |  | ||||||
| ####### |  | ||||||
| 
 |  | ||||||
| .. toctree:: |  | ||||||
|    :maxdepth: 1 |  | ||||||
| 
 |  | ||||||
|    arp |  | ||||||
|    bfd |  | ||||||
|    bgp |  | ||||||
|    mpls |  | ||||||
|    mss-clamp |  | ||||||
|    multicast |  | ||||||
|    ip-commands |  | ||||||
|    ospf |  | ||||||
|    pbr |  | ||||||
|    rip |  | ||||||
|    policy |  | ||||||
|    rpki |  | ||||||
|    static |  | ||||||
| @ -1,63 +0,0 @@ | |||||||
| .. _routing-mss-clamp: |  | ||||||
| 
 |  | ||||||
| ################ |  | ||||||
| TCP-MSS Clamping |  | ||||||
| ################ |  | ||||||
| 
 |  | ||||||
| As Internet wide PMTU discovery rarely works, we sometimes need to clamp |  | ||||||
| our TCP MSS value to a specific value. This is a field in the TCP |  | ||||||
| Options part of a SYN packet. By setting the MSS value, you are telling |  | ||||||
| the remote side unequivocally 'do not try to send me packets bigger than |  | ||||||
| this value'. |  | ||||||
| 
 |  | ||||||
| Starting with VyOS 1.2 there is a firewall option to clamp your TCP MSS |  | ||||||
| value for IPv4 and IPv6. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| .. note:: MSS value = MTU - 20 (IP header) - 20 (TCP header), resulting |  | ||||||
|    in 1452 bytes on a 1492 byte MTU. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| IPv4 |  | ||||||
| ==== |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set firewall options interface <interface> adjust-mss <number-of-bytes> |  | ||||||
| 
 |  | ||||||
|    Use this command to set the maximum segment size for IPv4 transit |  | ||||||
|    packets on a specific interface (500-1460 bytes). |  | ||||||
| 
 |  | ||||||
| Example |  | ||||||
| ------- |  | ||||||
| 
 |  | ||||||
| Clamp outgoing MSS value in a TCP SYN packet to `1452` for `pppoe0` and |  | ||||||
| `1372` |  | ||||||
| for your WireGuard `wg02` tunnel. |  | ||||||
| 
 |  | ||||||
| .. code-block:: none |  | ||||||
| 
 |  | ||||||
|   set firewall options interface pppoe0 adjust-mss '1452' |  | ||||||
|   set firewall options interface wg02 adjust-mss '1372' |  | ||||||
| 
 |  | ||||||
| IPv6 |  | ||||||
| ==== |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set firewall options interface <interface> adjust-mss6 <number-of-bytes> |  | ||||||
| 
 |  | ||||||
|    Use this command to set the maximum segment size for IPv6 transit |  | ||||||
|    packets on a specific interface (1280-1492 bytes). |  | ||||||
| 
 |  | ||||||
| Example |  | ||||||
| ------- |  | ||||||
| 
 |  | ||||||
| Clamp outgoing MSS value in a TCP SYN packet to `1280` for both `pppoe0` and |  | ||||||
| `wg02` interface. |  | ||||||
| 
 |  | ||||||
| .. code-block:: none |  | ||||||
| 
 |  | ||||||
|   set firewall options interface pppoe0 adjust-mss6 '1280' |  | ||||||
|   set firewall options interface wg02 adjust-mss6 '1280' |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| .. hint:: When doing your byte calculations, you might find useful this |  | ||||||
|    `Visual packet size calculator <https://baturin.org/tools/encapcalc/>`_. |  | ||||||
| @ -1,164 +0,0 @@ | |||||||
| .. _dynamic-dns: |  | ||||||
| 
 |  | ||||||
| ########### |  | ||||||
| Dynamic DNS |  | ||||||
| ########### |  | ||||||
| 
 |  | ||||||
| VyOS is able to update a remote DNS record when an interface gets a new IP |  | ||||||
| address. In order to do so, VyOS includes ddclient_, a Perl script written for |  | ||||||
| this only one purpose. |  | ||||||
| 
 |  | ||||||
| ddclient_ uses two methods to update a DNS record. The first one will send |  | ||||||
| updates directly to the DNS daemon, in compliance with :rfc:`2136`. The second |  | ||||||
| one involves a third party service, like DynDNS.com or any other similar |  | ||||||
| website. This method uses HTTP requests to transmit the new IP address. You |  | ||||||
| can configure both in VyOS. |  | ||||||
| 
 |  | ||||||
| Configuration |  | ||||||
| ============= |  | ||||||
| 
 |  | ||||||
| :rfc:`2136` Based |  | ||||||
| ----------------- |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> |  | ||||||
| 
 |  | ||||||
|    Create new :rfc:`2136` DNS update configuration which will update the IP |  | ||||||
|    address assigned to `<interface>` on the service you configured under |  | ||||||
|    `<service-name>`. |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> key <keyfile> |  | ||||||
| 
 |  | ||||||
|    File identified by `<keyfile>` containing the secret RNDC key shared with |  | ||||||
|    remote DNS server. |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> server <server> |  | ||||||
| 
 |  | ||||||
|    Configure the DNS `<server>` IP/FQDN used when updating this dynamic |  | ||||||
|    assignment. |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> zone <zone> |  | ||||||
| 
 |  | ||||||
|    Configure DNS `<zone>` to be updated. |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> record <record> |  | ||||||
| 
 |  | ||||||
|    Configure DNS `<record>` which should be updated. This can be set multiple |  | ||||||
|    times. |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set service dns dynamic interface <interface> rfc2136 <service-name> ttl <ttl> |  | ||||||
| 
 |  | ||||||
|    Configure optional TTL value on the given resource record. This defualts to |  | ||||||
|    600 seconds. |  | ||||||
| 
 |  | ||||||
| Example |  | ||||||
| ^^^^^^^ |  | ||||||
| 
 |  | ||||||
| * Register DNS record ``example.vyos.io`` on DNS server ``ns1.vyos.io`` |  | ||||||
| * Use auth key file at ``/config/auth/my.key`` |  | ||||||
| * Set TTL to 300 seconds |  | ||||||
| 
 |  | ||||||
| .. code-block:: none |  | ||||||
| 
 |  | ||||||
|   vyos@vyos# show service dns dynamic |  | ||||||
|    interface eth0.7 { |  | ||||||
|        rfc2136 VyOS-DNS { |  | ||||||
|            key /config/auth/my.key |  | ||||||
|            record example.vyos.io |  | ||||||
|            server ns1.vyos.io |  | ||||||
|            ttl 300 |  | ||||||
|            zone vyos.io |  | ||||||
|        } |  | ||||||
|    } |  | ||||||
| 
 |  | ||||||
| This will render the following ddclient_ configuration entry: |  | ||||||
| 
 |  | ||||||
| .. code-block:: none |  | ||||||
| 
 |  | ||||||
|   # |  | ||||||
|   # ddclient configuration for interface "eth0.7": |  | ||||||
|   # |  | ||||||
|   use=if, if=eth0.7 |  | ||||||
| 
 |  | ||||||
|   # RFC2136 dynamic DNS configuration for example.vyos.io.vyos.io |  | ||||||
|   server=ns1.vyos.io |  | ||||||
|   protocol=nsupdate |  | ||||||
|   password=/config/auth/my.key |  | ||||||
|   ttl=300 |  | ||||||
|   zone=vyos.io |  | ||||||
|   example.vyos.io |  | ||||||
| 
 |  | ||||||
| .. note:: You can also keep different DNS zone updated. Just create a new |  | ||||||
|    config node: ``set service dns dynamic interface <interface> rfc2136 |  | ||||||
|    <other-service-name>`` |  | ||||||
| 
 |  | ||||||
| HTTP based services |  | ||||||
| ------------------- |  | ||||||
| 
 |  | ||||||
| VyOS is also able to use any service relying on protocols supported by ddclient. |  | ||||||
| 
 |  | ||||||
| To use such a service, one must define a login, password, one or multiple |  | ||||||
| hostnames, protocol and server. |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set service dns dynamic interface <interface> service <service> host-name <hostname> |  | ||||||
| 
 |  | ||||||
|    Setup the dynamic DNS hostname `<hostname>` associated with the DynDNS |  | ||||||
|    provider identified by `<service>` when the IP address on interface |  | ||||||
|    `<interface>` changes. |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set service dns dynamic interface <interface> service <service> login <username> |  | ||||||
| 
 |  | ||||||
|    Configure `<username>` used when authenticating the update request for |  | ||||||
|    DynDNS service identified by `<service>`. |  | ||||||
|    For Namecheap, set the <domain> you wish to update. |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set service dns dynamic interface <interface> service <service> password <password> |  | ||||||
| 
 |  | ||||||
|    Configure `<password>` used when authenticating the update request for |  | ||||||
|    DynDNS service identified by `<service>`. |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set service dns dynamic interface <interface> service <service> protocol <protocol> |  | ||||||
| 
 |  | ||||||
|    When a ``custom`` DynDNS provider is used the protocol used for communicating |  | ||||||
|    to the provider must be specified under `<protocol>`. See the embedded |  | ||||||
|    completion helper for available protocols. |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set service dns dynamic interface <interface> service <service> server <server> |  | ||||||
| 
 |  | ||||||
|    When a ``custom`` DynDNS provider is used the `<server>` where update |  | ||||||
|    requests are being sent to must be specified. |  | ||||||
| 
 |  | ||||||
| Example: |  | ||||||
| ^^^^^^^^ |  | ||||||
| 
 |  | ||||||
| Use DynDNS as your preferred provider: |  | ||||||
| 
 |  | ||||||
| .. code-block:: none |  | ||||||
| 
 |  | ||||||
|   set service dns dynamic interface eth0 service dyndns |  | ||||||
|   set service dns dynamic interface eth0 service dyndns login my-login |  | ||||||
|   set service dns dynamic interface eth0 service dyndns password my-password |  | ||||||
|   set service dns dynamic interface eth0 service dyndns host-name my-dyndns-hostname |  | ||||||
| 
 |  | ||||||
| .. note:: Multiple services can be used per interface. Just specify as many |  | ||||||
|    serives per interface as you like! |  | ||||||
| 
 |  | ||||||
| Running Behind NAT |  | ||||||
| ------------------ |  | ||||||
| 
 |  | ||||||
| By default, ddclient_ will update a dynamic dns record using the IP address |  | ||||||
| directly attached to the interface. If your VyOS instance is behind NAT, your |  | ||||||
| record will be updated to point to your internal IP. |  | ||||||
| 
 |  | ||||||
| ddclient_ has another way to determine the WAN IP address. This is controlled |  | ||||||
| by: |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set service dns dynamic interface <interface> use-web url <url> |  | ||||||
| 
 |  | ||||||
|    Use configured `<url>` to determine your IP address. ddclient_ will load |  | ||||||
|    `<url>` and tries to extract your IP address from the response. |  | ||||||
| 
 |  | ||||||
| .. cfgcmd:: set service dns dynamic interface <interface> use-web skip <pattern> |  | ||||||
| 
 |  | ||||||
|    ddclient_ will skip any address located before the string set in `<pattern>`. |  | ||||||
| 
 |  | ||||||
| .. _ddclient: https://github.com/ddclient/ddclient |  | ||||||
| @ -1,26 +0,0 @@ | |||||||
| .. _services: |  | ||||||
| 
 |  | ||||||
| ######## |  | ||||||
| Services |  | ||||||
| ######## |  | ||||||
| 
 |  | ||||||
| This chapter describes the available system/network services provided by VyOS. |  | ||||||
| 
 |  | ||||||
| .. toctree:: |  | ||||||
|    :maxdepth: 1 |  | ||||||
| 
 |  | ||||||
|    conntrack |  | ||||||
|    console-server |  | ||||||
|    dhcp |  | ||||||
|    dns-forwarding |  | ||||||
|    dynamic-dns |  | ||||||
|    lldp |  | ||||||
|    mdns-repeater |  | ||||||
|    ipoe-server |  | ||||||
|    pppoe-server |  | ||||||
|    udp-broadcast-relay |  | ||||||
|    router-advert |  | ||||||
|    snmp |  | ||||||
|    ssh |  | ||||||
|    tftp |  | ||||||
|    webproxy |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user