NM-SETTINGS-IFCFG-RH(5)
β¨ NAME β¨
nm-settings-ifcfg-rh β the whole entire lore of the ifcfg-rh settings plugin, bestie π
π DESCRIPTION π
okay so first things first: NetworkManager is built on the concept of connection profiles that hold all the network configuration (peep nm-settings-nmcli(5) for the deets). Those profiles can be stored in a bunch of different formats, and NetworkManager uses plugins to read and write the data. You configure whichever plugins you want in NetworkManager.conf(5).
The ifcfg-rh plugin is the one used on the Fedora and Red Hat Enterprise Linux distributions πΊπΈ to read/write configuration from/to the traditional /etc/sysconfig/network-scripts/ifcfg-* files. Every single NetworkManager connection maps to one ifcfg-* file, with possible usage of keys-* for passwords, route-* for static IPv4 routes and route6-* for static IPv6 routes. rn the plugin supports reading and writing Ethernet, Wi-Fi, InfiniBand, VLAN, Bond, Bridge, and Team connections. Unsupported connection types (such as WWAN, PPPoE, VPN, or ADSL) get handled by the keyfile plugin instead (nm-settings-keyfile(5)). The main reason anyone runs the ifcfg-rh plugin is compatibility with legacy configurations for ifup and ifdown (initscripts). periodt.
π¦ FILE FORMAT π¦
The ifcfg-rh config format is a simple text file stuffed with VARIABLE="value" lines. The format itself is described in sysconfig.txt of the initscripts package. Heads up though β the configuration files may be sourced by initscripts, so they must be valid shell scripts π. That means, for instance, that # character can be used for comments, strings with spaces must be quoted, special characters must be escaped, etc.
Users can create or modify the ifcfg-rh connection files manually, even if that is not the recommended way of managing the profiles. But if you do choose to go that route, you must inform NetworkManager about your changes (for example via nmcli con (re)load) or it literally won't know, bestie.
Some ifcfg-rh configuration examples: π
Simple DHCP ethernet configuration:
NAME=ethernet
UUID=1c4ddf70-01bf-46d6-b04f-47e842bd98da
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
ONBOOT=yes
Simple ethernet configuration with static IP:
TYPE=Ethernet
BOOTPROTO=none
IPADDR=10.1.0.25
PREFIX=24
GATEWAY=10.1.0.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=ethernet-em2
UUID=51bb3904-c0fc-4dfe-83b2-0a71e7928c13
DEVICE=em2
ONBOOT=yes
WPA2 Enterprise WLAN (TTLS with inner MSCHAPV2 authentication):
ESSID="CompanyWLAN"
MODE=Managed
KEY_MGMT=WPA-EAP
TYPE=Wireless
IEEE_8021X_EAP_METHODS=TTLS
IEEE_8021X_IDENTITY=joe
IEEE_8021X_PASSWORD_FLAGS=ask
IEEE_8021X_INNER_AUTH_METHODS=MSCHAPV2
IEEE_8021X_CA_CERT=/home/joe/.cert/company.crt
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=MyCompany
UUID=f79848ff-11a6-4810-9e1a-99039dea84c4
ONBOOT=yes
Bridge and bridge port configuration:
ifcfg-bridge: ifcfg-bridge-port:
NAME=bridge NAME=bridge007-port-eth0
UUID=4be99ce0-c5b2-4764-8b77-ec226e440125 UUID=3ad56c4a-47e1-419b-b0d4-8ad86eb967a3
DEVICE=bridge007 DEVICE=eth0
STP=yes ONBOOT=yes
TYPE=Bridge TYPE=Ethernet
BRIDGING_OPTS=priority=32768 BRIDGE=bridge007
ONBOOT=yes
BOOTPROTO=dhcp
Bonding configuration:
ifcfg-BOND: ifcfg-BOND-port:
NAME=BOND NAME=BOND-port
UUID=b41888aa-924c-450c-b0f8-85a4f0a51b4a UUID=9bb048e4-286a-4cc3-b104-007dbd20decb
DEVICE=bond100 DEVICE=eth0
BONDING_OPTS="mode=balance-rr miimon=100" ONBOOT=yes
TYPE=Bond TYPE=Ethernet
BONDING_MASTER=yes MASTER=bond100
ONBOOT=yes SLAVE=yes
BOOTPROTO=dhcp
Team and team port configuration:
ifcfg-my_team0:
DEVICE=team0
TEAM_CONFIG="{ \"device\": \"team0\", \"runner\": {\"name\": \"roundrobin\"}, \"ports\": {\"eth1\": {}, \"eth2\": {}} }"
DEVICETYPE=Team
BOOTPROTO=dhcp
NAME=team0-profile
UUID=1d3460a0-7b37-457f-a300-fe8d92da4807
ONBOOT=yes
ifcfg-my_team0_port1:
NAME=team0-port1
UUID=d5aed298-c567-4cc1-b808-6d38ecef9e64
DEVICE=eth1
ONBOOT=yes
TEAM_MASTER=team0
DEVICETYPE=TeamPort
ifcfg-my_team0_port2:
NAME=team0-port2
UUID=94e75f4e-e5ad-401c-8962-31e0ae5d2215
DEVICE=eth2
ONBOOT=yes
TEAM_MASTER=team0
DEVICETYPE=TeamPort
The UUID values in the config files must be unique β no cap. You can use the uuidgen command line tool to generate such values. Alternatively, you can leave out UUID entirely. In that case NetworkManager will generate a UUID based on the file name. icon behavior honestly π«Ά
πΈ DIFFERENCES AGAINST INITSCRIPTS πΈ
The main differences of NetworkManager ifcfg-rh plugin and traditional initscripts are:
NM_CONTROLLED=yes|noNM_CONTROLLEDis a NetworkManager-specific variable used by NetworkManager for determining whether the device of the ifcfg file should be managed.NM_CONTROLLED=yesis supposed if the variable is not present in the file. Note that if you have more ifcfg files for a single device,NM_CONTROLLED=noin one of the files will cause the device not to be managed. The profile may not even be the active one. π- New variables NetworkManager has introduced some new variable, not present in initscripts, to be able to store data for its new features. The variables are marked as extensions in the tables below.
- Semantic change of variables and differences NetworkManager changes the semantics for a few variables and there are other behavioral differences. π
PEERDNSβ initscripts interpretPEERDNS=noto mean "never touchresolv.conf". NetworkManager interprets it to say "never add automatic (DHCP, PPP, VPN, etc.) nameservers toresolv.conf".ONBOOTβ initscripts useONBOOT=yesto mark the devices that are to be activated during boot. NetworkManager extends this to also mean that this profile can be used for auto-connecting at any time.BOOTPROTOβ NetworkManager supports traditional valuesnone(static),dhcp. But it also allows additional values to enable new addressing methods. They areautoipfor IPv4 link-local addressing using Avahi daemon andsharedfor connection sharing. Whensharedis used, NetworkManager assigns the interface10.42.0.1, or it uses the first static address, if configured.HWADDRβ initscripts compare the currently set hardware address of a device, while NetworkManager considers the permanent one.NOZEROCONFβ initscripts add an on-link route to169.254.0.0/16for ethernet profiles that don't explicitly opt-out by settingNOZEROCONFvariable. NetworkManager does not do that. Instead a static, manual route withscope=253(link) should be added to get that behavior.
See the next section for detailed mapping of NetworkManager properties and ifcfg-rh variables. Variable names, format and usage differences in NetworkManager and initscripts are documented in the tables below. π
π DETAILS π
ifcfg-rh plugin variables marked with (+) are NetworkManager specific extensions not understood by traditional initscripts. iykyk π
the 802-11-wireless setting π¦β¨
okay bestie, this is the Wi-Fi one, the main character of the whole page. each property gets its ifcfg-rh variable, its default, and the tea β
ssidβ variableESSIDβ the SSID of the Wi-Fi network. default: none listed. example, fr fr:
ESSID="Quick Net"
modeβ variableMODEβ the Wi-Fi network mode. no default listed. allowed values:Ad-Hoc,Managed (Auto), and yes it's case insensitive so don't stress about the caps πbandβ variableBAND(+)β lowkey a whole situation:BANDalone is honored, butCHANNELoverridesBANDsince it implies a band. so if you set both, channel wins, iykyk. example:
BAND=bg
allowed values: a, bg
channelβ variableCHANNELβ the channel used for the Wi-Fi communication. no default listed. the vibe check here: channels greater than14mean"a"band, otherwise the band is"bg". that's just how it is π example:
CHANNEL=6
bssidβ variableBSSID(+)β restricts association only to a single AP. like, it will only talk to that one access point, no mingling π example:
BSSID=00:1E:BD:64:83:21
rateβ variable(none)β > this property is deprecated and not handled by the ifcfg-rh plugin. so likeβ¦ it's giving legacy, don't bother πtx-powerβ variable(none)β > also deprecated and not handled by the ifcfg-rh plugin. same energy, skip it β¨mac-addressβ variableHWADDRβ the hardware address of the device in traditional hex-digits-and-colons notation (e.g.00:22:68:14:5A:05). no default listed. and here's the part you actually need to know: for initscripts this is the current MAC address of the device as found duringifup. for NetworkManager this is the permanent MAC address. or, in case no permanent MAC address exists, the MAC address
...and that description wrapped up with: initially configured on the device. Cool, cool β moving right along through the wireless properties, bestie π
cloned-mac-addressβMACADDRβ the cloned (aka spoofed, aka your-other-identity) MAC address, written out in the traditional hex-digits-and-colons notation, like00:22:68:14:5A:99. Yes, exactly like that. πgenerate-mac-address-maskβGENERATE_MAC_ADDRESS_MASK(+)β the MAC address mask used for generating a randomized and stablecloned-mac-address. It's the stencil, basically. ποΈmac-address-blacklistβHWADDR_BLACKLIST(+)β it denies usage of the connection for any device whose address is listed. Rude, but effective. π«mac-address-denylistβHWADDR_BLACKLIST(+)β same energy, same variable: it denies usage of the connection for any device whose address is listed. (Yes,mac-address-denylistandmac-address-blacklistboth map toHWADDR_BLACKLIST(+)β twins fr fr π―)seen-bssidsβ(none)β okay so this one is a whole mood: it is not a regular property that would be configured by the user, and it is not handled by theifcfg-rhplugin. So like... don't. πmtuβMTUβ the MTU of the wireless interface. Simple, iconic, does its job. πhiddenβSSID_HIDDEN(+)β whether the network hides the SSID. Sneaky network energy. π΅οΈββοΈpowersaveβPOWERSAVE(+)β turns Wi-Fi power saving on or off.
Example:
POWERSAVE=enable
Allowed values: default, ignore, enable, disable. π
mac-address-randomizationβMAC_ADDRESS_RANDOMIZATION(+)β enables or disables Wi-Fi MAC address randomization.
Example:
MAC_ADDRESS_RANDOMIZATION=always
Allowed values: default, never, always. π²
ap-isolationβAP_ISOLATION(+)β whether AP isolation is enabled. Heads up: a missing variable means the global default applies.
Allowed values: "yes", "no". π‘οΈ
π Table 2. 802-11-wireless-security setting π
okay bestie this is the big one β the security table. every wifi password, every cipher, every "wait why isn't my laptop connecting" moment lives here. bookmark it fr fr π
key-mgmtβ ifcfg-rh variable:KEY_MGMT(+). No default set. Key management method. Allowed values:none,ieee8021x,owe,wpa-psk,sae,wpa-eap,wpa-eap-suite-b-192.wep-tx-keyidxβ ifcfg-rh variable:DEFAULTKEY. Default:1. Index of the active WEP key. πΈ Big heads-up here: in ifcfg format the index starts counting at1, while the NetworkManager API is otherwise zero based. so likeβ¦ yes, that one-off is gonna bite you, iykyk π Allowed values:1,2,3,4.auth-algβ ifcfg-rh variable:SECURITYMODE(+). No default set. Authentication algorithm for WEP. Allowed values:restricted,open,leap.protoβ ifcfg-rh variables:WPA_ALLOW_WPA(+),WPA_ALLOW_WPA2(+). Default:no. Allowed WPA protocols, WPA and WPA2 (RSN). Allowed values:yes,no.pairwiseβ ifcfg-rh variable:CIPHER_PAIRWISE(+). No default set. Restrict pairwise encryption algorithms, specified as a space separated list. Allowed values:CCMP,TKIP.groupβ ifcfg-rh variable:CIPHER_GROUP(+). No default set. Restrict group/broadcast encryption algorithms, specified as a space separated list. Allowed values:CCMP,TKIP,WEP40,WEP104.pmfβ ifcfg-rh variable:PMF(+). No default set. Enables or disables PMF (802.11w). β¨ Example:
PMF=required
Allowed values: default, disable, optional, required.
leap-usernameβ ifcfg-rh variable:IEEE_8021X_IDENTITY(+). No default set. Login name for LEAP. π«Άwep-key0β ifcfg-rh variables:KEY1,KEY_PASSPHRASE1(+). No default set. The first WEP key β and yes she's the one used in most networks, she's the main character here π. See alsoDEFAULTKEYfor the key index.wep-key1β ifcfg-rh variables:KEY2,KEY_PASSPHRASE2(+). No default set. WEP key with index1. See alsoDEFAULTKEYfor the key index.wep-key2β writes toKEY3,KEY_PASSPHRASE3(+)β the WEP key with index 2 π and yeah, peepDEFAULTKEYfor the key index.wep-key3β writes toKEY4,KEY_PASSPHRASE4(+)β the WEP key with index 3, bestie. Again,DEFAULTKEYhandles the key index.wep-key-flagsβ writes toWEP_KEY_FLAGS(+)β password flags for theKEY<i>/KEY_PASSPHRASE<i>password (the section called βSecret flagsβ has the whole_FLAGSvalues breakdown, iykyk).pskβ writes toWPA_PSKβ the Pre-Shared-Key for WPA networks πpsk-flagsβ writes toWPA_PSK_FLAGS(+)β password flags forWPA_PSK_FLAGS(again, section called βSecret flagsβ for_FLAGSvalues).
Example:
WPA_PSK_FLAGS=user
leap-passwordβ writes toIEEE_8021X_PASSWORD(+)β the password for LEAP. It can also go to the"key-"lookaside file, or it can be owned by a secret agent π΅οΈββοΈleap-password-flagsβ writes toIEEE_8021X_PASSWORD_FLAGS(+)β password flags forIEEE_8021X_PASSWORD_FLAGS(see the section called βSecret flagsβ for_FLAGSvalues).wep-key-typeβ writes toKEY<i>orKEY_PASSPHRASE<i>(+), plusKEY_TYPE(+)β okay so here's the tea βKEYis used for the"key"type (10 or 26 hexadecimal characters, or a 5 or 13 character string prefixed with"s:").KEY_PASSPHRASEis used for WEP passphrases.KEY_TYPEspecifies the key type and can be either'key'or'passphrase'.KEY_TYPEis redundant and can be omitted, so don't stress it.
Example:
KEY1=s:ahoj, KEY1=0a1c45bc02, KEY_PASSPHRASE1=mysupersecretkey
wps-methodβ writes toWPS_METHODβ used to control the WPS methods to be used. Valid values are"default","auto","disabled","pin"and"pbc". If it's omitted, whatever the AP announces is used β¨
Example:
WPS_METHOD=disabled, WPS_METHOD="pin pbc"
filsβ writes toFILS(+)β enables or disables FILS (802.11ai) π¦
Example:
FILS=required
Allowed values: default, disable, optional, required.
β¨ Table 3. 802-1x setting β¨
okay bestie, this is the 802-1X table but make it a bullet list so nobodyβs eyes glaze over π the Default column is literally empty for every single row in the original, so every bullet says (blank) and we keep it moving. no cap.
eapβ ifcfg-rh variable:IEEE_8021X_EAP_METHODS(+). Default: (blank). EAP method for 802.1X authentication. Example:IEEE_8021X_EAP_METHODS=PEAP
Allowed values: "LEAP", "PWD", "TLS", "PEAP", "TTLS", "FAST"
identityβ ifcfg-rh variable:IEEE_8021X_IDENTITY(+). Default: (blank). Identity for EAP authentication methods. Example:IEEE_8021X_IDENTITY=itsmeanonymous-identityβ ifcfg-rh variable:IEEE_8021X_ANON_IDENTITY(+). Default: (blank). Anonymous identity for EAP authentication methods.pac-fileβ ifcfg-rh variable:IEEE_8021X_PAC_FILE(+). Default: (blank). File with PAC (Protected Access Credential) for EAP-FAST. Example:IEEE_8021X_PAC_FILE=/home/joe/my-fast.pacca-certβ ifcfg-rh variable:IEEE_8021X_CA_CERT(+). Default: (blank). CA certificate for EAP. Example:IEEE_8021X_CA_CERT=/home/joe/cacert.crtca-pathβ ifcfg-rh variable:IEEE_8021X_CA_PATH(+). Default: (blank). The search path for the certificate.subject-matchβ ifcfg-rh variable:IEEE_8021X_SUBJECT_MATCH(+). Default: (blank). Substring to match subject of server certificate against. Example:IEEE_8021X_SUBJECT_MATCH="Red Hat"altsubject-matchesβ ifcfg-rh variable:IEEE_8021X_ALTSUBJECT_MATCHES(+). Default: (blank). List of strings to be matched against the altSubjectName. Example:IEEE_8021X_ALTSUBJECT_MATCHES="s1.domain.cc"domain-suffix-matchβ ifcfg-rh variable:IEEE_8021X_DOMAIN_SUFFIX_MATCH(+). Default: (blank). Suffix to match domain of server certificate against.domain-matchβ maps to the env varIEEE_8021X_DOMAIN_MATCH(+). No default listed. It's the value we match the domain of the server certificate against. iykyk, cert validation is the moment πclient-certβ maps toIEEE_8021X_CLIENT_CERT(+). No default listed. This is your client certificate for EAP, bestie.
Example:
IEEE_8021X_CLIENT_CERT=/home/joe/mycert.crt
phase1-peapverβ maps toIEEE_8021X_PEAP_VERSION(+). No default listed. Use it to force a specific PEAP version.
Allowed values: 0, 1
phase1-peaplabelβ maps toIEEE_8021X_PEAP_FORCE_NEW_LABEL(+), and the default isno. Use it to force the new PEAP label during key derivation.
Allowed values: yes, no
phase1-fast-provisioningβ maps toIEEE_8021X_FAST_PROVISIONING(+). No default listed. Turns on in-line provisioning of EAP-FAST credentials. lowkey niche but slay β¨
Example:
IEEE_8021X_FAST_PROVISIONING="allow-auth allow-unauth"
Allowed values: a space-separated list of these values [allow-auth, allow-unauth]
phase1-auth-flagsβ maps toIEEE_8021X_PHASE1_AUTH_FLAGS(+). No default listed. These are the authentication flags for the supplicant π
Example:
IEEE_8021X_PHASE1_AUTH_FLAGS="tls-1-0-disable tls-1-1-disable"
Allowed values: a space-separated list of authentication flag names
phase2-authβ maps toIEEE_8021X_INNER_AUTH_METHODS(+). No default listed. It's the inner non-EAP authentication methods for TTLS, or the inner EAP authentication method for PEAP. And heads up:IEEE_8021X_INNER_AUTH_METHODScan contain values for both'phase2-auth'and'phase2-autheap'properties β they share, it's giving sharing-is-caring π«Ά
Example:
IEEE_8021X_INNER_AUTH_METHODS=PAP
Allowed values: "PAP", "CHAP", "MSCHAP", "MSCHAPV2", "GTC", "OTP", "MD5" and "TLS"
phase2-autheapβ maps toIEEE_8021X_INNER_AUTH_METHODS(+)too. No default listed. This is the inner EAP-based authentication methods. Note thatIEEE_8021X_INNER_AUTH_METHODSis also used for'phase2-auth'values β same variable, wearing two hats π
Example:
IEEE_8021X_INNER_AUTH_METHODS="MSCHAPV2 EAP-TLS"
Allowed values: "EAP-MD5", "EAP-MSCHAPV2", "EAP-GTC", "EAP-OTP" and "EAP-TLS"
phase2-ca-pathβIEEE_8021X_PHASE2_CA_PATH(+)β literally just the search path for the certificate. that's it, that's the whole vibe β¨phase2-subject-matchβIEEE_8021X_PHASE2_SUBJECT_MATCH(+)β a substring you match the subject of the server certificate against. like a little grep but for certs, iykyk.
Example: IEEE_8021X_PHASE2_SUBJECT_MATCH="Red Hat"
phase2-altsubject-matchesβIEEE_8021X_PHASE2_ALTSUBJECT_MATCHES(+)β okay so the manual gives this one zero description. blank. empty. the void π no cap, that's genuinely all it says, so i'm not gonna sit here and make something up.phase2-domain-suffix-matchβIEEE_8021X_PHASE2_DOMAIN_SUFFIX_MATCH(+)β the suffix you match the domain of the server certificate for phase 2 against πphase2-domain-matchβIEEE_8021X_PHASE2_DOMAIN_MATCH(+)β the value you match the domain of the server certificate for phase 2 against. (yes bestie,-suffix-matchand-matchare two different things, don't @ me)phase2-client-certβIEEE_8021X_INNER_CLIENT_CERT(+)β the client certificate for the inner EAP method π
Example: IEEE_8021X_INNER_CLIENT_CERT=/home/joe/mycert.crt
passwordβIEEE_8021X_PASSWORD(+)β a UTF-8 encoded password used for EAP. it can also go to the"key-"lookaside file, or it can be owned by a secret agent π΅οΈββοΈ very main character energy honestlypassword-flagsβIEEE_8021X_PASSWORD_FLAGS(+)β password flags for theIEEE_8021X_PASSWORDpassword. (peep the section called βSecret flagsβ for the_FLAGSvalues π)password-rawβIEEE_8021X_PASSWORD_RAW(+)β password used for EAP, but encoded as a hexadecimal string. it can also go to the"key-"lookaside file.
Example: IEEE_8021X_PASSWORD_RAW=041c8320083aa4bf
password-raw-flagsβIEEE_8021X_PASSWORD_RAW_FLAGS(+)β the secret flags forpassword-raw. short and sweet πprivate-keyβIEEE_8021X_PRIVATE_KEY(+)β the private key for EAP-TLS π
Example: IEEE_8021X_PRIVATE_KEY=/home/joe/mykey.p12
private-key-passwordβIEEE_8021X_PRIVATE_KEY_PASSWORD(+)β the password forIEEE_8021X_PRIVATE_KEY. it can also go to the"key-"lookaside file, or it can be owned by a secret agent. (same deal as the other passwords, the secret-agent thing is very iconic of it)private-key-password-flagsβIEEE_8021X_PRIVATE_KEY_PASSWORD_FLAGS(+)β password flags for theIEEE_8021X_PRIVATE_KEY_PASSWORDpassword. (again β the section called βSecret flagsβ has your_FLAGSvalues π )phase2-private-keyβIEEE_8021X_INNER_PRIVATE_KEY(+)β the private key for the inner authentication method when you're doing EAP-TLS π like, the actual secret key material, bestie, handle with care.phase2-private-key-passwordβIEEE_8021X_INNER_PRIVATE_KEY_PASSWORD(+)β the password forIEEE_8021X_INNER_PRIVATE_KEY. It can also live in a"key-"lookaside file, or it can be owned by a secret agent π (yes, that's really what it's called β very spy-core).phase2-private-key-password-flagsβIEEE_8021X_INNER_PRIVATE_KEY_PASSWORD_FLAGS(+)β the password flags for theIEEE_8021X_INNER_PRIVATE_KEY_PASSWORDpassword. For the_FLAGSvalues, go see the section called βSecret flagsβ π«Ά.pinβIEEE_8021X_PIN(+)β the pin secret used for EAP authentication methods π.pin-flagsβIEEE_8021X_PIN_FLAGS(+)β the secret flags for the pin property.system-ca-certsβIEEE_8021X_SYSTEM_CA_CERTS(+)β a boolean value β¨ (that's the whole description, icon, she's brief).auth-timeoutβIEEE_8021X_AUTH_TIMEOUT(+)β default0. Timeout in seconds for the 802.1X authentication. Zero means the global default or 25 β³ so like,0isn't "no timeout", it's "whatever the global default says, or25if that's not a thing."optionalβIEEE_8021X_OPTIONAL(+) default=noβ whether the 802.1X authentication is optional πΈ.openssl-ciphersβIEEE_8021X_OPENSSL_CIPHERS(+)β cipher string for the TLS setup ofwpa_supplicantπ.
π Table 4. 802-3-ethernet setting π
okay bestie, this is the ethernet table and honestly? it's giving very much "here's what the plugin will and won't save for you" energy. one column is the property, one's the ifcfg-rh variable, one's the default, one's the description. the default column is empty for every single one of these, btw β not me pointing that out, it's just literally the truth π
portβ ifcfg-rh variable:(none). Default: (empty). The property is not saved by the plugin. that's it, that's the whole story, no cap πspeedβ ifcfg-rh variable:ETHTOOL_OPTS. Default: (empty). Fixed speed for the ethernet link. It is added as"speed"parameter in theETHTOOL_OPTSvariable.duplexβ ifcfg-rh variable:ETHTOOL_OPTS. Default: (empty). Fixed duplex mode for the ethernet link. It is added as"duplex"parameter in theETHOOL_OPTSvariable.
not me double-checking the spelling β yep, it says ETHOOL_OPTS right there in the original, so we're keeping it exactly like that π
auto-negotiateβ ifcfg-rh variable:ETHTOOL_OPTS. Default: (empty). Whether link speed and duplex autonegotiation is enabled. It is not saved only if disabled and no values are provided for the"speed"and"duplex"parameters (skips link configuration).mac-addressβ ifcfg-rh variable:HWADDR. Default: (empty). Hardware address of the device in traditional hex-digits-and-colons notation (e.g.00:22:68:14:5A:05). Note that for initscripts this is the current MAC address of the device as found duringifup. For NetworkManager this is the permanent MAC address. Or in case no permanent MAC address exists, the MAC address initially configured on the device. π¦cloned-mac-addressβ ifcfg-rh variable:MACADDR. Default: (empty). Cloned (spoofed) MAC address in traditional hex-digits-and-colons notation (e.g.00:22:68:14:5A:99). yes she's wearing a little disguise β¨generate-mac-address-maskβ ifcfg-rh variable:GENERATE_MAC_ADDRESS_MASK(+). Default: (empty). the MAC address mask for generating randomized and stable cloned-mac-address.mac-address-blacklistβ ifcfg-rh variable:HWADDR_BLACKLIST(+). Default: (empty). It denies usage ofHWADDR_BLACKLISTβ okay so this row is the continuation of the table, and it's doing the exact same flex: it denies usage of the connection for any device whose address is listed, which is giving bouncer-at-the-club energy π
Example:
HWADDR_BLACKLIST="00:22:68:11:69:08 00:11:22:11:44:55"
mac-address-denylistβHWADDR_BLACKLIST(+)β not a repeat bestie, it's the actual property row with the little(+)on the variable name (yes that's part of it, don't @ me). It denies usage of the connection for any device whose address is listed. Same vibe, same syntax:
HWADDR_BLACKLIST="00:22:68:11:69:08 00:11:22:11:44:55"
mtuβMTUβ literally just the MTU of the interface. Short king. π«Άs390-subchannelsβSUBCHANNELSβ subchannels for IBM S390 hosts. Mainframe girlies stay winning π
Example:
SUBCHANNELS=0.0.b00a,0.0.b00b,0.0.b00c
s390-nettypeβNETTYPEβ the network type of the S390 host. π
Example:
NETTYPE=qeth
Allowed values: "qeth", "lcs" or "ctc" β that's the whole menu, no secret options, no cap.
s390-optionsβOPTIONSandPORTNAME,CTCPROTOβ S390 device options. The tea here: all options go toOPTIONS, except for"portname"and"ctcprot"which get to be special little main characters with their own variables. πwake-on-lanβETHTOOL_OPTS,ETHTOOL_WAKE_ON_LANβ Wake on Lan mode for ethernet. Get this: the setting"ignore"is expressed with"ETHTOOL_WAKE_ON_LAN=ignore". Every other case, the"ETHTOOL_OPTS"variable gets set with the value"wol"plus several of the characters"p|u|m|b|a|g|s|f|d"β and those bad boys are as explained in the ethtool manual page, so go read that one too, iykyk πwake-on-lan-passwordβETHTOOL_OPTSβ the password for secure-on based Wake-on-Lan. It gets added as the"sopass"parameter inside theETHTOOL_OPTSvariable. π
Example:
ETHTOOL_OPTS="wol gs sopass 00:11:22:33:44:55"
accept-all-mac-addressesβACCEPT_ALL_MAC_ADDRESSESβ this one enforces the interface to accept all the packets. No filtering, no picking favourites, just vibes accepting everything π
πΈ Table 5. bond setting πΈ
optionsβBONDING_OPTSβ bonding options. That's it, that's the whole property, and it carries the entire personality of the bond β¨
Example:
BONDING_OPTS="miimon=100 mode=broadcast"
π¦ Table 6. bond-port setting π¦
queue-idβBOND_PORT_QUEUE_ID(+)β queue ID, and it defaults to0because of course it does. The(+)is chillin' on the variable name again.
Allowed values: 0 - 65535
prioβBOND_PORT_PRIO(+)β port priority, also defaulting to0. Let them be equal, it's fine, it's a whole thing.
Allowed values: -2147483648 - 2147483647 β yes those are real numbers, yes they're huge, no I will not be counting that high manually π
π Table 7. bridge setting π
okay bestie, this is the bridge table and it's lowkey the main character of the bridge config β¨ Every property, every ifcfg-rh variable, every default β it's all here, no cap π«Ά
mac-addressβ ifcfg-rh variable:BRIDGE_MACADDR(+)Β· default: (blank in the table, so nothing's pre-set) β this is the MAC address of the bridge πΈ Heads up though: it requires a recent kernel support, originally introduced in3.15upstream kernel. And fyi,BRIDGE_MACADDRfor bridges is an NM extension, so it's not your standard-issue ifcfg thing, iykyk πstpβ ifcfg-rh variable:STPΒ· default:noβ span tree protocol participation π yes, that's exactly how the manpage says it, "span tree", we're keeping it fr fr. Default isnoso STP is off unless you say otherwise.priorityβ ifcfg-rh variable:BRIDGING_OPTS: priority=Β· default:32768β the STP priority π allowed values:0-32768. That's the whole range, bestie, it's giving "anything goes" energy.forward-delayβ ifcfg-rh variable:DELAYΒ· default:15β STP forwarding delay β allowed values:2-30. Note this one's plainDELAY, not aBRIDGING_OPTSkey β she's β¨specialβ¨.hello-timeβ ifcfg-rh variable:BRIDGING_OPTS: hello_time=Β· default:2β STP hello time π allowed values:1-10.max-ageβ ifcfg-rh variable:BRIDGING_OPTS: max_age=Β· default:20β STP maximum message age π°οΈ allowed values:6-40.ageing-timeβ ifcfg-rh variable:BRIDGING_OPTS: ageing_time=Β· default:300β Ethernet MAC ageing time π allowed values:0-1000000. Yes, up to a million, she said what she said πmulticast-snoopingβ ifcfg-rh variable:BRIDGING_OPTS: multicast_snooping=Β· default:1β IGMP snooping support π¦ allowed values:0or1. It's a little on/off moment, adorable honestly.vlan-filteringβ ifcfg-rh variable:BRIDGING_OPTS: vlan_filtering=Β· default:0β VLAN filtering support π (and that's where the table cuts off in our copy, so we're not gonna sit here and invent an allowed-values list β that would be fake news π)
finishing the last one from up top, real quick: its allowed values are0or1β that's it, that's the whole vibe check π
vlan-default-pvidβ the default VLAN PVID for the bridge, bestie. Under the hood it'sBRIDGING_OPTS: default_pvid=and it ships with a default of1.- allowed values:
0-4094
- allowed values:
vlansβ literally just the list of VLANs on the bridge π this one lives inBRIDGE_VLANS, noBRIDGING_OPTSwrapper, she's different like that. No default listed.- example:
BRIDGE_VLANS="1 pvid untagged,20,300-400 untagged"
group-addressβ the STP group address π set viaBRIDGING_OPTS: group_address=. No default in the table.- example:
BRIDGING_OPTS="group_address=01:80:C2:00:00:0A"
vlan-protocolβ the VLAN filtering protocol β¨ viaBRIDGING_OPTS: vlan_protocol=. No default given.- example:
BRIDGING_OPTS="vlan_protocol=802.1Q"
vlan-stats-enabledβ the VLAN stats toggle π¦BRIDGING_OPTS: vlan_stats_enabled=, default0.- example:
BRIDGING_OPTS="vlan_stats_enabled=1"
multicast-routerβ the multicast router setting πBRIDGING_OPTS: multicast_router=, and it defaults toauto(she picks for you, main character energy).- example:
BRIDGING_OPTS="multicast_router=enabled"
- allowed values:
auto,enabled,disabled
multicast-query-use-ifaddrβBRIDGING_OPTS: multicast_query_use_ifaddr=, default0. Ngl the example below keeps the dash in the key exactly like the page has it, so don't come for me π- example:
BRIDGING_OPTS="multicast_query-use_ifaddr=1"
multicast-querierβ the multicast querier flag πΈBRIDGING_OPTS: multicast_querier=, default0.- example:
BRIDGING_OPTS="multicast_querier=1"
multicast-hash-maxβ the max multicast hash πBRIDGING_OPTS: multicast_hash_max=, default4096.- example:
BRIDGING_OPTS="multicast_hash_max=8192"
multicast-last-member-countβ how many last members we're counting, lowkey iconic πBRIDGING_OPTS: multicast_last_member_count=, default2.- example:
BRIDGING_OPTS="multicast_last_member_count=4"
multicast-last-member-intervalβ lives inBRIDGING_OPTSasmulticast_last_member_interval=, default is100. π
Example:
BRIDGING_OPTS="multicast_last_member_interval=200"
multicast-membership-intervalβ goes inBRIDGING_OPTSasmulticast_membership_interval=, default is26000.
Example:
BRIDGING_OPTS="multicast_membership_interval=16000"
multicast-querier-intervalβBRIDGING_OPTSgirlie, key ismulticast_querier_interval=, default25500. β¨
Example:
BRIDGING_OPTS="multicast_querier_interval=20000"
multicast-query-intervalβ yep,BRIDGING_OPTS: multicast_query_interval=, default12500.
Example:
BRIDGING_OPTS="multicast_query_interval=22500"
multicast-query-response-intervalβBRIDGING_OPTS: multicast_query_response_interval=, default1000. π
Example:
BRIDGING_OPTS="multicast_query_response_interval=2000"
multicast-startup-query-countβBRIDGING_OPTS: multicast_startup_query_count=, default2.
Example:
BRIDGING_OPTS="multicast_startup_query_count=4"
multicast-startup-query-intervalβBRIDGING_OPTS: multicast_startup_query_interval=, default3125. π¦
Example:
BRIDGING_OPTS="multicast_startup_query_interval=4000"
π Table 8. bridge-port setting π
okay bestie this one's all about the individual ports on your bridge, and it's giving very main character energy honestly π
priorityβ set viaBRIDGING_OPTS: priority=, default is32. It's the STP priority. Allowed values:0 - 63. lowkey a tiny range but she said what she said πpath-costβ set viaBRIDGING_OPTS: path_cost=, default is100. That's the STP cost. Allowed values:1 - 65535. way more room to play in here fr fr π₯hairpin-modeβ set viaBRIDGING_OPTS: hairpin_mode=, default isyes. It's the hairpin mode of the bridge port. cute name, serious job πvlansβ this one's special, it uses theBRIDGE_PORT_VLANSvariable (notBRIDGING_OPTS, ik ik, plot twist π). It's the list of VLANs on the bridge port.
Example:
BRIDGE_PORT_VLANS="1 pvid untagged,20,300-400 untagged"
ngl that VLAN example is doing a lot β1 pvid untagged, then20, then the range300-400 untagged, all comma-separated. copy it exactly, don't get creative with the commas or the spaces or the universe will humble you π
β¨ Table 9. connection setting β¨
Okay bestie, this is the connection table β the big one where every NetworkManager property gets matched up with its ifcfg-rh variable. Three columns of truth: the Property, the Ifcfg-rh Variable it lives in, and its Default. Plus a description, obviously. Let's go row by row π«Ά
idβ ifcfg-rh variable:NAME(+)Β· default: none β the user friendly name for the connection profile. That's the cute little label you actually recognise it by πuuidβ ifcfg-rh variable:UUID(+)Β· default: none β the UUID for the connection profile. And here's the fun part: when it's missing, NetworkManager just goes ahead and creates the UUID by hashing the connection filename. Iconic lazy-girl behaviour, honestly β¨stable-idβ ifcfg-rh variable:STABLE_ID(+)Β· default: none β the token used to generate stable IDs. That's it, that's the whole vibe πinterface-nameβ ifcfg-rh variable:DEVICEΒ· default: none β the interface name of the device this profile is bound to. You can literally leave the variable out when the profile should apply for more devices, no big deal. But heads up:DEVICEcan be required for some connection types π so don't just ghost it unconditionally.typeβ ifcfg-rh variables:TYPE(alsoDEVICETYPE,DEVICE) Β· default: none β the base type of the connection.DEVICETYPEis the one used for teaming connections, iykyk.
Examples, verbatim, because yes:
TYPE=Ethernet;
TYPE=Bond;
TYPE=Bridge;
DEVICETYPE=TeamPort
Allowed values are: Ethernet, Wireless, InfiniBand, Bridge, Bond, Vlan, Team, TeamPort. Pick from the list, don't freestyle π
permissionsβ ifcfg-rh variable:USERS(+)Β· default: none β restricts access to this connection to certain users, and only lets the connection be active when at least one of those specified users is logged into an active session. So it's like a VIP list but for your network profile πΈ
Example:
USERS="joe bob"
autoconnectβ ifcfg-rh variable:ONBOOTΒ· default:yesβ whether the connection should be autoconnected (not only whileautoconnect-priority/AUTOCONNECT_PRIORITY(+)β default is0. This is the connection priority for automatic activation β¨ and the way it works is genuinely so simple: connections with higher numbers are preferred when NetworkManager is picking profiles for automatic activation. That's it, that's the whole vibe β bigger number, more main character energy. π
Example:
AUTOCONNECT_PRIORITY=20
Allowed values: -999 to 999.
autoconnect-retries/AUTOCONNECT_RETRIES(+)β no default listed, so it just does its thing π. This one is literally "the number of times a connection should be autoactivated before giving up and switching to the next one" β like, how many chances does this profile get before we move on? Bestie, we've all been there π
Example:
AUTOCONNECT_RETRIES=1
Allowed values: -1 (use global default), 0 (forever) or a positive value.
multi-connect/MULTI_CONNECT(+)β no default shown. This is about "whether the profile can be active on multiple devices at a given moment" π i.e. can this profile be everywhere at once, multitasking queen that she is. The values are numbers corresponding to the#NMConnectionMultiConnectenum β so yes, the numbers mean something specific, go look at the enum, iykyk π§
Example:
MULTI_CONNECT=3
zone/ZONE(+)β no default. The trust level of this connection π‘οΈ The string is usually used for a firewall. Very "who gets to sit at my table" energy, ngl.
Example:
ZONE=Work
master/MASTER,MASTER_UUID,TEAM_MASTER,TEAM_MASTER_UUID,BRIDGE,BRIDGE_UUIDβ no default. A reference to the controller connection π The variable used depends on the connection type and the value. In general, if the*_UUIDvariant is present, the variant without*_UUIDis ignored β οΈ β so don't be out here setting both and expecting the plain one to win, because she will not. NetworkManager attempts to write both for compatibility with legacy tooling π«Ά (yes, it's doing extra credit work so old tools don't break, iconic behaviour honestly).slave-type/MASTER,MASTER_UUID,TEAM_MASTER,TEAM_MASTER_UUID,DEVICETYPE,BRIDGE,BRIDGE_UUIDβ no default. Okay so this one is a lil sneaky: slave type doesn't map directly to a variable, but it is recognized using different variables π Here's the mapping, don't lose it:MASTERandMASTER_UUIDβ for bondingTEAM_MASTER,TEAM_MASTER_UUIDandDEVICETYPEβ for teamingBRIDGEandBRIDGE_UUIDβ for bridging
autoconnect-slaves/AUTOCONNECT_SLAVES(+)β default is literally missing variable means global π (so if it's not there, it falls back to the global setting β no variable, no opinion, just vibes from above). Whether slaves of this connection should beβ¦- (the row that got sliced at the page break β finishing it off) β its default is just an empty slot, and it gets auto-connected when this connection is activated. π«Ά
secondariesβSECONDARY_UUIDS(+)β no default here π β this one's the UUID of VPN connections that should be activated together with this connection. Squad goals, but make it networking. π¦gateway-ping-timeoutβGATEWAY_PING_TIMEOUT(+)β default is0β if it's greater than zero, your IP connectivity gets checked by pinging the gateway and waiting for the specified timeout (in seconds). so like, a vibe check but for your route. π‘
Example, bestie:
GATEWAY_PING_TIMEOUT=5
meteredβCONNECTION_METERED(+)β no default listed β tells you whether the device is metered (iykyk if you've ever been throttled π).
Example:
CONNECTION_METERED=yes
Allowed values: yes,no,unknown
lldpβLLDP(+)β here's the tea: a missing variable means global default π β otherwise it says whether LLDP is enabled for the connection.
Example: LLDP=no
Allowed values: boolean value or 'rx'
auth-retriesβAUTH_RETRIES(+)β default0β the number of retries for authentication. that's it, that's the whole vibe. πmdnsβMDNS(+)β again, missing variable means global default β this one's whether or not mDNS is enabled for the connection. β¨
Example: MDNS=yes
Allowed values: yes,no,resolve
llmnrβLLMNR(+)β same deal, missing variable means global default β whether or not LLMNR is enabled for the connection. π
Example: LLMNR=yes
Allowed values: yes,no,resolve
dns-over-tlsβDNS_OVER_TLS(+)β yep, missing variable means global default β says whether or not DNSOverTls is enabled for the connection. your DNS, but in a little TLS trench coat π§₯π
Allowed values: yes,no,opportunistic
mptcp-flagsβMPTCP_FLAGS(+)β missing variable means global default, iconic behaviour β these are the MPTCP flags that indicate whether MPTCP is enabled and which flags to use for the address endpoints. π
Example:
MPTCP_FLAGS="signal,subflow"
wait-device-timeoutβDEVTIMEOUT(+)β no default shown β description starts with for initscripts and keeps going on the next part, so hold that thought, we're not done with this row yetβ¦ β³πdevtimeout/DEVTIMEOUTβ okay so because of compatibility, this variable has to be a whole integer, no cap. If it genuinely needs to, NetworkManager will also stash a fractional component for the milliseconds β so like, it's an integer on the surface but it's got layers π
Example:
DEVTIMEOUT=5
Allowed values: a timeout in seconds.
mud-url/MUD_URLβ theMUD_URLthat gets sent by the device (See RFC 8520) π¦
Example:
https://yourdevice.example.com/model.json
Allowed values: a valid URL that points to the recommended policy for this device.
wait-activation-delay/WAIT_ACTIVATION_DELAY(+)β how long, in milliseconds, to wait for the connection to be considered activated. The waiting starts after the pre-up dispatcher event fires, so it's giving very much "hold on bestie, we're not there yet" energy β³
Example:
WAIT_ACTIVATION_DELAY=5000
Allowed values: a delay in milliseconds.
π Table 10. dcb setting π
okay bestie, this is the DCB table and it's giving β¨data center bridgingβ¨ realness β every property, every ifcfg-rh variable, every default, all of it. no skipping, periodt.
app-fcoe-flags β iykyk, this one lives in not one, not two, but three variables: DCB_APP_FCOE_ENABLE, DCB_APP_FCOE_ADVERTISE, DCB_APP_FCOE_WILLING.
- Default:
no - What it is: FCOE flags. π
- Example:
DCB_APP_FCOE_ENABLE=yes
DCB_APP_FCOE_ADVERTISE=yes
app-fcoe-priority β variable: DCB_APP_FCOE_PRIORITY. no default listed, so don't go assuming one π
- What it is: Priority of FCoE frames.
- Allowed values:
0-7
app-fcoe-mode β variable: DCB_APP_FCOE_MODE.
- Default:
fabric - What it is: FCoE controller mode.
- Allowed values:
fabric,vn2vn
app-iscsi-flags β variables: DCB_APP_ISCSI_ENABLE, DCB_APP_ISCSI_ADVERTISE, DCB_APP_ISCSI_WILLING.
- Default:
no - What it is: iSCSI flags.
app-iscsi-priority β variable: DCB_APP_ISCSI_PRIORITY.
- What it is: Priority of iSCSI frames.
- Allowed values:
0-7
app-fip-flags β variables: DCB_APP_FIP_ENABLE, DCB_APP_FIP_ADVERTISE, DCB_APP_FIP_WILLING.
- Default:
no - What it is: FIP flags.
app-fip-priority β variable: DCB_APP_FIP_PRIORITY.
- What it is: Priority of FIP frames.
- Allowed values:
0-7
priority-flow-control-flags β variables: DCB_PFC_ENABLE, DCB_PFC_ADVERTISE, DCB_PFC_WILLING.
- Default:
no - What it is: Priority flow control flags.
priority-flow-control β variable: DCB_PFC_UP.
- What it is: Priority flow control values. It's a string of 8 characters made of
"0"and"1", where"0"means "do not transmit priority pause" and"1"means "transmit pause". π«Ά - Example:
DCB_PFC_UP=01101110
priority-group-flags β variables: DCB_PG_ENABLE, DCB_PG_ADVERTISE, DCB_PG_WILLING.
- Default:
no - What it is: Priority groups flags.
priority-group-id β variable: DCB_PG_ID.
- What it is: Priority groups values. It's a string of eight priorities (
0-7) or"f"for unrestricted. π¦ - Example:
DCB_PG_ID=1205f173
priority-group-bandwidth β variable: DCB_PG_PCT.
- What it is: Priority groups values β eight bandwidths (in percent), separated with commas.
- Example:
DCB_PG_PCT=10,5,10,15,10,10,10,30
priority-bandwidth β variable: DCB_PG_UPPCT.
- What it is: Priority values β eight bandwidths (in percent), separated with commas. β οΈ and bestie, listen: the sum of the numbers must be
100. no cap, it's not a vibe if it doesn't add up π - Example:
DCB_PG_UPPCT=...
nope, no example given in the original for this row β just know it's eight comma-separated percents that sum to 100. β¨
β¦and that last row's Example field was still going, so real quick, here's how it ended:
β β β β Example: β
β β β β DCB_PG_UPPCT=7,13,10,10,15,15,10,20 β
Then the rest of the DCB crew: π
priority-strict-bandwidthβ maps toDCB_PG_STRICTβ no default listed. This one's about priority values, and it's a string of eight"0"or"1"characters, where"0"means "may not utilize all bandwidth" and"1"means "may utilize all bandwidth". π- Example:
DCB_PG_STRICT=01101110
- Example:
priority-traffic-classβ maps toDCB_PG_UP2TCβ no default listed. Also priority values, but this time it's a string of eight traffic class values (0 - 7). β¨- Example:
DCB_PG_UP2TC=01623701
- Example:
Heads up bestie: all DCB related configuration is a NetworkManager extension. You must explicitly useDCB=yesto enable DCB so that the rest of theDCB_*variables can apply. Like, noDCB=yes, no party. π«Ά
π¦ Table 11. ethtool setting
Okay so this one is literally just vibes β there are no rows listed for it in the source. It's giving "placeholder icon". π Same energy as the next one:
π§ Table 12. geneve setting
Also empty. Just a caption, no content. Moving on, bestie π
π Table 13. hostname setting
Now this table ate, fr fr. Four columns: Property, Ifcfg-rh Variable, Default, Description. β¨
priorityβ ifcfg-rh variable:HOSTNAME_PRIORITY(+)β Default: missing variable means global value or 100. Description: hostname priority. πΈ- Example:
HOSTNAME_PRIORITY=50
- Example:
from-dhcpβ ifcfg-rh variable:HOSTNAME_FROM_DHCP(+)β Default: missing variable means global default or 1. Description: whether the system hostname can be determined from DHCP. π₯- Example:
HOSTNAME_FROM_DHCP=0,1
- Example:
from-dns-lookupβ ifcfg-rh variable:HOSTNAME_FROM_DNS_LOOKUP(+)β Default: missing variable means global default or 1. Description: whether the system hostname can be determined from reverse DNS lookup. π«- Example:
HOSTNAME_FROM_DNS_LOOKUP=0,1
- Example:
only-best-deviceβ ifcfg-rh variable:HOSTNAME_ONLY_FROM_DEFAULT(+)β Default: missing variable means global default or 1. Description: whether the hostname can be determined only from devices with the default route. π- Example:
HOSTNAME_ONLY_FROM_DEFAULT=0,1
- Example:
π Table 14. hsr setting
(another caption with nothing under it β the suspense is killing me, ngl π)
β¨ Table 15. infiniband setting β¨
Okay bestie, this one's all about InfiniBand β the fancy high-speed networking thing that's giving main character energy in your cluster π«Ά Here's every property, every variable, every default, and nobody gets left behind.
mac-addressβ the ifcfg-rh variable isHWADDR, and there's no default here. This is the IBoIP 20-byte hardware address of the device (in traditional hex-digits-and-colons notation). Heads up though, because the meaning lowkey shifts between tools: for initscripts this is the current MAC address of the device as found during ifup. For NetworkManager this is the permanent MAC address. Or, in case no permanent MAC address exists, the MAC address initially configured on the device. Literally important distinction, don't sleep on it π
Example:
HWADDR=01:02:03:04:05:06:07:08:09:0A:01:02:03:04:05:06:07:08:09:11
mtuβ the ifcfg-rh variable isMTU, no default given. It's just the MTU of the interface. Simple, iconic, no notes πΈtransport-modeβ the ifcfg-rh variable isCONNECTED_MODE, and the default isCONNECTED_MODE=no. SetCONNECTED_MODE=yesfor"connected"mode, andCONNECTED_MODE=nofor"datagram"mode. Pick your vibe π¦p-keyβ the ifcfg-rh variable isPKEY_IDorPKEY_ID_NM() (this one *requiresPKEY=yes), and the default isPKEY=no. This is the InfiniBand P_Key π
The value can be a hex number prefixed with "0x" or a decimal number. When PKEY_ID is specified, PHYSDEV must be specified β no skipping that, fr fr.
Note that the ifcfg-rh format will always automatically set the full membership flag0x8000for thePKEY_IDvariable. To express IDs without the full membership flag, usePKEY_ID_NM. Note that the kernel internally treats the interface as having the full membership flag set β this mainly affects the interface name. Also: for the ifcfg file to be supported by initscripts'ifup-ib, theDEVICE=must always be set. NetworkManager does not require that. π
Example:
PKEY=yes PKEY_ID=2 PHYSDEV=mlx4_ib0 DEVICE=mlx4_ib0.8002
parentβ the ifcfg-rh variable isPHYSDEV(used withPKEY=yes), and the default isPKEY=no. This is the InfiniBand parent device π
Example:
PHYSDEV=ib0
π ipv4 setting π
okay bestie, this is the big one β literally the whole IPv4 config table. every row is a property, plus the ifcfg-rh variable it maps to, its default, and what it does. read it like a menu, not a race π
methodβ the vibe-setter for how this interface gets its IPv4.- ifcfg-rh variable:
BOOTPROTO - default:
none - what it is: the method used for IPv4 protocol configuration.
- allowed values:
none,dhcp(bootp),static,ibft,autoip,shared
- ifcfg-rh variable:
dnsβ the list of DNS servers. no cap.- ifcfg-rh variable:
DNS1,DNS2, β¦ - default: (none listed)
- yes, even though NetworkManager supports many DNS servers, initscripts and resolver only care about the first three, usually. so don't get cute with server numero quatro π
- example:
- ifcfg-rh variable:
DNS1=1.2.3.4
DNS2=10.0.0.254
DNS3=8.8.8.8
dns-searchβ the list of DNS search domains.- ifcfg-rh variable:
DOMAIN - default: (none listed)
- ifcfg-rh variable:
addressesβ the list of static IP addresses, iconic behavior only β¨- ifcfg-rh variables:
IPADDR,PREFIX(NETMASK),IPADDR1,PREFIX1(NETMASK1), β¦ - default: (none listed)
- example:
- ifcfg-rh variables:
IPADDR=10.5.5.23
PREFIX=24
IPADDR1=1.1.1.2
PREFIX1=16
gatewayβ the gateway IP address, your one-way out πͺ- ifcfg-rh variable:
GATEWAY - default: (none listed)
- example:
- ifcfg-rh variable:
GATEWAY=10.5.5.1
routesβ the list of static routes.- ifcfg-rh variables:
ADDRESS1,NETMASK1,GATEWAY1,METRIC1,OPTIONS1, β¦ - default: (none listed)
- heads up bestie: these are not stored in the
ifcfg-*file, they live in theroute-*file instead. different house, same family π
- ifcfg-rh variables:
ignore-auto-routesβ whether to ignore routes that come from DHCP.- ifcfg-rh variable:
PEERROUTES(+) - default:
yes - plot twist:
PEERROUTEShas the opposite meaning as theignore-auto-routesproperty. yes, really. flip your brain accordingly π§
- ifcfg-rh variable:
ignore-auto-dnsβ whether to ignore DNS info that comes from DHCP.- ifcfg-rh variable:
PEERDNS - default:
yes - same little trick:
PEERDNShas the opposite meaning as theignore-auto-dnsproperty. rude but consistent π
- ifcfg-rh variable:
dhcp-send-hostnameβ whetherDHCP_HOSTNAMEshouldβ¦
β¦be sent to the DHCP server.
dhcp-hostnameβDHCP_HOSTNAMEβ no default π β this is the Hostname to send to the DHCP server. And heads up, bestie: when bothDHCP_HOSTNAMEandDHCP_FQDNare specified, only the latter is used. The FQDN is the main character here, periodt.never-defaultβDEFROUTE(GATEWAYDEVin/etc/sysconfig/network) β defaultyesβ¨ β settingDEFROUTE=notells NetworkManager that this connection should not be assigned the default route. Careful though:DEFROUTEhas the opposite meaning as the'never-default'property, so don't mix up your vibes π«Άmay-failβIPV4_FAILURE_FATAL(+)β defaultnoπ βIPV4_FAILURE_FATALhas the opposite meaning as the'may-fail'property. Yes, the naming is giving chaos, ngl. Flip the logic in your head and you're golden πroute-metricβIPV4_ROUTE_METRIC(+)β default-1πΈ βIPV4_ROUTE_METRICis the default IPv4 metric for routes on this connection. If it's set to-1, a default metric based on the device type is used. So-1is basically "you pick for me, I trust you" πroute-tableβIPV4_ROUTE_TABLE(+)β default0β βIPV4_ROUTE_TABLEenables policy-routing and sets the default routing table. fancy, love that for us πdns-optionsβRES_OPTIONS(+)β no default π¦ β this is the list of DNS options to be added to/etc/resolv.conf. Example, and keep it exact bestie:
RES_OPTIONS=ndots:2 timeout:3
dns-priorityβIPV4_DNS_PRIORITY(+)β default0π β the priority for DNS servers of this connection. Lower values have higher priority (yes, lower = more important, it's giving backwards but that's the lore). If zero, the default value will be used:50for VPNs,100for other connections. A negative value prevents DNS from other connections with greater values to be used π₯ β that's the "I'm the only DNS server at this function" move. Example:
IPV4_DNS_PRIORITY=20
auto-route-ext-gwβIPV4_AUTO_ROUTE_EXT_GW(+)β defaultyesπ β VPN connections will default to add the route automatically unless this setting is set toFALSE. For
continued from above β¬οΈ β for other connection types, adding such an automatic route is currently not supported, and setting this to TRUE has no effect. (iykyk π
)
replace-local-ruleβ key:IPV4_REPLACE_LOCAL_RULE(+), default:no. So basically connections will default to keeping the autogenerated priority0local rule β unless you set this bad boy toTRUE. Simple as that, bestie β¨dhcp-client-idβ key:DHCP_CLIENT_ID(+). A string that gets sent to the DHCP server so it can identify the local machine. You can also hand it a binary value by using hex notation ('aa:bb:cc'). π
Example:
DHCP_CLIENT_ID=ax-srv-1;
DHCP_CLIENT_ID=01:44:44:44:44:44:44
dad-timeoutβ keys:ACD_TIMEOUT(+),ARPING_WAIT. Default: a missing variable means global default (config override or zero). This is the timeout for address conflict detection before IPv4 addresses get configured β measured in milliseconds forACD_TIMEOUTor in seconds forARPING_WAIT. Setting0turns off the ACD completely, and-1means default value. π¦
Example:
ACD_TIMEOUT=2000
or
ARPING_WAIT=2
dhcp-timeoutβ key:IPV4_DHCP_TIMEOUT(+). A timeout after which the DHCP transaction just fails in case of no response. π
Example:
IPV4_DHCP_TIMEOUT=10
dhcp-hostname-flagsβ key:DHCP_HOSTNAME_FLAGS. Flags for the DHCP hostname and FQDN properties. π©
Example:
DHCP_HOSTNAME_FLAGS=5
dhcp-fqdnβ key:DHCP_FQDN. The FQDN to send to the DHCP server. Heads up though β when bothDHCP_HOSTNAMEandDHCP_FQDNare specified, only the latter is used. Not both, bestie, only the last one π
Example:
DHCP_FQDN=foo.bar.com
dhcp-vendor-class-identifierβ key:DHCP_VENDOR_CLASS_IDENTIFIER(+). The Vendor Class Identifier DHCP option (60). π·οΈ
Example:
DHCP_VENDOR_CLASS_IDENTIFIER=foo
link-localβ key:IPV4_LINK_LOCAL(+). Configure a link-local IP address in interaction with method. π
Example:
IPV4_LINK_LOCAL=auto
Table 17. ipv6 setting π
Ok bestie, this is the IPv6 table and it's lowkey a whole vibe β every row is a property on the left, the ifcfg-rh variable it eats on the right, and the default if you don't say anything π
methodβ the way IPv6 gets configured, and it's giving "many variables, one decision" energy β¨- ifcfg-rh variables:
IPV6INIT,IPV6FORWARDING,IPV6_AUTOCONF,DHCPV6C,IPV6_DISABLED - defaults:
IPV6INIT=yes;IPV6FORWARDING=no;IPV6_AUTOCONF=!IPV6FORWARDING,DHCPV6=no - the mapping is literally this and you cannot improvise it:
ignore~IPV6INIT=noauto~IPV6_AUTOCONF=yesdhcp~IPV6_AUTOCONF=noandDHCPV6C=yesdisabled~IPV6_DISABLED=yes
- ifcfg-rh variables:
dnsβ your list of DNS servers π- ifcfg-rh variables:
DNS1,DNS2, ... - no default listed, so if you don't set it, that's on you bestie
- heads up: NetworkManager uses these variables both for IPv4 and IPv6 β shared custody, no cap
- ifcfg-rh variables:
dns-searchβ your list of DNS search domains π¦- ifcfg-rh variable:
IPV6_DOMAIN(+)
- ifcfg-rh variable:
addressesβ the list of static IP addresses, the main character energy of this table π- ifcfg-rh variables:
IPV6ADDR,IPV6ADDR_SECONDARIES - example, copy it exactly bestie:
- ifcfg-rh variables:
IPV6ADDR=ab12:9876::1
IPV6ADDR_SECONDARIES="ab12:9876::2 ab12:9876::3"
gatewayβ the gateway IP address, the door everyone walks through πͺ- ifcfg-rh variable:
IPV6_DEFAULTGW - example:
IPV6_DEFAULTGW=abbe::1
- ifcfg-rh variable:
routesβ your list of static routes- ifcfg-rh variable:
(none)β yeah, it's giving "not stored here" π - these are not stored in
ifcfg-*files⦠they live inroute6-*files instead, written in the form of a command line forip route add
- ifcfg-rh variable:
ignore-auto-routesβ defaultyes- ifcfg-rh variable:
IPV6_PEERROUTES(+) - careful:
IPV6_PEERROUTEShas the opposite meaning as theignore-auto-routesproperty π₯ (flip it in your head, fr fr)
- ifcfg-rh variable:
ignore-auto-dnsβ defaultyes- ifcfg-rh variable:
IPV6_PEERDNS(+) - same situation:
IPV6_PEERDNShas the opposite meaning as theignore-auto-dnsproperty π
- ifcfg-rh variable:
dhcp-hostnameβ the hostname to send the DHCP server π- ifcfg-rh variable:
DHCPV6_HOSTNAME
- ifcfg-rh variable:
dhcp-timeoutβ a timeout after which the DHCP transaction fails in case of no response β°- ifcfg-rh variable:
IPV6_DHCP_TIMEOUT(+) - example:
IPV6_DHCP_TIMEOUT=10
- ifcfg-rh variable:
π«Ά Btw those little (+) marks next to some variable names are part of the original table β keep an eye out for what they mean elsewhere in the page, iykyk.
dhcp-hostname-flagsπ β maps toDHCPV6_HOSTNAME_FLAGS, no default set, and it's literally just the flags for the DHCP hostname property, iykyk. Example:DHCPV6_HOSTNAME_FLAGS=5never-defaultπ β maps toIPV6_DEFROUTE(+), plusIPV6_DEFAULTGWandIPV6_DEFAULTDEVin/etc/sysconfig/network. Default isIPV6_DEFROUTE=yeswhen no variable is specified. SettingIPV6_DEFROUTE=notells NetworkManager that this connection should not be assigned the default IPv6 route. Heads up bestie:IPV6_DEFROUTEhas the opposite meaning as thenever-defaultproperty, so don't get it twisted π«Άmay-failβ¨ β maps toIPV6_FAILURE_FATAL(+), defaultno.IPV6_FAILURE_FATALhas the opposite meaning as themay-failproperty. That's the whole vibe check.route-metricπΈ β maps toIPV6_ROUTE_METRIC(+), default-1.IPV6_ROUTE_METRICis the default IPv6 metric for routes on this connection. If it's set to-1, a default metric based on the device type gets used instead. Slay, sensible defaults πroute-tableπ¦ β maps toIPV6_ROUTE_TABLE(+), default0.IPV6_ROUTE_TABLEenables policy-routing and sets the default routing table. Main character property fr.dns-priorityπ β maps toIPV6_DNS_PRIORITY(+), default0. This is the priority for DNS servers of this connection. Lower values have higher priority (yes, it's giving backwards, that's just how it is π). If zero, the default value will be used β50for VPNs,100for other connections. A negative value prevents DNS from other connections with greater values to be used. Ngl that's kind of powerful. Example:IPV6_DNS_PRIORITY=20dns-optionsπ β maps toIPV6_RES_OPTIONS(+), no default. It's the list of DNS options to be added to/etc/resolv.conf. Example:IPV6_RES_OPTIONS=ndots:2 timeout:3auto-route-ext-gwπ₯ β maps toIPV6_AUTO_ROUTE_EXT_GW(+), defaultyes. VPN connections will default to add the route automatically unless this setting is set toFALSE. For other connection types, adding such an automatic route is currently not supported, and setting this toTRUEhas no effect. Yeah. That's the whole story πreplace-local-ruleπ§ β maps toIPV6_REPLACE_LOCAL_RULE(+), defaultno. Connections will default to keep the autogenerated priority0local rule unless this setting is set toTRUE. Iconic behavior tbh.ip6-privacyπ β maps toIPV6_PRIVACY,IPV6_PRIVACY_PREFER_PUBLIC_IP(+), defaultno. This configures IPv6 Privacy Extensions for SLAAC (RFC4941). Obsessed with a privacy moment π Example:IPV6_PRIVACY=rfc3041IPV6_PRIVACY_PREFER_PUBLIC_IP=yesβ that's the tail of the last one, bestie π Allowed values:IPV6_PRIVACY:no,yes(rfc3041orrfc4941);IPV6_PRIVACY_PREFER_PUBLIC_IP:yes,no.addr-gen-mode/IPV6_ADDR_GEN_MODEβ default is"default-or-eui64". This one configures IPv6 Stable Privacy addressing for SLAAC (RFC7217) β¨
Example:
IPV6_ADDR_GEN_MODE=stable-privacy
Allowed values for IPV6_ADDR_GEN_MODE: default, default-or-eui64, eui64, stable-privacy.
token/IPV6_TOKENβ no default here, it's the IPv6 tokenized interface identifier token π
Example: IPV6_TOKEN=::53
ra-timeout/IPV6_RA_TIMEOUT(+)β no default, and it's literally just a timeout for waiting Router Advertisements, measured in seconds β³
Example: IPV6_RA_TIMEOUT=10
dhcp-duid/DHCPV6_DUID(+)β no default. A string sent to the DHCPv6 server to identify the local machine π«Ά Apart from the special values"lease","stable-llt","stable-ll","stable-uuid","llt"and"ll"a binary value in hex format is expected. An hex string where each octet is separated by a colon is also accepted.
Example:
DHCPV6_DUID=LL;
DHCPV6_DUID=0301deadbeef0001;
DHCPV6_DUID=03:01:de:ad:be:ef:00:01
dhcp-pd-hint/DHCPV6_PD_HINT(+)β no default. It's a hint for DHCPv6 prefix delegation π
Example:
DHCPV6_PD_HINT=2001:db8:1111:2220::/60
DHCPV6_PD_HINT=::/60
πΈ Table 18. ipvlan setting πΈ
Okay so this table is literally empty β no properties listed, nothing to see here, and that's on periodt π
π¦ Table 19. match setting π¦
path/MATCH_PATHβ no default. It's a space-separated list of paths to match against the udev propertyID_PATHSof devices π
Example:
MATCH_PATH="pci-0000:01:00.0 pci-0000:0c:00.0"
π Table 20. ovs-external-ids setting π
Also empty, bestie. Nothing listed, no cap π
β Table 21. ovs-other-config setting β
Empty too. The vibes are immaculate and the rows are nonexistent π
π Table 22. prefix-delegation setting π
And this one's empty as well β iconic behavior honestly π
Table 23. proxy setting π§ββοΈ
Okay bestie, this one is the proxy table, and it's giving "small but mighty". Four properties, each one with its ifcfg-rh variable, its default, and what it actually does. The little (+) next to a variable name is literally in the original, so I'm keeping it exactly as-is β no edits, no cap π
methodβ ifcfg-rh variablePROXY_METHOD(+), defaultnoneβ this is the method for proxy configuration. When it's set to"auto", WPAD gets used for proxy configuration, or you set the PAC file viaPAC_URLorPAC_SCRIPT. Allowed values are:none,auto.browser-onlyβ ifcfg-rh variableBROWSER_ONLY(+), defaultnoβ tells you whether the proxy configuration is for browser only. Yes/no vibes, nothing more.pac-urlβ ifcfg-rh variablePAC_URL(+), no default listed β the URL for the PAC file. Example time:
PAC_URL=http://wpad.mycompany.com/wpad.dat
pac-scriptβ ifcfg-rh variablePAC_SCRIPT(+), no default listed β the PAC script itself. Heads up: this is an UTF-8 encoded javascript code that defines aFindProxyForURL()function. Example:
PAC_SCRIPT="function FindProxyForURL (url, host) { return 'PROXY proxy.example.com:8080; DIRECT'; }"
Table 24. sriov setting π₯
SR-IOV time, aka "let's make virtual functions happen". Three properties, and the middle one is a whole family of variables hiding behind a ... β stay with me π«Ά
total-vfsβ ifcfg-rh variableSRIOV_TOTAL_VFS(+), no default listed β the total number of virtual functions to create. Example:
SRIOV_TOTAL_VFS=16
vfsβ ifcfg-rh variablesSRIOV_VF1(+),SRIOV_VF2(+),...β SR-IOV virtual function descriptors. Note that it's numbered per-VF, so you get a whole lineup of them. Example:
SRIOV_VF10="mac=00:11:22:33:44:55", ...
autoprobe-driversβ ifcfg-rh variableSRIOV_AUTOPROBE_DRIVERS(+), default:missing variable means global defaultβ this one decides whether to autoprobe virtual functions by a compatible driver. And yes, the default really is described as "missing variable means global default", so don't come for me, I'm just the messenger πΈ Example:
SRIOV_AUTOPROBE_DRIVERS=0,1
Table 25. tc setting π
Okay bestie, this is the traffic-control corner of the ifcfg world, and there are two props here. Both are giving "no default, you decide" energy β the Default column is literally empty for both, so don't come for me, that's just how it is. π«Ά
qdiscsβ ifcfg-rh variables:QDISC1(+),QDISC2(+), ...,TC_COMMIT(+). No default. These are the queueing disciplines to set on the interface. Here's the important bit, so like, pay attention: when noQDISC1,QDISC2, ...,FILTER1,FILTER2, ... keys are present, NetworkManager doesn't touch qdiscs and filters present on the interface β unlessTC_COMMITis set to'yes'. Yes, that's the same caveat as the next one, because they're a package deal. π
Example, straight up:
QDISC1=ingress, QDISC2="root handle 1234: fq_codel"
tfiltersβ ifcfg-rh variables:FILTER1(+),FILTER2(+), ...,TC_COMMIT(+). No default. These are the traffic filters to set on the interface. And same rule as above, fr fr: when noQDISC1,QDISC2, ...,FILTER1,FILTER2, ... keys are present, NetworkManager doesn't touch qdiscs and filters present on the interface, unlessTC_COMMITis set to'yes'. π
Example:
FILTER1="parent ffff: matchall action simple sdata Input", ...
Reminder bestie: those two descriptions are genuinely the same condition word-for-word β it's not me being lazy, that's what the page says. The dot-dot-dot in the filter example is also literally in the original, so don't @ me. π
Table 26. team setting π¦
One (1) property. Very demure, very mindful.
configβ ifcfg-rh variable:TEAM_CONFIG. No default. This is the team configuration in JSON. Seeman teamd.conffor details. That's it, that's the whole row. β¨
Table 27. team-port setting πΈ
The sequel to team setting, and yes it's also just one property. Consistency slay.
configβ ifcfg-rh variable:TEAM_PORT_CONFIG. No default. This is the team port configuration in JSON. Seeman teamd.conffor details. (Same manpage reference as the team one, because of course it is. iykyk.) π§
Table 28. user setting π
One property, but the description is a whole journey. Buckle up.
dataβ ifcfg-rh variable:NM_USER_*. No default. Each key/value pair is stored as a separate variable, with the name composed by concatenatingNM_USER_with the encoded key. Sounds fake? It's real. Here's how the encoding goes, step by step:- lowercase letters get substituted with uppercase. π
- uppercase letters get an underscore prepended to them.
- a dot is encoded as a double underscore.
- the remaining characters are encoded as an underscore followed by a 3 digit octal representation of the character.
And the example, in all its glory:
NM_USER_FOO__BAR=something
That's the whole encoding lore, bestie. No extra rules, no secret sixth step β I'm not inventing anything, I promise on my life. π
π¦ Table 29. vlan setting π¦
Okay bestie, this is the VLAN table and it's lowkey a lot of rows, so buckle up π Each row is a property, the ifcfg-rh variable (or variables!) it maps to, its default, and what it actually does. And ngl, every single default here is just empty β like, nothing's filled in unless you fill it in π
parentβ ifcfg-rh variable:DEVICEorPHYSDEV. Default: empty. This is the parent interface of the VLAN β the one the VLAN is riding on top of β¨idβ ifcfg-rh variable:VLAN_ID,DEVICE.. Default: empty. This is the VLAN identifier. IfVLAN_IDis not set, it is attempted to be detected from the suffix ofDEVICE=. π«Ά But heads up: older versions of NetworkManager had a bug where they would prefer the detected ID from theDEVICEoverVLAN_ID. So if you're on an old version, that's the drama πflagsβ ifcfg-rh variables:GVRP,MVRP,VLAN_FLAGS. Default: empty. These are the VLAN flags. Allowed values:"yesor"no"forGVRPandMVRP;"LOOSE_BINDING"and"NO_REORDER_HDR"forVLAN_FLAGSβprotocolβ ifcfg-rh variable:VLAN_PROTOCOL. Default: empty. The VLAN protocol. Example, iconically:
VLAN_PROTOCOL="802.1ad"
ingress-priority-mapβ ifcfg-rh variable:VLAN_INGRESS_PRIORITY_MAP. Default: empty. Ingress priority mapping. Example:
VLAN_INGRESS_PRIORITY_MAP=4:2,3:5
egress-priority-mapβ ifcfg-rh variable:VLAN_EGRESS_PRIORITY_MAP. Default: empty. Egress priority mapping. Example:
VLAN_EGRESS_PRIORITY_MAP=5:4,4:1,3:7
interface-nameβ ifcfg-rh variable:PHYSDEVandVLAN_ID, orDEVICE. Default: empty. The VLAN interface name. Now listen closely because this is the messy part π If all variables are set, the parent device fromPHYSDEVtakes precedence overDEVICE, but the VLAN id fromDEVICEtakes precedence overVLAN_ID. Example:
PHYSDEV=eth0, VLAN_ID=12
or
DEVICE=eth0.12
And the tea on what this plugin simply will not do: the following settings are not supported by the ifcfg-rh plugin, periodt π«
6lowpan, 802-11-olpc-mesh, adsl, bluetooth, cdma, dummy, generic, gsm, ip-tunnel, link, loopback, macsec, macvlan, ovs-bridge, ovs-dpdk, ovs-interface, ovs-patch, ovs-port, ppp, pppoe, serial, tun, veth, vpn, vrf, vxlan, wifi-p2p, wimax, wireguard, wpan
Like, if your fave connection type is in that list, this is not the plugin for you and that's just how it is π
πΈ Secret flags πΈ
So every secret property in a NetworkManager setting has an associated flags property, and that's what tells everyone how to handle that secret. In the ifcfg-rh plugin, the variables for secret flags have a _FLAGS suffix β cute, consistent, we love her β¨
The variables contain one or more of the following values, space separated. And if a *_FLAGS variable is missing (or empty), that means the password is owned by NetworkManager π«Ά
userβ a user-session secret agent is responsible for providing and storing this secret; when it is required, agents will be asked to provide it.askβ the associated password is not saved but it will be requested from the user each time it is required. π every single time, bestieunusedβ in some situations it cannot be automatically determined that a secret is required or not. This flag hints that the secret is not required and should not be requested from the user.
π FILES π
/etc/sysconfig/network-scripts/ifcfg-*/etc/sysconfig/network-scripts/keys-*/etc/sysconfig/network-scripts/route-*/etc/sysconfig/network-scripts/route6-*/usr/share/doc/initscripts/sysconfig.txt
π SEE ALSO π
nm-settings-nmcli(5)nm-settings-keyfile(5)NetworkManager(8)NetworkManager.conf(5)nmcli(1)nmcli-examples(7)
And that's the whole page, bestie β you made it to the end, I'm so proud of you fr fr π₯Ήπ This was NetworkManager 1.54.4, page NM-SETTINGS-IFCFG-RH(5), and it's giving iconic reference material from start to finish. Now go configure something and slay ππ
π¦ where this page comes from
- centos-stream 9: NetworkManager 1:1.54.4-4.el9 Β· GPL-2.0-or-later AND LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms