我只是想为局域网中的 Fedora 19 机器设置一个静态 IP 地址。我习惯使用/etc/network/interfaces
Debian,但该文件在这里不存在。
在谷歌搜索了一番后,我找到了一个小教程,它告诉你如何通过 systemctl 禁用 NetworkManager 并启用网络。之后,你可以在名为 的文件中配置静态 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
/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
使用 grepping dmesg 查找 udevd:
[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
答案1
命令行指令
经过大量挖掘,我发现ifcfg-*文件名,NAME=
文件中的变量与实际分配关系不大。你可以将它们更改为任何你想要的...我在我的机器上进行了测试,将它们更改为,eth0
并且启动时仍然应用手动/静态 IP。这里的关键似乎是HWADDR
文件内的变量。该NAME=
值似乎只是图形网络管理器设置中显示的名称。所以,话虽如此,我相信你需要做的就是...
确保
NetworkManager.service
仍然启用,并且network.service
已被禁用。最多重要的步骤是删除当前ifcfg-enp2s5脚本。
sudo rm /etc/sysconfig/network-scripts/ifcfg-enp2s5
创建一个名为的新脚本IFCFG-P3P1
sudo nano /etc/sysconfig/network-scripts/ifcfg-p3p1
设置内容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
至于为什么ifcfg-*名称与实际设备名称不同。我不知道,但怀疑这与安装过程中应用网络设置的方式有关。
图形说明
- 打开系统设置
- 点击网络
- 点击选项...
- 点击IPv4 设置*或者IPv6 设置选项卡,具体取决于您的家庭网络使用的 IP 版本(最有可能IPv4)。
- 点击方法组合框并选择手动的选项。
- 点击添加按钮。
- 在地址列(例如 10.0.0.20)。
- 在网络掩码列(例如 255.255.255.0)。
- 在网关列(例如 10.0.0.1)
在DNS 服务器文本框(例如 10.0.0.1)
- 点击节省...
- 当你返回网络设置,打开有线界面离开。
它应该会自动使用您在前面步骤中输入的静态地址信息重新打开。如果没有打开,请单击切换开关将其打开。
回答你关于使用 over 的问题NetworkManager.service
。network.service
在以后的版本中,它肯定有可能被删除。不过,作为一般经验法则,无论主题是什么,你都应该尽量避免使用任何“包含向后兼容性”。因此,你应该坚持使用NetworkManager
如果可以的话。
答案2
我不使用 Fedora,但是根据这个帖子,您正在寻找的文件应该是/etc/sysconfig/network-scripts/ifcfg-p3p1
这样的:
DEVICE=eth0
BOOTPROTO=none
HWADDR=00:13:20:5E:C0:47
ONBOOT=yes
DHCP_HOSTNAME=balthasar.benhome.com
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=no
IPADDR=172.16.3.3
NETMASK=255.255.255.192
GATEWAY=172.16.3.1
在那里设置 IP 应该就可以了。