{
    "content": [
        {
            "type": "text",
            "text": "# interfaces (man)\n\n## NAME\n\n/etc/network/interfaces - network interface configuration for ifup and ifdown\n\n## DESCRIPTION\n\n/etc/network/interfaces  contains network interface configuration information for the ifup(8)\nand ifdown(8) commands.  This is where you configure how your system is connected to the net‐\nwork.\n\n## Sections\n\n- **NAME**\n- **DESCRIPTION**\n- **EXAMPLE**\n- **FILE FORMAT**\n- **INTERFACE SELECTION**\n- **INTERFACE RENAMING**\n- **INCLUDING OTHER FILES**\n- **MAPPINGS**\n- **INTERFACE DEFINITIONS**\n- **INTERFACE TEMPLATES**\n- **PATTERN MATCHING INTERFACES**\n- **VLAN INTERFACES**\n- **IFACE OPTIONS**\n- **HOOK SCRIPTS**\n- **ENVIRONMENT VARIABLES**\n- **CONCURRENCY AND PARALLEL EXECUTION**\n- **OPTIONS PROVIDED BY OTHER PACKAGES**\n- **INET ADDRESS FAMILY** (18 subsections)\n- **IPX ADDRESS FAMILY** (4 subsections)\n- **INET6 ADDRESS FAMILY** (16 subsections)\n- **CAN ADDRESS FAMILY** (2 subsections)\n- **KNOWN BUGS/LIMITATIONS**\n- **AUTHOR**\n- **SEE ALSO**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "interfaces",
        "section": "",
        "mode": "man",
        "summary": "/etc/network/interfaces - network interface configuration for ifup and ifdown",
        "synopsis": null,
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [
            "The following example configures two network interfaces: eth0 is brought up at boot, and uses",
            "DHCP for IPv4 and SLAAC for IPv6, whereas eth1 is brought up whenever the network hardware is",
            "detected, and is configured with static IPv4 and IPv6 addresses.",
            "auto eth0",
            "allow-hotplug eth1",
            "iface eth0 inet dhcp",
            "iface eth0 inet6 auto",
            "iface eth1 inet static",
            "address 192.168.1.2/24",
            "gateway 192.168.1.1",
            "iface eth1 inet6 static",
            "address fec0:0:0:1::2/64",
            "gateway fec0:0:0:1::1"
        ],
        "see_also": [
            {
                "name": "ifup",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/ifup/8/json"
            },
            {
                "name": "ip",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/ip/8/json"
            },
            {
                "name": "ifconfig",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/ifconfig/8/json"
            },
            {
                "name": "run-parts",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/run-parts/8/json"
            },
            {
                "name": "resolvconf",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/resolvconf/8/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "EXAMPLE",
                "lines": 19,
                "subsections": []
            },
            {
                "name": "FILE FORMAT",
                "lines": 9,
                "subsections": []
            },
            {
                "name": "INTERFACE SELECTION",
                "lines": 25,
                "subsections": []
            },
            {
                "name": "INTERFACE RENAMING",
                "lines": 22,
                "subsections": []
            },
            {
                "name": "INCLUDING OTHER FILES",
                "lines": 19,
                "subsections": []
            },
            {
                "name": "MAPPINGS",
                "lines": 21,
                "subsections": []
            },
            {
                "name": "INTERFACE DEFINITIONS",
                "lines": 25,
                "subsections": []
            },
            {
                "name": "INTERFACE TEMPLATES",
                "lines": 13,
                "subsections": []
            },
            {
                "name": "PATTERN MATCHING INTERFACES",
                "lines": 41,
                "subsections": []
            },
            {
                "name": "VLAN INTERFACES",
                "lines": 39,
                "subsections": []
            },
            {
                "name": "IFACE OPTIONS",
                "lines": 29,
                "subsections": []
            },
            {
                "name": "HOOK SCRIPTS",
                "lines": 20,
                "subsections": []
            },
            {
                "name": "ENVIRONMENT VARIABLES",
                "lines": 41,
                "subsections": []
            },
            {
                "name": "CONCURRENCY AND PARALLEL EXECUTION",
                "lines": 10,
                "subsections": []
            },
            {
                "name": "OPTIONS PROVIDED BY OTHER PACKAGES",
                "lines": 15,
                "subsections": []
            },
            {
                "name": "INET ADDRESS FAMILY",
                "lines": 2,
                "subsections": [
                    {
                        "name": "The loopback Method",
                        "lines": 2
                    },
                    {
                        "name": "Options",
                        "lines": 2
                    },
                    {
                        "name": "The static Method",
                        "lines": 3
                    },
                    {
                        "name": "Options",
                        "lines": 26
                    },
                    {
                        "name": "The manual Method",
                        "lines": 4
                    },
                    {
                        "name": "Options",
                        "lines": 6
                    },
                    {
                        "name": "The dhcp Method",
                        "lines": 5
                    },
                    {
                        "name": "Options",
                        "lines": 18
                    },
                    {
                        "name": "The bootp Method",
                        "lines": 2
                    },
                    {
                        "name": "Options",
                        "lines": 9
                    },
                    {
                        "name": "The tunnel Method",
                        "lines": 4
                    },
                    {
                        "name": "Options",
                        "lines": 27
                    },
                    {
                        "name": "The ppp Method",
                        "lines": 2
                    },
                    {
                        "name": "Options",
                        "lines": 9
                    },
                    {
                        "name": "The wvdial Method",
                        "lines": 2
                    },
                    {
                        "name": "Options",
                        "lines": 3
                    },
                    {
                        "name": "The ipv4ll Method",
                        "lines": 4
                    },
                    {
                        "name": "Options",
                        "lines": 2
                    }
                ]
            },
            {
                "name": "IPX ADDRESS FAMILY",
                "lines": 2,
                "subsections": [
                    {
                        "name": "The static Method",
                        "lines": 2
                    },
                    {
                        "name": "Options",
                        "lines": 6
                    },
                    {
                        "name": "The dynamic Method",
                        "lines": 2
                    },
                    {
                        "name": "Options",
                        "lines": 3
                    }
                ]
            },
            {
                "name": "INET6 ADDRESS FAMILY",
                "lines": 2,
                "subsections": [
                    {
                        "name": "The auto Method",
                        "lines": 7
                    },
                    {
                        "name": "Options",
                        "lines": 19
                    },
                    {
                        "name": "The loopback Method",
                        "lines": 2
                    },
                    {
                        "name": "Options",
                        "lines": 2
                    },
                    {
                        "name": "The static Method",
                        "lines": 3
                    },
                    {
                        "name": "Options",
                        "lines": 41
                    },
                    {
                        "name": "The manual Method",
                        "lines": 4
                    },
                    {
                        "name": "Options",
                        "lines": 6
                    },
                    {
                        "name": "The dhcp Method",
                        "lines": 4
                    },
                    {
                        "name": "Options",
                        "lines": 19
                    },
                    {
                        "name": "The tunnel Method",
                        "lines": 4
                    },
                    {
                        "name": "Options",
                        "lines": 33
                    },
                    {
                        "name": "The v4tunnel Method",
                        "lines": 3
                    },
                    {
                        "name": "Options",
                        "lines": 27
                    },
                    {
                        "name": "The 6to4 Method",
                        "lines": 3
                    },
                    {
                        "name": "Options",
                        "lines": 15
                    }
                ]
            },
            {
                "name": "CAN ADDRESS FAMILY",
                "lines": 2,
                "subsections": [
                    {
                        "name": "The static Method",
                        "lines": 3
                    },
                    {
                        "name": "Options",
                        "lines": 24
                    }
                ]
            },
            {
                "name": "KNOWN BUGS/LIMITATIONS",
                "lines": 9,
                "subsections": []
            },
            {
                "name": "AUTHOR",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 10,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "/etc/network/interfaces - network interface configuration for ifup and ifdown\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "/etc/network/interfaces  contains network interface configuration information for the ifup(8)\nand ifdown(8) commands.  This is where you configure how your system is connected to the net‐\nwork.\n",
                "subsections": []
            },
            "EXAMPLE": {
                "content": "The following example configures two network interfaces: eth0 is brought up at boot, and uses\nDHCP for IPv4 and SLAAC for IPv6, whereas eth1 is brought up whenever the network hardware is\ndetected, and is configured with static IPv4 and IPv6 addresses.\n\nauto eth0\nallow-hotplug eth1\n\niface eth0 inet dhcp\n\niface eth0 inet6 auto\n\niface eth1 inet static\naddress 192.168.1.2/24\ngateway 192.168.1.1\n\niface eth1 inet6 static\naddress fec0:0:0:1::2/64\ngateway fec0:0:0:1::1\n",
                "subsections": []
            },
            "FILE FORMAT": {
                "content": "Lines starting with `#' are ignored. Note that end-of-line comments are NOT  supported,  com‐\nments must be on a line of their own.\n\nA line may be extended across multiple lines by making the last character a backslash.\n\nThe  file  consists  of zero or more \"iface\", \"mapping\", \"auto\", \"allow-\", \"rename\", \"source\"\nand \"source-directory\" stanzas. These will be described in more detail in the following  sec‐\ntions.\n",
                "subsections": []
            },
            "INTERFACE SELECTION": {
                "content": "Lines  beginning  with  the  word  \"auto\"  are used to identify the physical interfaces to be\nbrought up when ifup is run with the -a option.  (This option is also used by the system boot\nscripts, so interfaces marked \"auto\" are brought up at boot time.)  Physical interface  names\nshould  follow the word \"auto\" on the same line.  There can be multiple \"auto\" stanzas.  ifup\nbrings the named interfaces up in the order listed.\n\nLines beginning with \"allow-\" are used to identify interfaces that should be brought up auto‐\nmatically by various subsystems. This may be done using a command such as \"ifup  --allow=hot‐\nplug  eth0 eth1\", which will only bring up eth0 or eth1 if it is listed in an \"allow-hotplug\"\nline. Note that \"allow-auto\" and \"auto\" are synonyms.  (Interfaces marked \"allow-hotplug\" are\nbrought up when udev detects them.  This can either be during boot if the  interface  is  al‐\nready  present,  or at a later time, for example when plugging in a USB network card.  Please\nnote that this does not have anything to do with detecting a network cable being plugged in.)\n\nLines beginning with \"no-auto-down\" are used  to  identify  interfaces  that  should  not  be\nbrought  down  by the command \"ifdown -a\". Its main use is to prevent an interface from being\nbrought down during system shutdown time, for example if the root  filesystem  is  a  network\nfilesystem and the interface should stay up until the very end. Note that you can still bring\ndown the interface by specifying the interface name explicitly.\n\nLines  beginning  with  \"no-scripts\"  are  used  to  identify interfaces for which scripts in\n/etc/network/if-*.d/ should not be run when those interfaces are  brought  up  or  down.   he\nabove  will  match  eth0  and  eth1,  and will bring up both interfaces using the \"iface eth\"\nstanza.\n",
                "subsections": []
            },
            "INTERFACE RENAMING": {
                "content": "Lines beginning with \"rename\" are used to rename interfaces.  It takes one or more  arguments\nin  the form of \"CUR=NEW\", where CUR is the name of an existing interface, and NEW is the new\nname.  This becomes very powerful when combined with pattern matching for the CUR interface.\n\nInterfaces are renamed whenever \"ifup\" is called.  Renaming logically happens before anything\nelse is done.  So if an interface is started with the name \"foo\", and it has to be renamed to\n\"bar\" and brought up at boot time, then one should use the following  /etc/network/interfaces\nfile:\n\nrename foo=bar\nauto bar\niface bar ...\n\nHowever, if the interface is not renamed yet, it is possible to use both \"ifup foo\" and \"ifup\nbar\".  The former command will then automatically be converted to the latter.  This is mainly\nuseful when ifup is called automatically whenever an interface is hotplugged.\n\nInterface renaming only works if the operating system supports it, if an interface is not re‐\nnamed to another existing interface, and may require that the interface that is to be renamed\nhas not been brought up yet.  If ifup tries to rename an interface and it fails, it will exit\nwith an error.\n",
                "subsections": []
            },
            "INCLUDING OTHER FILES": {
                "content": "Lines  beginning with \"source\" are used to include stanzas from other files, so configuration\ncan be split into many files. The word \"source\" is  followed  by  the  path  of  file  to  be\nsourced. Shell wildcards can be used.  (See wordexp(3) for details.)\n\nSimilarly, \"source-directory\" keyword is used to source multiple files at once, without spec‐\nifying them individually or using shell globs. Additionally, when \"source-directory\" is used,\nnames  of  the files are checked to match the following regular expression: ^[a-zA-Z0-9-]+$.\nIn other words, the names must consist entirely of ASCII upper- and lower-case letters, ASCII\ndigits, ASCII underscores, and ASCII minus-hyphens. In the directory  path,  shell  wildcards\nmay be used as well.\n\nWhen  sourcing  files or directories, if a path doesn't have a leading slash, it's considered\nrelative to the directory containing the file in which the keyword is placed. In the  example\nabove, if the file is located at /etc/network/interfaces, paths to the included files are un‐\nderstood to be under /etc/network.\n\nBy  default,  on  a  freshly  installed Debian system, the interfaces file includes a line to\nsource files in the /etc/network/interfaces.d directory.\n",
                "subsections": []
            },
            "MAPPINGS": {
                "content": "Stanzas beginning with the word \"mapping\" are used to determine how a logical interface  name\nis  chosen  for  a  physical interface that is to be brought up.  The first line of a mapping\nstanza consists of the word \"mapping\" followed by a pattern in shell glob syntax.  Each  map‐\nping  stanza must contain a script definition.  The named script is run with the physical in‐\nterface name as its argument and with the contents of all following \"map\" lines (without  the\nleading  \"map\")  in  the stanza provided to it on its standard input. The script must print a\nstring on its standard output before exiting. See /usr/share/doc/ifupdown/examples for  exam‐\nples of what the script must print.\n\nMapping  a  name  consists of searching the remaining mapping patterns and running the script\ncorresponding to the first match; the script outputs  the  name  to  which  the  original  is\nmapped.\n\nifup is normally given a physical interface name as its first non-option argument.  ifup also\nuses  this  name  as the initial logical name for the interface unless it is accompanied by a\nsuffix of the form =LOGICAL, in which case ifup chooses LOGICAL as the initial  logical  name\nfor  the  interface.  It then maps this name, possibly more than once according to successive\nmapping specifications,  until no further mappings are possible.  If the  resulting  name  is\nthe name of some defined logical interface then ifup attempts to bring up the physical inter‐\nface as that logical interface.  Otherwise ifup exits with an error.\n",
                "subsections": []
            },
            "INTERFACE DEFINITIONS": {
                "content": "Stanzas defining logical interfaces start with a line consisting of the word \"iface\" followed\nby  the name of the logical interface.  In simple configurations without mapping stanzas this\nname should simply be the name of the physical interface to which it is to be applied.   (The\ndefault  mapping  script is, in effect, the echo command.)  The interface name is followed by\nthe name of the address family that the interface uses.  This will be \"inet\" for TCP/IP  net‐\nworking,  but  there  is  also  some  support for IPX networking (\"ipx\"), and IPv6 networking\n(\"inet6\").  Following that is the name of the method used to configure the interface.\n\nAdditional options can be given on subsequent lines in the stanza.  Which options are  avail‐\nable  depends  on  the family and method, as described below.  Additional options can be made\navailable by other Debian packages.  For example, the wireless-tools package makes  available\na  number  of  options prefixed with \"wireless-\" which can be used to configure the interface\nusing iwconfig(8).  (See wireless(7) for details.)  A list of packages  providing  additional\noptions is mentioned in the section \"OPTIONS PROVIDED BY OTHER PACKAGE\".\n\nOptions  are  usually  indented for clarity (as in the example above) but are not required to\nbe.\n\nMultiple \"iface\" stanzas can be given for the same interface, in which case all of  the  con‐\nfigured addresses and options for that interface will be applied when bringing up that inter‐\nface.   This  is  useful to configure both IPv4 and IPv6 addresses on the same interface (al‐\nthough if no inet6 stanza is present, the kernel will normally still  perform  stateless  ad‐\ndress  autoconfiguration  if  there is an IPv6 route advertisement daemon on the network). It\ncan also be used to configure multiple addresses of the same type on a single interface.\n",
                "subsections": []
            },
            "INTERFACE TEMPLATES": {
                "content": "It is possible to define interface definition templates and extend them  using  the  inherits\nkeyword:\n\niface ethernet inet static\nmtu 1500\nhwaddress 11:22:33:44:55:66\n\niface eth0 inet static inherits ethernet\naddress 192.168.1.2/24\n\nThis  may  be  useful to separate link-level settings shared by multiple interfaces from, for\nexample, IP address settings specific to every interface.\n",
                "subsections": []
            },
            "PATTERN MATCHING INTERFACES": {
                "content": "It is possible to use patterns to match one or more real interfaces.  These patterns can cur‐\nrently appear in lines beginning with \"auto\", \"allow-\", \"rename\" and on the command line.   A\npattern has the following format (see below for exceptions for GNU/Hurd):\n\n[VARIABLE]/VALUE[/[OPTIONS]][=LOGICAL]\n\nIf  no  VARIABLE  is  given, this pattern will match interface names against the given VALUE.\nVALUE can contain wildcard patterns such as ? and *, see the fnmatch(3) function.  When  ifup\nor  ifdown  is  run, patterns are replaces by all real interfaces that are currently known to\nthe operating system kernel and whose names match the pattern.  For example, given  the  fol‐\nlowing line:\n\nauto /eth*\n\nIf the kernel knows about the interfaces with names lo, eth0 and eth1, then the above line is\nthen interpreted as:\n\nauto eth0 eth1\n\nNote that there must still be valid \"iface\" stanzas for each matching interface.  However, it\nis possible to combine a pattern with a mapping to a logical interface, like so:\n\nauto /eth*=eth\niface eth inet dhcp\n\nValid  variable  names  are \"mac\", in which case value is matched against the interface's MAC\naddress.  On Linux, the variable name can also be any filename in /sys/class/net/<iface>/, in\nwhich case the value is matched against the contents of the corresponding file.\n\nThe OPTIONS field currently only supports a number. If given, only the  n-th  interface  that\nhas  a  matching  value will actually be used, where n is the number given, starting at 1. So\n/eth*/1 will match the first interface whose name starts with eth.\n\nOn GNU/Hurd, interface names start with /dev/, and this obviously clashes with the format for\npatterns.  To ensure an interface name like /dev/eth0 does not get interpreted as a  pattern,\nany pattern that starts with /dev/ is ignored, and instead interpreted as a literal interface\nname.  To make a pattern that matches interface names on GNU/Hurd, use something like:\n\nauto /?dev?eth*=eth\niface eth inet dhcp\n",
                "subsections": []
            },
            "VLAN INTERFACES": {
                "content": "To  ease  the configuration of VLAN interfaces, interfaces having .  (full stop character) in\nthe name are configured as 802.1q tagged virtual LAN interface. For example, interface eth0.1\nis a virtual interface with VLAN ID 1 having eth0 as its parent interface.\n\nVLAN interfaces are mostly treated as independent interfaces.  As such, a VLAN  interface  is\nnormally not automatically brought up when its parent interface is brought up.  The exception\nis when ifup is called with the --allow option, in which case all VLAN interfaces that are in\nthe  same  allow class as the parent interface are brought up together with the parent inter‐\nface.  For example:\n\nallow-hotplug eth0 eth0.1\n\niface eth0 inet static\naddress ...\n\niface eth0.1 inet static\naddress ...\n\niface eth0.2 inet static\naddress ...\n\nIn the above example, when \"ifup --allow hotplug eth0\" is called (either manually or  because\nudev  triggers this when a network device is hotplugged), the interface eth0 and the VLAN in‐\nterface eth0.1 are brought up, but eth0.2 is not.\n\nKeep in mind that pattern matching will only match interfaces the kernel knows about,  so  it\nis not possible to specify \"auto /eth0.*\" and have all VLAN interfaces for eth0 be brought up\nat  boot  time.  Another way to ensure that a VLAN interface is brought up automatically when\nthe parent interface is brought up, is to use a recursive call to ifup, like so:\n\niface eth0 inet manual\nup ifup eth0.3\n\niface eth0.3 inet static\naddress ...\n\nNote that there is no need to add an explicit call to ifdown, since VLAN interfaces are auto‐\nmatically brought down whenever their parent interfaces are brought down.\n",
                "subsections": []
            },
            "IFACE OPTIONS": {
                "content": "The following \"command\" options are available for every family and method.  Each of these op‐\ntions can be given multiple times in a single stanza, in which case the commands are executed\nin the order in which they appear in the stanza.  (You can ensure a command  never  fails  by\nsuffixing them with \"|| true\".)\n\npre-up command\nRun command before bringing the interface up.  If this command fails then ifup aborts,\nrefraining  from marking the interface as configured, prints an error message, and ex‐\nits with status 0.  This behavior may change in the future.\n\nup command, post-up command\nRun command after bringing the interface up.  If this command fails then ifup  aborts,\nrefraining  from  marking  the interface as configured (even though it has really been\nconfigured), prints an error message, and exits with  status  0.   This  behavior  may\nchange in the future.\n\ndown command, pre-down command\nRun  command  before  taking  the  interface  down.  If this command fails then ifdown\naborts, marks the interface as deconfigured (even though it has not really been decon‐\nfigured), and exits with status 0.  This behavior may change in the future.\n\npost-down command\nRun command after taking the interface  down.   If  this  command  fails  then  ifdown\naborts,  marks  the interface as deconfigured, and exits with status 0.  This behavior\nmay change in the future.\n\ndescription name\nAlias interface by name\n",
                "subsections": []
            },
            "HOOK SCRIPTS": {
                "content": "There are four directories in which scripts can be placed which will always be  run  for  any\ninterface during certain phases of ifup and ifdown commands. These are:\n\n/etc/network/if-pre-up.d/\nScripts in this directory are run before bringing the interface up.\n\n/etc/network/if-up.d/\nScripts in this directory are run after bringing the interface up.\n\n/etc/network/if-down.d/\nScripts in this directory are run before bringing the interface down.\n\n/etc/network/if-post-down.d/\nScripts in this directory are run after bringing the interface down.\n\nThe  scripts  in which are run (with no arguments) using run-parts(8) after the corresponding\npre-up, up, down and post-down options in the /etc/network/interfaces file itself  have  been\nprocessed.  Please note that as post-up and pre-down are aliases, no files in the correspond‐\ning directories are processed.  Please use if-up.d and if-down.d directories instead.\n",
                "subsections": []
            },
            "ENVIRONMENT VARIABLES": {
                "content": "All hook scripts, and the commands executed by pre-up, up, post-up, pre-down, down and  post-\ndown have access to the following environment variables:\n\nIFACE  The physical name of the interface being processed, or \"--all\" (see below).\n\nLOGICAL\nThe logical name of the interface being processed, or \"auto\" (see below).\n\nADDRFAM\nThe address family of the interface, or \"meta\" (see below).\n\nMETHOD The method of the interface (e.g., static), or \"none\" (see below).\n\nCLASS  The  class  of  interfaces  being processed.  This is a copy of the value given to the\n--allow option when running ifup or ifdown, otherwise it is set  to  \"auto\"  when  the\n--all option is used.\n\nCLASS  The  class  of  interfaces  being processed.  This is a copy of the value given to the\n--allow option when running ifup or ifdown, otherwise it is set  to  \"auto\"  when  the\n--all option is used.\n\nMODE   start if run from ifup, stop if run from ifdown.\n\nPHASE  As  per MODE, but with finer granularity, distinguishing the pre-up, post-up, pre-down\nand post-down phases.\n\nVERBOSITY\nIndicates whether --verbose was used; set to 1 if so, 0 if not.\n\nPATH   The command search path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\n\nAdditionally, all options given in an interface definition stanza are exported to  the  envi‐\nronment  in  upper  case  with  \"IF\" prepended and with hyphens converted to underscores and\nnon-alphanumeric characters discarded.\n\nWhen ifupdown is being called with the --all option, before doing anything to interfaces,  it\ncalls  all  the  hook  scripts (pre-up or down) with IFACE set to \"--all\", LOGICAL set to the\ncurrent value  of  --allow  parameter  (or  \"auto\"  if  it's  not  set),  ADDRFAM=\"meta\"  and\nMETHOD=\"none\".   After all the interfaces have been brought up or taken down, the appropriate\nscripts (up or post-down) are executed.\n",
                "subsections": []
            },
            "CONCURRENCY AND PARALLEL EXECUTION": {
                "content": "Ifupdown uses per-interface locking to ensure that concurrent ifup and ifdown  calls  to  the\nsame interface are run in serial.  However, calls to different interfaces will be able to run\nin  parallel.  It is therefore important that any hook scripts and pre-up, up, down and post-\ndown commands are written with the possibility of parallel execution in mind.\n\nIt is allowed to recursively call ifup and ifdown from hook scripts and  interface  commands,\nas  long  as  these  calls  refer to a different interface than the one that is already being\n(de)configured.  Loops are detected and will result in the call failing instead  of  a  dead‐\nlock, although it is best if one does not rely on that.\n",
                "subsections": []
            },
            "OPTIONS PROVIDED BY OTHER PACKAGES": {
                "content": "This  manual page documents the configuration options provided by the ifupdown package.  How‐\never, other packages can make other options available  for  use  in  /etc/network/interfaces.\nHere is a list of packages that provide such extensions:\n\narping,  avahi-autoipd,  avahi-daemon,  bind9,  bridge-utils,  clamav-freshclam, controlaula,\nepoptes-client, ethtool, guidedog, hostap-utils, hostapd, htpdate, ifenslave, ifmetric, ifup‐\ndown-extra, ifupdown-multi, ifupdown-scripts-zg2, initscripts, isatapd, linux-wlan-ng, lprng,\nmacchanger, miredo, nslcd, ntpdate,  openntpd,  openresolv,  openssh-server,  openvpn,  open‐\nvswitch-switch,  postfix,  resolvconf,  sendmail-base,  shorewall-init, slrn, slrnpull, tinc,\nucarp, uml-utilities, uruk, vde2, vlan, vzctl, whereami, wide-dhcpv6-client,  wireless-tools,\nwpasupplicant.\n\nPlease  consult  the  documentation  of  those packages for information about how they extend\nifupdown.\n",
                "subsections": []
            },
            "INET ADDRESS FAMILY": {
                "content": "This section documents the methods available in the inet address family.\n",
                "subsections": [
                    {
                        "name": "The loopback Method",
                        "content": "This method may be used to define the IPv4 loopback interface.\n"
                    },
                    {
                        "name": "Options",
                        "content": "(No options)\n"
                    },
                    {
                        "name": "The static Method",
                        "content": "This method may be used to define Ethernet interfaces  with  statically  allocated  IPv4  ad‐\ndresses.\n"
                    },
                    {
                        "name": "Options",
                        "content": "address address\nAddress (dotted quad/netmask) required\n\nnetmask mask\nNetmask (dotted quad or number of bits) deprecated\n\nbroadcast broadcastaddress\nBroadcast address (dotted quad, + or -) deprecated. Default value: \"+\"\n\nmetric metric\nRouting metric for default gateway (integer)\n\ngateway address\nDefault gateway (dotted quad)\n\npointopoint address\nAddress of other end point (dotted quad). Note the spelling of \"point-to\".\n\nhwaddress address\nLink local address or \"random\".\n\nmtu size\nMTU size\n\nscope  Address validity scope. Possible values: global, link, host\n"
                    },
                    {
                        "name": "The manual Method",
                        "content": "This  method  may be used to define interfaces for which no configuration is done by default.\nSuch interfaces can be configured manually by means of up  and  down  commands  or  /etc/net‐\nwork/if-*.d scripts.\n"
                    },
                    {
                        "name": "Options",
                        "content": "hwaddress address\nLink local address or \"random\".\n\nmtu size\nMTU size\n"
                    },
                    {
                        "name": "The dhcp Method",
                        "content": "This  method  may  be used to obtain an address via DHCP with any of the tools: dhclient, ud‐\nhcpc, dhcpcd. (They have been listed in their order of precedence.) If you have a complicated\nDHCP setup you should note that some of these clients use their own configuration  files  and\ndo not obtain their configuration information via ifup.\n"
                    },
                    {
                        "name": "Options",
                        "content": "hostname hostname\nHostname to be requested (dhcpcd, udhcpc)\n\nmetric metric\nMetric for added routes (dhclient)\n\nleasetime leasetime\nPreferred lease time in seconds (dhcpcd)\n\nvendor vendorid\nVendor class identifier (dhcpcd)\n\nclient clientid\nClient identifier (dhcpcd), or \"no\" (dhclient)\n\nhwaddress address\nHardware address.\n"
                    },
                    {
                        "name": "The bootp Method",
                        "content": "This method may be used to obtain an address via bootp.\n"
                    },
                    {
                        "name": "Options",
                        "content": "bootfile file\nTell the server to use file as the bootfile.\n\nserver address\nUse the IP address address to communicate with the server.\n\nhwaddr addr\nUse addr as the hardware address instead of whatever it really is.\n"
                    },
                    {
                        "name": "The tunnel Method",
                        "content": "This  method  is  used to create GRE or IPIP tunnels. You need to have the ip binary from the\niproute package. For GRE tunnels, you will need to load the ipgre module and the ipip module\nfor IPIP tunnels.\n"
                    },
                    {
                        "name": "Options",
                        "content": "address address\nLocal address (dotted quad) required\n\nmode type\nTunnel type (either GRE or IPIP) required\n\nendpoint address\nAddress of other tunnel endpoint required\n\ndstaddr address\nRemote address (remote address inside tunnel)\n\nlocal address\nAddress of the local endpoint\n\nmetric metric\nRouting metric for default gateway (integer)\n\ngateway address\nDefault gateway\n\nttl time\nTTL setting\n\nmtu size\nMTU size\n"
                    },
                    {
                        "name": "The ppp Method",
                        "content": "This method uses pon/poff to configure a PPP interface. See those commands for details.\n"
                    },
                    {
                        "name": "Options",
                        "content": "provider name\nUse name as the provider (from /etc/ppp/peers).\n\nunit number\nUse number as the ppp unit number.\n\noptions string\nPass string as additional options to pon.\n"
                    },
                    {
                        "name": "The wvdial Method",
                        "content": "This method uses wvdial to configure a PPP interface. See that command for more details.\n"
                    },
                    {
                        "name": "Options",
                        "content": "provider name\nUse name as the provider (from /etc/wvdial.conf).\n"
                    },
                    {
                        "name": "The ipv4ll Method",
                        "content": "This method uses avahi-autoipd to configure an interface  with  an  IPv4  Link-Layer  address\n(169.254.0.0/16  family).  This method is also known as APIPA or IPAC, and often colloquially\nreferred to as \"Zeroconf address\".\n"
                    },
                    {
                        "name": "Options",
                        "content": "(No options)\n"
                    }
                ]
            },
            "IPX ADDRESS FAMILY": {
                "content": "This section documents the methods available in the ipx address family.\n",
                "subsections": [
                    {
                        "name": "The static Method",
                        "content": "This method may be used to setup an IPX interface. It requires the ipxinterface command.\n"
                    },
                    {
                        "name": "Options",
                        "content": "frame type\ntype of Ethernet frames to use (e.g. 802.2)\n\nnetnum id\nNetwork number\n"
                    },
                    {
                        "name": "The dynamic Method",
                        "content": "This method may be used to setup an IPX interface dynamically.\n"
                    },
                    {
                        "name": "Options",
                        "content": "frame type\ntype of Ethernet frames to use (e.g. 802.2)\n"
                    }
                ]
            },
            "INET6 ADDRESS FAMILY": {
                "content": "This section documents the methods available in the inet6 address family.\n",
                "subsections": [
                    {
                        "name": "The auto Method",
                        "content": "This method may be used to define interfaces with automatically assigned IPv6 addresses.  Us‐\ning this method on its own doesn't mean that RDNSS options will be applied, too. To make this\nhappen, rdnssd daemon must be installed, properly configured and running. If stateless DHCPv6\nsupport  is  turned  on, then additional network configuration parameters such as DNS and NTP\nservers will be retrieved from a DHCP server. Please note that on ifdown, the  lease  is  not\ncurrently released (a known bug).\n"
                    },
                    {
                        "name": "Options",
                        "content": "privext int\nPrivacy extensions (RFC4941) (0=off, 1=assign, 2=prefer)\n\nacceptra int\nAccept router advertisements (0=off, 1=on, 2=on+forwarding). Default value: \"2\"\n\ndhcp int\nUse stateless DHCPv6 (0=off, 1=on)\n\nrequestprefix int\nRequest a prefix through DHCPv6 Prefix Delegation (0=off, 1=on). Default value:\n\"0\"\n\nll-attempts\nNumber of attempts to wait for a link-local address. Default value: \"60\"\n\nll-interval\nLink-local address polling interval in seconds. Default value: \"0.1\"\n"
                    },
                    {
                        "name": "The loopback Method",
                        "content": "This method may be used to define the IPv6 loopback interface.\n"
                    },
                    {
                        "name": "Options",
                        "content": "(No options)\n"
                    },
                    {
                        "name": "The static Method",
                        "content": "This  method may be used to define interfaces with statically assigned IPv6 addresses. By de‐\nfault, stateless autoconfiguration is disabled for this interface.\n"
                    },
                    {
                        "name": "Options",
                        "content": "address address\nAddress (colon delimited/netmask) required\n\nnetmask mask\nNetmask (number of bits, eg 64) deprecated\n\nmetric metric\nRouting metric for default gateway (integer)\n\ngateway address\nDefault gateway (colon delimited)\n\nmedia type\nMedium type, driver dependent\n\nhwaddress address\nHardware address or \"random\"\n\nmtu size\nMTU size\n\nacceptra int\nAccept router advertisements (0=off, 1=on, 2=on+forwarding)\n\nautoconf int\nPerform stateless autoconfiguration (0=off, 1=on). Default value: \"0\"\n\nprivext int\nPrivacy extensions (RFC3041) (0=off, 1=assign, 2=prefer)\n\nscope  Address validity scope. Possible values: global, site, link, host\n\npreferred-lifetime int\nTime that address remains preferred\n\ndad-attempts\nNumber of attempts to settle DAD (0 to disable DAD). Default value: \"60\"\n\ndad-interval\nDAD state polling interval in seconds. Default value: \"0.1\"\n"
                    },
                    {
                        "name": "The manual Method",
                        "content": "This method may be used to define interfaces for which no configuration is done  by  default.\nSuch  interfaces  can  be  configured  manually by means of up and down commands or /etc/net‐\nwork/if-*.d scripts.\n"
                    },
                    {
                        "name": "Options",
                        "content": "hwaddress address\nHardware address or \"random\"\n\nmtu size\nMTU size\n"
                    },
                    {
                        "name": "The dhcp Method",
                        "content": "This method may be used to obtain network interface configuration via  stateful  DHCPv6  with\ndhclient.  In  stateful  DHCPv6,  the  DHCP  server is responsible for assigning addresses to\nclients.\n"
                    },
                    {
                        "name": "Options",
                        "content": "hwaddress address\nHardware address or \"random\"\n\nacceptra int\nAccept router advertisements (0=off, 1=on, 2=on+forwarding). Default value: \"1\"\n\nautoconf int\nPerform stateless autoconfiguration (0=off, 1=on)\n\nrequestprefix int\nRequest a prefix through DHCPv6 Prefix Delegation (0=off, 1=on). Default value:\n\"0\"\n\nll-attempts\nNumber of attempts to wait for a link-local address. Default value: \"60\"\n\nll-interval\nLink-local address polling interval in seconds. Default value: \"0.1\"\n"
                    },
                    {
                        "name": "The tunnel Method",
                        "content": "This method is used to create IP6GRE, IP6IP6 or IPIP6 tunnels. You need to have the ip binary\nfrom the iproute package. For IP6GRE tunnels, you will need to load the  ip6gre  module  and\nthe ip6tunnel module for IP6IP6 or IPIP6 tunnels.\n"
                    },
                    {
                        "name": "Options",
                        "content": "address address\nLocal Address (colon delimited)\n\nnetmask mask\nNetmask (number of bits, eg 64)\n\nmode type\nTunnel type (either IP6GRE, IP6IP6 or IPIP6) required\n\nendpoint address\nAddress of other tunnel endpoint (colon delimited) required\n\ndstaddr address\nRemote address (remote address inside tunnel)\n\nlocal address\nAddress of the local endpoint (colon delimited)\n\nmetric metric\nRouting metric for default gateway (integer)\n\ngateway address\nDefault gateway (colon delimited)\n\nttl time\nTTL setting\n\nmtu size\nMTU size\n\nencaplimit limit\nEncapsulation limit (\"none\" or integer)\n"
                    },
                    {
                        "name": "The v4tunnel Method",
                        "content": "This  method  may  be used to setup an IPv6-over-IPv4 tunnel. It requires the ip command from\nthe iproute package.\n"
                    },
                    {
                        "name": "Options",
                        "content": "address address\nAddress (colon delimited/netmask) required\n\nnetmask mask\nNetmask (number of bits, eg 64) deprecated\n\nendpoint address\nAddress of other tunnel endpoint (IPv4 dotted quad) required\n\nlocal address\nAddress of the local endpoint (IPv4 dotted quad)\n\nmetric metric\nRouting metric for default gateway (integer)\n\ngateway address\nDefault gateway (colon delimited)\n\nttl time\nTTL setting\n\nmtu size\nMTU size\n\npreferred-lifetime int\nTime that address remains preferred\n"
                    },
                    {
                        "name": "The 6to4 Method",
                        "content": "This method may be used to setup a 6to4 tunnel. It requires the ip command from  the  iproute\npackage.\n"
                    },
                    {
                        "name": "Options",
                        "content": "local address\nAddress of the local endpoint (IPv4 dotted quad) required\n\nmetric metric\nRouting metric for default gateway (integer)\n\nttl time\nTTL setting\n\nmtu size\nMTU size\n\npreferred-lifetime int\nTime that address remains preferred\n"
                    }
                ]
            },
            "CAN ADDRESS FAMILY": {
                "content": "This section documents the methods available in the can address family.\n",
                "subsections": [
                    {
                        "name": "The static Method",
                        "content": "This  method  may be used to setup a Controller Area Network (CAN) interface. It requires the\nthe ip command from the iproute package.\n"
                    },
                    {
                        "name": "Options",
                        "content": "bitrate bitrate\nbitrate (1..1000000) required\n\nsamplepoint samplepoint\nsample point (0.000..0.999)\n\nloopback loopback\nloop back CAN Messages (on|off)\n\nlistenonly listenonly\nlisten only mode (on|off)\n\ntriple triple\nactivate triple sampling (on|off)\n\noneshot oneshot\none shot mode (on|off)\n\nberr berr\nactivate berr reporting (on|off)\n\nrestart-ms restart-ms\nrestart-ms (0..)\n"
                    }
                ]
            },
            "KNOWN BUGS/LIMITATIONS": {
                "content": "The ifup and ifdown programs work with so-called \"physical\" interface names.  These names are\nassigned to hardware by the kernel.  Unfortunately it can happen that the kernel assigns dif‐\nferent physical interface names to the same hardware at different times;  for  example,  what\nwas  called  \"eth0\" last time you booted is now called \"eth1\" and vice versa.  This creates a\nproblem if you want to configure the interfaces appropriately.  A way to deal with this prob‐\nlem is to use mapping scripts that choose logical interface names according to the properties\nof the interface hardware.  See the get-mac-address.sh script in the examples  directory  for\nan example of such a mapping script.  See also Debian bug #101728.\n",
                "subsections": []
            },
            "AUTHOR": {
                "content": "The  ifupdown  suite was written by Anthony Towns <aj@azure.humbug.org.au>.  This manpage was\ncontributed by Joey Hess <joey@kitenet.net>.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "ifup(8), ip(8), ifconfig(8), run-parts(8), resolvconf(8).\n\nFor advice on configuring this package read the Network Configuration chapter of  the  Debian\nReference     manual,     available     at    http://www.debian.org/doc/manuals/debian-refer‐\nence/ch05.en.html or in the debian-reference-en package.\n\nExamples of how to set up interfaces can be  found  in  /usr/share/doc/ifupdown/examples/net‐\nwork-interfaces.gz.\n\nifupdown                                    24 July 2017                               INTERFACES(5)",
                "subsections": []
            }
        }
    }
}