使用 NetworkManager for Fedora 的静态 IP 地址

wul*_*lxz 7 networking linux networkmanager fedora-19

我只想为 LAN 中的 Fedora 19 机器设置一个静态 IP 地址。我习惯使用/etc/network/interfacesdebian,但该文件在此处不存在。
在谷歌搜索了一下之后,我发现了一个小教程,它告诉人们通过 systemctl 禁用 NetworkManager 并启用网络。之后,您可以在名为 .zip 的文件中配置静态 IP 地址/etc/sysconfig/network-scripts/ifcfg-*interfacename*

这是我的第一个问题:我找到了一个文件,其中显示了我的接口的 MAC 地址,ifconfig但 ifcfg- 之后的名称与 ifconfig 中的名称不匹配。为什么会这样?

我的第二个问题是关于使用 NetworkManager.service 或 network.service。我在论坛上读到,出于兼容性原因,network.service 仍然包含在内,可能很快就会被排除在外。如果network.service 很快就会被NetworkManager.service 取代,我是不是应该选择NetworkManager.service 来配置我的网络接口?如果是,我如何从 shell 使用 NetworkManager 做到这一点?

编辑:
以下是要求的输出:

[root@bitch /]# ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 97  bytes 12042 (11.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 97  bytes 12042 (11.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

p3p1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.178.11  netmask 255.255.255.0  broadcast 192.168.178.255
        inet6 fe80::214:85ff:febc:1c63  prefixlen 64  scopeid 0x20<link>
        ether 00:14:85:bc:1c:63  txqueuelen 1000  (Ethernet)
        RX packets 134347  bytes 169988336 (162.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 78199  bytes 6595669 (6.2 MiB)
        TX errors 0  dropped 0 overruns 1  carrier 0  collisions 0

[root@bitch /]# ls -l /etc/sysconfig/network-scripts/
total 200
-rw-r--r--. 1 root root   437 Sep 15 02:05 ifcfg-enp2s5
-rw-r--r--. 1 root root   254 May 31 09:49 ifcfg-lo
lrwxrwxrwx. 1 root root    24 Jun 27 19:12 ifdown -> ../../../usr/sbin/ifdown
-rwxr-xr-x. 1 root root   627 May 31 09:49 ifdown-bnep
-rwxr-xr-x. 1 root root  5553 May 31 09:49 ifdown-eth
-rwxr-xr-x. 1 root root   781 May 31 09:49 ifdown-ippp
-rwxr-xr-x. 1 root root  4141 May 31 09:49 ifdown-ipv6
lrwxrwxrwx. 1 root root    11 Jun 27 19:12 ifdown-isdn -> ifdown-ippp
-rwxr-xr-x. 1 root root  1642 May 31 09:49 ifdown-post
-rwxr-xr-x. 1 root root  1068 May 31 09:49 ifdown-ppp
-rwxr-xr-x. 1 root root   837 May 31 09:49 ifdown-routes
-rwxr-xr-x. 1 root root  1444 May 31 09:49 ifdown-sit
-rwxr-xr-x. 1 root root  1462 May 31 09:49 ifdown-tunnel
lrwxrwxrwx. 1 root root    22 Jun 27 19:12 ifup -> ../../../usr/sbin/ifup
-rwxr-xr-x. 1 root root 12445 May 31 09:49 ifup-aliases
-rwxr-xr-x. 1 root root   859 May 31 09:49 ifup-bnep
-rwxr-xr-x. 1 root root 10234 May 31 09:49 ifup-eth
-rwxr-xr-x. 1 root root 12033 May 31 09:49 ifup-ippp
-rwxr-xr-x. 1 root root 10437 May 31 09:49 ifup-ipv6
-rwxr-xr-x. 1 root root   804 May 31 09:49 ifup-ipx
lrwxrwxrwx. 1 root root     9 Jun 27 19:12 ifup-isdn -> ifup-ippp
-rwxr-xr-x. 1 root root   642 May 31 09:49 ifup-plip
-rwxr-xr-x. 1 root root  1043 May 31 09:49 ifup-plusb
-rwxr-xr-x. 1 root root  2609 May 31 09:49 ifup-post
-rwxr-xr-x. 1 root root  4154 May 31 09:49 ifup-ppp
-rwxr-xr-x. 1 root root  1925 May 31 09:49 ifup-routes
-rwxr-xr-x. 1 root root  3268 May 31 09:49 ifup-sit
-rwxr-xr-x. 1 root root  2607 May 31 09:49 ifup-tunnel
-rwxr-xr-x. 1 root root  3775 May 31 09:49 ifup-wireless
-rwxr-xr-x. 1 root root  4623 May 31 09:49 init.ipv6-global
-rw-r--r--. 1 root root 13836 May 31 09:49 network-functions
-rw-r--r--. 1 root root 26134 May 31 09:49 network-functions-ipv6
Run Code Online (Sandbox Code Playgroud)

/etc/sysconfig/network-scripts/ifcfg-enp2s5 的内容:

PEERROUTES="yes"
IPV6INIT="yes"
NAME="enp2s5"
IPV6_PEERDNS="yes"
DEFROUTE="yes"
UUID="7622e20e-3f2a-4b5c-83d8-f4f6e22ed7ec"
PEERDNS="yes"
IPV4_FAILURE_FATAL="no"
HWADDR="00:14:85:BC:1C:63"
BOOTPROTO="static"
IPV6_DEFROUTE="yes"
IPV6_AUTOCONF="yes"
IPV6_FAILURE_FATAL="no"
TYPE="Ethernet"
ONBOOT="yes"
IPV6_PEERROUTES="yes"
IPADDR=192.168.178.11
NETMASK=255.255.255.0
BROADCAST=192.168.178.255
NETWORK=192.168.178.0
GATEWAY=192.168.178.1
Run Code Online (Sandbox Code Playgroud)

为 udevd 查找 dmesg:

[root@bitch network-scripts]# dmesg | grep udevd
[    0.788381] systemd-udevd[97]: starting version 204
[    2.457296] systemd-udevd[322]: starting version 204
[    3.110272] systemd-udevd[329]: renamed network interface eth0 to p3p1
Run Code Online (Sandbox Code Playgroud)

Dre*_*pin 5

命令行说明

经过大量挖掘,我发现ifcfg-*文件名和文件中的NAME=变量与实际赋值几乎没有关系。你可以随意将它们更改为任何你想要的......我在我的机器上做了一个测试,将它们更改eth0为手动/静态 IP 在启动时仍然应用。这里的关键似乎HWADDR是文件内的变量。该NAME=值似乎只是图形网络管理器设置中显示的名称。所以,话虽如此,我相信你需要做的就是......

  1. 确保NetworkManager.service仍处于启用状态,并且network.service已禁用。

  2. 重要的步骤是删除当前的ifcfg-enp2s5脚本。

    sudo rm /etc/sysconfig/network-scripts/ifcfg-enp2s5
    
    Run Code Online (Sandbox Code Playgroud)
  3. 创建一个名为ifcfg-p3p1的新脚本

    sudo nano /etc/sysconfig/network-scripts/ifcfg-p3p1
    
    Run Code Online (Sandbox Code Playgroud)
  4. ifcfg-p3p1的内容设置为以下内容,并使用所需的设置更新相应的 IP 设置。

    TYPE=Ethernet
    BOOTPROTO=none
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    NAME=p3p1
    UUID=7622e20e-3f2a-4b5c-83d8-f4f6e22ed7ec
    ONBOOT=yes
    DNS1=10.0.0.1
    IPADDR0=10.0.0.2
    PREFIX0=24
    GATEWAY0=10.0.0.1
    HWADDR=00:14:85:BC:1C:63
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    
    Run Code Online (Sandbox Code Playgroud)

至于为什么ifcfg-*名称与实际设备名称不同。我不知道,但怀疑这与安装过程中如何应用网络设置有关。

图形说明

  1. 打开系统设置
  2. 点击网络
  3. 点击选项...
  4. 根据您的家庭网络使用的 IP 版本(最有可能是IPv4),单击IPv4 设置 *IPv6 设置选项卡。
  5. 单击方法组合框并选择手动选项。
  6. 单击添加按钮。
  7. 地址栏中键入您想要的地址(例如 10.0.0.20)。
  8. Netmask列中输入您的网络的网络掩码(例如 255.255.255.0)。
  9. 网关列中输入网关(通常是您路由器的 IP)(例如 10.0.0.1)
  10. DNS 服务器文本框中输入您的 DNS 服务器(例如 10.0.0.1)

    有线连接选项对话框

  11. 点击保存...
  12. 当您返回到网络设置,将有线接口OFF
  13. 它应该会使用您在前面步骤中输入的静态地址信息自动重新打开。如果它没有打开,请单击切换开关将其打开。

    手动 IP 选择后的网络设置


回答您有关使用NetworkManager.serviceover 的问题network.service。绝对有可能在以后的版本中将其删除。不过,作为一般经验法则,无论主题是什么,您都应该始终尽量避免使用“为向后兼容而包含”的任何内容。所以,NetworkManager 如果可以,你应该坚持使用。