• linux配置动态和静态IP地址:interfaces文件实现


    前言

            为什么不使用GUI界面配置呢?因为我的系统设置窗口又双叒叕被我玩没了。这次不想把它找回来了。

    一 安装工具包

    好在我的虚拟机默认就是配置dhcp的,要不然就得下载源码包了。

    sudo apt install ifupdown
    1. $ ifdown ens33
    2. ifdown: failed to open lockfile /run/network/ifstate.ens33: No such file or directory

    报错:怎么解决?

    需要管理员权限,要先up,然后再down,然后再up

    $ sudo ifup ens33
    $ sudo ifdown ens33
    $ sudo ifup ens33

    二 设置静态IP

    ubuntu21中的/etc/network/interfaces默认是没有的,所以要创建

    sudo touch /etc/network/interfaces

    在/etc/network/创建文件interfaces

    网卡名字默认是ens33

    auto ens33                     #其中ens33是ubuntu默认的网卡名字
    iface eth0 inet static
    address x.x.x.x             #x.x.x.x为设置的静态ip地址
    netmask 255.255.255.0        #此处设置子网掩码
    gateway x.x.x.x             #此处设置网关
    dns-nameservers 8.8.8.8        #此处设置dns服务器

    按照说明修改配置,将下面的内容写入/etc/network/interfaces文件

    1. auto ens33
    2. iface ens33 inet static
    3. address 192.168.0.16
    4. netmask 255.255.255.0
    5. gateway 192.168.0.1
    6. dns-nameservers 8.8.8.8

    然后执行以下三步操作

    $ sudo ifup ens33
    $ sudo ifdown ens33
    $ sudo ifup ens33

    然后查看ip地址

    ifconfig ens33 
    1. $ ifconfig ens33
    2. ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    3. inet 192.168.0.16 netmask 255.255.255.0 broadcast 192.168.0.255
    4. ether 00:0c:29:7e:f7:69 txqueuelen 1000 (以太网)
    5. RX packets 126276 bytes 59013705 (59.0 MB)
    6. RX errors 0 dropped 0 overruns 0 frame 0
    7. TX packets 23467 bytes 3752407 (3.7 MB)
    8. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    OK配置成功。

    三 配置动态IP

            要确认电脑连接到了虚拟或者实体dhcp服务器。首先,备份原来的interfaces文件

    sudo cp interfaces interfaces_staic

    按照说明修改配置,将下面的内容写入/etc/network/interfaces文件

    1. auto ens33
    2. iface ens33 inet dhcp

    然后执行以下三步操作

    $ sudo ifup ens33
    $ sudo ifdown ens33
    $ sudo ifup ens33

    然后查看ip地址

    ifconfig ens33 
    1. $ ifconfig ens33
    2. ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    3. inet 192.168.31.35 netmask 255.255.255.0 broadcast 192.168.31.255
    4. ether 00:0c:29:7e:f7:69 txqueuelen 1000 (以太网)
    5. RX packets 126311 bytes 59022760 (59.0 MB)
    6. RX errors 0 dropped 0 overruns 0 frame 0
    7. TX packets 23534 bytes 3762148 (3.7 MB)
    8. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    OK配置成功。

    最后把这个文件也备份一下

    $ sudo cp interfaces interfaces_dhcp

    四 配置双网卡

    首先要设置两个网卡,第二个网卡桥接到无线网卡,用于上网。

     此时通过ifconfig命令,可以看到多了ens38

    1. lkmao@ubuntu:~$ ifconfig
    2. ens33 Link encap:以太网 硬件地址 00:0c:29:8c:05:15
    3. inet 地址:192.168.0.11 广播:192.168.0.255 掩码:255.255.255.0
    4. inet6 地址: fe80::874:4760:1e43:8e9b/64 Scope:Link
    5. UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
    6. 接收数据包:172855 错误:0 丢弃:0 过载:0 帧数:0
    7. 发送数据包:162303 错误:0 丢弃:0 过载:0 载波:0
    8. 碰撞:0 发送队列长度:1000
    9. 接收字节:112141747 (112.1 MB) 发送字节:61201703 (61.2 MB)
    10. ens38 Link encap:以太网 硬件地址 00:0c:29:8c:05:1f
    11. UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
    12. 接收数据包:10 错误:0 丢弃:0 过载:0 帧数:0
    13. 发送数据包:0 错误:0 丢弃:0 过载:0 载波:0
    14. 碰撞:0 发送队列长度:1000
    15. 接收字节:600 (600.0 B) 发送字节:0 (0.0 B)
    16. lo Link encap:本地环回
    17. inet 地址:127.0.0.1 掩码:255.0.0.0
    18. inet6 地址: ::1/128 Scope:Host
    19. UP LOOPBACK RUNNING MTU:65536 跃点数:1
    20. 接收数据包:36520 错误:0 丢弃:0 过载:0 帧数:0
    21. 发送数据包:36520 错误:0 丢弃:0 过载:0 载波:0
    22. 碰撞:0 发送队列长度:1000
    23. 接收字节:878963511 (878.9 MB) 发送字节:878963511 (878.9 MB)
    24. lkmao@ubuntu:~$

    修改/etc/network/interfaces文件,使得ens38通过dhcp获取ip地址,修改后的文件如下所示:

    从内容可知,ens33设置了静态ip地址192.168.0.11。ens38设置了自动获取IP地址。

    # interfaces(5) file used by ifup(8) and ifdown(8)
    auto ens33
    iface ens33 inet static
    address 192.168.0.11
    netmask 255.255.255.0
    gateway 192.168.0.1
    dns-nameservers 8.8.8.8

    auto ens38
    iface ens38 inet dhcp

    auto lo
    iface lo inet loopback
     

    执行命令ifup使配置生效。

    sudo ifup ens38
    1. lkmao@ubuntu:~$ sudo ifup ens38
    2. Internet Systems Consortium DHCP Client 4.3.3
    3. Copyright 2004-2015 Internet Systems Consortium.
    4. All rights reserved.
    5. For info, please visit https://www.isc.org/software/dhcp/
    6. Listening on LPF/ens38/00:0c:29:8c:05:1f
    7. Sending on LPF/ens38/00:0c:29:8c:05:1f
    8. Sending on Socket/fallback
    9. DHCPDISCOVER on ens38 to 255.255.255.255 port 67 interval 3 (xid=0x1205ad66)
    10. DHCPREQUEST of 192.168.31.72 on ens38 to 255.255.255.255 port 67 (xid=0x66ad0512)
    11. DHCPOFFER of 192.168.31.72 from 192.168.31.1
    12. DHCPACK of 192.168.31.72 from 192.168.31.1
    13. bound to 192.168.31.72 -- renewal in 16735 seconds.
    14. lkmao@ubuntu:~$

    通过ifconfig查看当前的IP地址

    1. lkmao@ubuntu:~$ ifconfig
    2. ens33 Link encap:以太网 硬件地址 00:0c:29:8c:05:15
    3. inet 地址:192.168.0.11 广播:192.168.0.255 掩码:255.255.255.0
    4. inet6 地址: fe80::874:4760:1e43:8e9b/64 Scope:Link
    5. UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
    6. 接收数据包:173849 错误:0 丢弃:0 过载:0 帧数:0
    7. 发送数据包:163844 错误:0 丢弃:0 过载:0 载波:0
    8. 碰撞:0 发送队列长度:1000
    9. 接收字节:112210420 (112.2 MB) 发送字节:61380986 (61.3 MB)
    10. ens38 Link encap:以太网 硬件地址 00:0c:29:8c:05:1f
    11. inet 地址:192.168.31.72 广播:192.168.31.255 掩码:255.255.255.0
    12. inet6 地址: fe80::20c:29ff:fe8c:51f/64 Scope:Link
    13. UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
    14. 接收数据包:22 错误:0 丢弃:0 过载:0 帧数:0
    15. 发送数据包:35 错误:0 丢弃:0 过载:0 载波:0
    16. 碰撞:0 发送队列长度:1000
    17. 接收字节:7625 (7.6 KB) 发送字节:6937 (6.9 KB)
    18. lo Link encap:本地环回
    19. inet 地址:127.0.0.1 掩码:255.0.0.0
    20. inet6 地址: ::1/128 Scope:Host
    21. UP LOOPBACK RUNNING MTU:65536 跃点数:1
    22. 接收数据包:36684 错误:0 丢弃:0 过载:0 帧数:0
    23. 发送数据包:36684 错误:0 丢弃:0 过载:0 载波:0
    24. 碰撞:0 发送队列长度:1000
    25. 接收字节:878973515 (878.9 MB) 发送字节:878973515 (878.9 MB)
    26. lkmao@ubuntu:~$

    配置成功了。

    不过当前还不能上网。首先要将ens33断开,然后

    sudo ifdown ens38

    sudo ifup ens38

    这是可以上网了。

     然后

     从主机也可以ping通ens33.

     重启以后也可以,(⊙o⊙)…,貌似哪里不对劲啊。他们应该是优先级的吧,linux怎么知道优先使用谁来访问互联网呢?

    五(补充内容):解决上网问题的尝试

    后来系统设置窗口,经过修修补补又弄好了,也忘记怎么弄的了。

    这种方法,比较粗糙。缺乏理论支撑,以后要补齐理论支撑。

    如下图所示:刚开始的时候,每次都要切换,后来无意中发现,只要先打开上网的ens38,然后再打开ens33,就可以又上网,又使用本地局域网链接。

    那么,为什么以前没有发现这个做法呢?应该不是,应该是被什么东西干扰了。而这个方法也可能并非万能。而且,当时也觉得切换一下,总比重新配置省力,还要啥自行车呢。

     

     

    虽然此时,能ping通百度了:也能ping本地网络,但是sudo apt install xxx,安装软件的时候会失败。这就没啥用了,咱虚拟机访问互联网主要就是为了安装软件的

    1. lkmao@ubuntu:~$ ping www.baidu.com
    2. PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
    3. 64 bytes from 14.215.177.38: icmp_seq=12 ttl=55 time=15.2 ms

    总结

            不干不知道,世界真奇妙。

  • 相关阅读:
    计算机毕业设计之java+javaweb社区共享食堂信息系统
    LeetCode 104. 二叉树的最大深度
    C语言:练习题三
    【elasticsearch】搜索过程详解
    【探索Linux】—— 强大的命令行工具 P.23(线程池 —— 简单模拟)
    希望所有计算机专业同学看到这篇大一规划
    2023年上半年系统集成项目管理工程师什么时候报考?(附具体报名步骤)
    Win10共享打印机,别人连接不上出现无法连接到打印机错误码0x0000011b
    go-cqhttp调用接口
    PostgreSQL常用数据类型
  • 原文地址:https://blog.csdn.net/yueni_zhao/article/details/126891271