主机网络配置
主机网络配置选项
配置选项
FCOS机器主要通过Ignition进行配置,Ignition在机器第一次引导时从initramf运行。根据平台的不同,机器可能需要网络访问以检索远程资源;要么是Ignition配置本身,要么是在Ignition配置中指定的远程资源。
只有在确定需要或用户明确请求时,才会在initramf中启动联网 rd.neednet=1 。
|
在initramf中,机器是否需要联网可以决定用户将如何为机器配置联网。为计算机配置网络的选项包括:
-
通过内核参数
-
这些文件在第一次引导时由initramf中的Dracut模块处理
-
-
通过实时图像定制
-
通过在实时ISO或PXE映像中嵌入网络配置
-
-
通过
coreos-installer install --copy-network
-
通过传播安装环境网络配置
-
-
通过Afterburn
-
通过应用各种平台注入的网络配置
-
-
通过Ignition
-
通过记录NetworkManager随后在启动时使用的文件
-
如果您需要网络连接来获取您的Ignition配置,或者如果您的Ignition具有远程引用,您将无法通过Ignition提供您的网络配置。 |
如果您以多种方式(例如,通过内核参数和通过Ignition)提供网络配置,则通过Ignition提供的配置将获胜,并应用于机器的真正根目录。不支持通过内核参数提供一半配置,通过Ignition提供一半配置。 |
我们现在将介绍这些选项中的每一个。
via Kernel Arguments
在机器第一次引导时,用户可以提供定义网络配置的内核参数。这些内核参数大多在 Dracut.cmdline手册页 。有几种不同的方法可以在第一次引导时应用这些内核参数。
1.在最一般的形式中,您可以在第一次引导(Ignition引导)时在GRUB提示符下停止一个实例,并将它们添加到现有的内核参数集中。
2.对于裸机安装,其中您通过添加的内核参数自动安装(即, coreos.inst.install_dev=
),您还可以在那里附加网络参数,它们将应用于安装引导和已安装计算机的第一次引导(Ignition引导)。
3.对于PXE引导,您可以在PXE配置中将网络内核参数添加到现有的内核参数集中。
静态配置IP地址的一组内核参数示例 ens2
看起来像是:
ip=10.10.10.10::10.10.10.1:255.255.255.0:myhostname:ens2:none:8.8.8.8
语法有点难以使用。使用它的一个简单方法是编写一个小脚本,它将为您填充这些项。对于上面的示例,应该可以使用下面这样的代码:
ip='10.10.10.10'
gateway='10.10.10.1'
netmask='255.255.255.0'
hostname='myhostname'
interface='ens2'
nameserver='8.8.8.8'
echo "ip=${ip}::${gateway}:${netmask}:${hostname}:${interface}:none:${nameserver}"
via live image customization
CoreOS-Installer允许您使用以下命令将NetworkManager密钥文件直接嵌入到实时ISO或PXE映像中 --network-keyfile
选项以 coreos-installer iso customize
或 coreos-installer pxe customize
。在Ignition运行之前,将在initramf中应用该配置。如果您还使用 --installer-config
选项或任何 --dest-*
用于配置自动安装的选项,或 --copy-network
选项手动安装时,网络配置将被转发到已安装的系统。
有关在实时映像中嵌入网络配置的更多详细信息,请参阅 实时ISO/PXE图像参考 。
via coreos-installer install --copy-network
对于手动裸机安装工作流,使用Dracut内核参数配置网络可能不可取:
-
语法对用户不是很友好
-
通过抓取GRUB提示符来操作内核参数可能很困难
这个 --copy-network
选项以 coreos-installer install
将从 /etc/NetworkManager/system-connections/
目录安装到已安装的系统中。对于交互式安装,这允许用户在执行安装之前以各种方式填充网络配置:
-
使用
nmcli
命令 -
使用
nmtui
TUI界面 -
直接写入文件
-
使用另一种可选工具
它还允许用户在节点上执行硬件发现(即“我的接口名称是什么?”)。有关此工作流的示例,请参见 此演示 它详细地展示了这一点。
via Afterburn
在某些平台上,Afterburn将在initramf期间注入由用户或平台配置的网络配置。
目前,这只在VMWare上使用。那里的实现允许用户以Dracut网络参数的形式指定网络配置,而不必停止机器引导并自己手动注入这些参数。
看见 Afterburn文档 以获取更多信息。
via Ignition
警告:如果您需要网络来获取您的Ignition配置,并且您的环境需要比默认的DHCP更复杂的网络来获取Ignition配置,那么您将需要使用除Ignition之外的其他方法来配置网络。
可以通过写出Ignition配置中描述的文件来执行网络配置。这些是 网络管理器密钥文件 被写入的 /etc/NetworkManager/system-connections/
告诉网络管理器该做什么。
通过Ignition提供的任何配置都将被视为比为Fedora CoreOS实例配置网络的任何其他方法更高的优先级。如果通过Ignition指定网络配置,请尽量不要使用其他机制来配置网络。
举个例子 Butane 我们上面显示的相同静态网络示例的配置为:
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/NetworkManager/system-connections/ens2.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=ens2
type=ethernet
interface-name=ens2
[ipv4]
address1=10.10.10.10/24,10.10.10.1
dns=8.8.8.8;
dns-search=
may-fail=false
method=manual
主机网络配置示例
在本节中,我们将介绍使用Dracut内核参数和NetworkManager密钥文件通过Ignition/buane设置不同类型的网络设备的常见示例。
除非另有说明,否则本节中使用静态IP的示例将采用这些值:
ip='10.10.10.10'
gateway='10.10.10.1'
netmask='255.255.255.0'
prefix='24'
hostname='myhostname'
interface='ens2'
nameserver='8.8.8.8'
bondname='bond0'
teamname='team0'
bridgename='br0'
subnic1='ens2'
subnic2='ens3'
vlanid='100'
使用以下工具生成NetworkManager密钥文件 nm-initrd-generator
NetworkManager提供了一个工具, NM-初始化-生成器 ,它可以从Dracut内核参数语法生成密钥文件。这可能是一种很好的方法,可以将内核参数转换为密钥文件,或者只需少量输入即可快速生成一些密钥文件,然后调整一些更详细的设置。
以下是通过以下方式为焊接生成密钥文件的示例 nm-initrd-generator
:
$ kargs="ip=bond0:dhcp bond=bond0:ens2,ens3:mode=active-backup,miimon=100 nameserver=8.8.8.8"
$ /usr/libexec/nm-initrd-generator -s -- $kargs
*** Connection 'bond0' ***
[connection]
id=bond0
uuid=643c17b5-b364-4137-b273-33f450a45476
type=bond
interface-name=bond0
multi-connect=1
permissions=
[ethernet]
mac-address-blacklist=
[bond]
miimon=100
mode=active-backup
[ipv4]
dns=8.8.8.8;
dns-search=
may-fail=false
method=auto
[ipv6]
addr-gen-mode=eui64
dns-search=
method=auto
[proxy]
*** Connection 'ens3' ***
[connection]
id=ens3
uuid=b42cc917-fd87-47df-9ac2-34622ecddd8c
type=ethernet
interface-name=ens3
master=643c17b5-b364-4137-b273-33f450a45476
multi-connect=1
permissions=
slave-type=bond
[ethernet]
mac-address-blacklist=
*** Connection 'ens2' ***
[connection]
id=ens2
uuid=e111bb4e-3ee3-4612-afc2-1d2dfff97671
type=ethernet
interface-name=ens2
master=643c17b5-b364-4137-b273-33f450a45476
multi-connect=1
permissions=
slave-type=bond
[ethernet]
mac-address-blacklist=
此运行将生成三个密钥文件。一张是 bond0
,一个用于 ens3
,和一个用于 ens2
。您可以获取生成的输出、添加更多设置或调整现有设置,然后通过Ignition传递文件。
配置静态IP
Dracut Kernel Arguments
ip=${ip}::${gateway}:${netmask}:${hostname}:${interface}:none:${nameserver}
ip=10.10.10.10::10.10.10.1:255.255.255.0:myhostname:ens2:none:8.8.8.8
Butane config
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/NetworkManager/system-connections/${interface}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${interface}
type=ethernet
interface-name=${interface}
[ipv4]
address1=${ip}/${prefix},${gateway}
dhcp-hostname=${hostname}
dns=${nameserver};
dns-search=
may-fail=false
method=manual
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/NetworkManager/system-connections/ens2.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=ens2
type=ethernet
interface-name=ens2
[ipv4]
address1=10.10.10.10/24,10.10.10.1
dhcp-hostname=myhostname
dns=8.8.8.8;
dns-search=
may-fail=false
method=manual
配置绑定(静态IP)
Dracut Kernel Arguments
ip=${ip}::${gateway}:${netmask}:${hostname}:${bondname}:none:${nameserver}
bond=${bondname}:${subnic1},${subnic2}:mode=active-backup,miimon=100
ip=10.10.10.10::10.10.10.1:255.255.255.0:myhostname:bond0:none:8.8.8.8
bond=bond0:ens2,ens3:mode=active-backup,miimon=100
Butane config
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/NetworkManager/system-connections/${bondname}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${bondname}
type=bond
interface-name=${bondname}
[bond]
miimon=100
mode=active-backup
[ipv4]
address1=${ip}/${prefix},${gateway}
dhcp-hostname=${hostname}
dns=${nameserver};
dns-search=
may-fail=false
method=manual
- path: /etc/NetworkManager/system-connections/${bondname}-slave-${subnic1}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${bondname}-slave-${subnic1}
type=ethernet
interface-name=${subnic1}
master=${bondname}
slave-type=bond
- path: /etc/NetworkManager/system-connections/${bondname}-slave-${subnic2}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${bondname}-slave-${subnic2}
type=ethernet
interface-name=${subnic2}
master=${bondname}
slave-type=bond
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/NetworkManager/system-connections/bond0.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=bond0
type=bond
interface-name=bond0
[bond]
miimon=100
mode=active-backup
[ipv4]
address1=10.10.10.10/24,10.10.10.1
dhcp-hostname=myhostname
dns=8.8.8.8;
dns-search=
may-fail=false
method=manual
- path: /etc/NetworkManager/system-connections/bond0-slave-ens2.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=bond0-slave-ens2
type=ethernet
interface-name=ens2
master=bond0
slave-type=bond
- path: /etc/NetworkManager/system-connections/bond0-slave-ens3.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=bond0-slave-ens3
type=ethernet
interface-name=ens3
master=bond0
slave-type=bond
配置网桥(DHCP)
Dracut Kernel Arguments
ip=${bridgename}:dhcp
bridge=${bridgename}:${subnic1},${subnic2}
ip=br0:dhcp
bridge=br0:ens2,ens3
Butane config
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/NetworkManager/system-connections/${bridgename}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${bridgename}
type=bridge
interface-name=${bridgename}
[bridge]
[ipv4]
dns-search=
may-fail=false
method=auto
- path: /etc/NetworkManager/system-connections/${bridgename}-slave-${subnic1}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${bridgename}-slave-${subnic1}
type=ethernet
interface-name=${subnic1}
master=${bridgename}
slave-type=bridge
[bridge-port]
- path: /etc/NetworkManager/system-connections/${bridgename}-slave-${subnic2}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${bridgename}-slave-${subnic2}
type=ethernet
interface-name=${subnic2}
master=${bridgename}
slave-type=bridge
[bridge-port]
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/NetworkManager/system-connections/br0.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=br0
type=bridge
interface-name=br0
[bridge]
[ipv4]
dns-search=
may-fail=false
method=auto
- path: /etc/NetworkManager/system-connections/br0-slave-ens2.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=br0-slave-ens2
type=ethernet
interface-name=ens2
master=br0
slave-type=bridge
[bridge-port]
- path: /etc/NetworkManager/system-connections/br0-slave-ens3.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=br0-slave-ens3
type=ethernet
interface-name=ens3
master=br0
slave-type=bridge
[bridge-port]
配置组(DHCP)
Dracut Kernel Arguments
ip=${teamname}:dhcp
team=${teamname}:${subnic1},${subnic2}
ip=team0:dhcp
team=team0:ens2,ens3
Butane config
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/NetworkManager/system-connections/${teamname}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${teamname}
type=team
interface-name=${teamname}
[team]
config={"runner": {"name": "activebackup"}, "link_watch": {"name": "ethtool"}}
[ipv4]
dns-search=
may-fail=false
method=auto
- path: /etc/NetworkManager/system-connections/${teamname}-slave-${subnic1}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${teamname}-slave-${subnic1}
type=ethernet
interface-name=${subnic1}
master=${teamname}
slave-type=team
[team-port]
config={"prio": 100}
- path: /etc/NetworkManager/system-connections/${teamname}-slave-${subnic2}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${teamname}-slave-${subnic2}
type=ethernet
interface-name=${subnic2}
master=${teamname}
slave-type=team
[team-port]
config={"prio": 100}
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/NetworkManager/system-connections/team0.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=team0
type=team
interface-name=team0
[team]
config={"runner": {"name": "activebackup"}, "link_watch": {"name": "ethtool"}}
[ipv4]
dns-search=
may-fail=false
method=auto
- path: /etc/NetworkManager/system-connections/team0-slave-ens2.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=team0-slave-ens2
type=ethernet
interface-name=ens2
master=team0
slave-type=team
[team-port]
config={"prio": 100}
- path: /etc/NetworkManager/system-connections/team0-slave-ens3.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=team0-slave-ens3
type=ethernet
interface-name=ens3
master=team0
slave-type=team
[team-port]
config={"prio": 100}
配置VLAN(静态IP)
Dracut Kernel Arguments
ip=${ip}::${gateway}:${netmask}:${hostname}:${interface}.${vlanid}:none:${nameserver}
vlan=${interface}.${vlanid}:${interface}
ip=10.10.10.10::10.10.10.1:255.255.255.0:myhostname:ens2.100:none:8.8.8.8
vlan=ens2.100:ens2
Butane config
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/NetworkManager/system-connections/${interface}.${vlanid}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${interface}.${vlanid}
type=vlan
interface-name=${interface}.${vlanid}
[vlan]
egress-priority-map=
flags=1
id=${vlanid}
ingress-priority-map=
parent=${interface}
[ipv4]
address1=${ip}/${prefix},${gateway}
dhcp-hostname=${hostname}
dns=${nameserver};
dns-search=
may-fail=false
method=manual
- path: /etc/NetworkManager/system-connections/${interface}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${interface}
type=ethernet
interface-name=${interface}
[ipv4]
dns-search=
method=disabled
[ipv6]
addr-gen-mode=eui64
dns-search=
method=disabled
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/NetworkManager/system-connections/ens2.100.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=ens2.100
type=vlan
interface-name=ens2.100
[vlan]
egress-priority-map=
flags=1
id=100
ingress-priority-map=
parent=ens2
[ipv4]
address1=10.10.10.10/24,10.10.10.1
dhcp-hostname=myhostname
dns=8.8.8.8;
dns-search=
may-fail=false
method=manual
- path: /etc/NetworkManager/system-connections/ens2.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=ens2
type=ethernet
interface-name=ens2
[ipv4]
dns-search=
method=disabled
[ipv6]
addr-gen-mode=eui64
dns-search=
method=disabled
在绑定上配置VLAN(动态主机配置协议)
Dracut Kernel Arguments
ip=${bondname}.${vlanid}:dhcp
bond=${bondname}:${subnic1},${subnic2}:mode=active-backup,miimon=100
vlan=${bondname}.${vlanid}:${bondname}
ip=bond0.100:dhcp
bond=bond0:ens2,ens3:mode=active-backup,miimon=100
vlan=bond0.100:bond0
Butane config
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/NetworkManager/system-connections/${bondname}.${vlanid}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${bondname}.${vlanid}
type=vlan
interface-name=${bondname}.${vlanid}
[vlan]
egress-priority-map=
flags=1
id=${vlanid}
ingress-priority-map=
parent=${bondname}
[ipv4]
dns-search=
may-fail=false
method=auto
- path: /etc/NetworkManager/system-connections/${bondname}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${bondname}
type=bond
interface-name=${bondname}
[bond]
miimon=100
mode=active-backup
[ipv4]
method=disabled
[ipv6]
method=disabled
- path: /etc/NetworkManager/system-connections/${bondname}-slave-${subnic1}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${bondname}-slave-${subnic1}
type=ethernet
interface-name=${subnic1}
master=${bondname}
slave-type=bond
- path: /etc/NetworkManager/system-connections/${bondname}-slave-${subnic2}.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=${bondname}-slave-${subnic2}
type=ethernet
interface-name=${subnic2}
master=${bondname}
slave-type=bond
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/NetworkManager/system-connections/bond0.100.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=bond0.100
type=vlan
interface-name=bond0.100
[vlan]
egress-priority-map=
flags=1
id=100
ingress-priority-map=
parent=bond0
[ipv4]
dns-search=
may-fail=false
method=auto
- path: /etc/NetworkManager/system-connections/bond0.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=bond0
type=bond
interface-name=bond0
[bond]
miimon=100
mode=active-backup
[ipv4]
method=disabled
[ipv6]
method=disabled
- path: /etc/NetworkManager/system-connections/bond0-slave-ens2.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=bond0-slave-ens2
type=ethernet
interface-name=ens2
master=bond0
slave-type=bond
- path: /etc/NetworkManager/system-connections/bond0-slave-ens3.nmconnection
mode: 0600
contents:
inline: |
[connection]
id=bond0-slave-ens3
type=ethernet
interface-name=ens3
master=bond0
slave-type=bond
禁用以太网设备的自动配置
默认情况下,FCOS将尝试在插入电缆的每个接口上自动配置(DHCP/SLAAC)。在某些网络环境中,这可能并不可取。可以使用配置文件拖放来更改NetworkManager的此行为:
variant: fcos
version: 1.4.0
storage:
files:
- path: /etc/NetworkManager/conf.d/noauto.conf
mode: 0644
contents:
inline: |
[main]
# Do not do automatic (DHCP/SLAAC) configuration on ethernet devices
# with no other matching connections.
no-auto-default=*
警告:如果禁用了以太网设备的NetworkManager自动配置,并且未提供其他网络配置,则系统将在没有网络访问的情况下启动。