• 练习 25:网络:配置文件,/etc/network/interfaces
    • 这样做
    • 你会看到什么
    • 解释
    • 附加题

    练习 25:网络:配置文件,/etc/network/interfaces

    原文:Exercise 25. Networking: configuration files, /etc/network/interfaces

    译者:飞龙

    协议:CC BY-NC-SA 4.0

    自豪地采用谷歌翻译

    从命令行配置网络接口是很好的,但现在是时候学习如何让vm1自动配置网络接口。为此,你将了解/etc/network/interfaces配置文件:

    1. user1@vm1:~$ cat /etc/network/interfaces
    2. # This file describes the network interfaces available on your system
    3. # and how to activate them. For more information, see interfaces(5).
    4. # The loopback network interface
    5. #(1) (2)
    6. auto lo
    7. #(3) (4)(5) (6)
    8. iface lo inet loopback
    9. # The primary network interface
    10. #(7) (8)
    11. allow-hotplug eth0
    12. #(9) (10) (11) (12)
    13. iface eth0 inet dhcp

    像往常一样,字段及其描述:

    字段 描述
    (1) 自动配置界面。
    (2) 接口名称。
    (3) 接口配置的开始
    (4) 要配置的接口名称
    (5) 此接口使用 TCP/IP 网络,IPv4。
    (6) 它是回送接口。默认回送地址将自动分配给它。
    (7) 在可用时自动配置接口(请在这里考虑 usb-modem)。
    (8) 接口名称。
    (9) 接口配置的开始
    (10) 要配置的接口名称
    (11) 此接口使用 TCP/IP 网络,IPv4。
    (12) 此接口通过 DHCP 自动获取其参数。

    其他包含网络配置的重要文件,但我们在这里不会碰到他们:

    • /etc/hosts - 操作系统中使用的计算机文件,用于将主机名映射到 IP 地址。hosts文件是一个纯文本文件,通常按照惯例命名为hosts
    • /etc/hostname - 分配给连接到计算机网络的设备的标签,并用于识别各种形式的电子通信设备。
    • /etc/resolv.conf - 各种操作系统中的计算机文件,用于配置域名系统( DNS)解析器库。该文件是纯文本文件,通常由网络管理员或管理系统配置任务的应用创建。resolvconf程序是 linux 机器上的这样的程序,它管理resolv.conf文件。

    让我们回忆之前练习的tap0。如果你重新启动vm1, 它就会消失。当然,你可以通过重新输入相关命令来启用它,但是让我们想象一下,你需要在重新启动后自动使用该命令。

    现在,你将学习如何使用/etc/network/interfaces文件来配置接口。

    这样做

    1. 1: ip a s
    2. 2: sudo vim /etc/network/interfaces

    现在将这些东西添加到配置文件末尾:

    1. 3: auto tap0
    2. 4: iface tap0 inet static
    3. 5: address 10.1.1.2
    4. 6: netmask 255.255.255.0
    5. 7: tunctl_user uml-net
    6. 8:
    7. 9: allow-hotplug tap1
    8. 10: iface tap1 inet static
    9. 11: address 10.1.1.3
    10. 12: netmask 255.255.255.0

    现在键入:wq<ENTER>并继续:

    1. 13: sudo /etc/init.d/networking start
    2. 14: ip a s
    3. 15: sudo tunctl -t tap1 -u uml-net
    4. 16: ip a s

    你会看到什么

    1. user1@vm1:~$ ip a s
    2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    3. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    4. inet 127.0.0.1/8 scope host lo
    5. inet6 ::1/128 scope host
    6. valid_lft forever preferred_lft forever
    7. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    8. link/ether 08:00:27:d4:45:68 brd ff:ff:ff:ff:ff:ff
    9. inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
    10. inet6 fe80::a00:27ff:fed4:4568/64 scope link
    11. valid_lft forever preferred_lft forever
    12. user1@vm1:~$ sudo vim /etc/network/interfaces
    13. # and how to activate them. For more information, see interfaces(5).
    14. # The loopback network interface
    15. auto lo
    16. iface lo inet loopback
    17. # The primary network interface
    18. allow-hotplug eth0
    19. iface eth0 inet dhcp
    20. auto tap0
    21. iface tap0 inet static
    22. address 10.2.2.2
    23. netmask 255.255.255.0
    24. tunctl_user uml-net
    25. allow-hotplug tap1
    26. iface tap1 inet static
    27. address 10.3.3.3
    28. netmask 255.255.255.0
    29. ~
    30. "/etc/network/interfaces" 21L, 457C written 21,1-8 Bot
    31. user1@vm1:~$ sudo /etc/init.d/networking start
    32. Configuring network interfaces...Set 'tap0' persistent and owned by uid 104 done.
    33. user1@vm1:~$ ip a s
    34. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    35. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    36. inet 127.0.0.1/8 scope host lo
    37. inet6 ::1/128 scope host
    38. valid_lft forever preferred_lft forever
    39. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    40. link/ether 08:00:27:d4:45:68 brd ff:ff:ff:ff:ff:ff
    41. inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
    42. inet6 fe80::a00:27ff:fed4:4568/64 scope link
    43. valid_lft forever preferred_lft forever
    44. 3: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
    45. link/ether 46:63:30:70:b5:21 brd ff:ff:ff:ff:ff:ff
    46. inet 10.2.2.2/24 brd 10.2.2.255 scope global tap0
    47. inet6 fe80::4463:30ff:fe70:b521/64 scope link
    48. valid_lft forever preferred_lft forever
    49. user1@vm1:~$ sudo tunctl -t tap1 -u uml-net
    50. Set 'tap1' persistent and owned by uid 104
    51. user1@vm1:~$ ip a s
    52. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    53. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    54. inet 127.0.0.1/8 scope host lo
    55. inet6 ::1/128 scope host
    56. valid_lft forever preferred_lft forever
    57. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    58. link/ether 08:00:27:d4:45:68 brd ff:ff:ff:ff:ff:ff
    59. inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
    60. inet6 fe80::a00:27ff:fed4:4568/64 scope link
    61. valid_lft forever preferred_lft forever
    62. 3: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
    63. link/ether 46:63:30:70:b5:21 brd ff:ff:ff:ff:ff:ff
    64. inet 10.2.2.2/24 brd 10.2.2.255 scope global tap0
    65. inet6 fe80::4463:30ff:fe70:b521/64 scope link
    66. valid_lft forever preferred_lft forever
    67. 4: tap1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
    68. link/ether 8a:ed:90:33:93:55 brd ff:ff:ff:ff:ff:ff
    69. inet 10.3.3.3/24 brd 10.3.3.255 scope global tap1
    70. inet6 fe80::88ed:90ff:fe33:9355/64 scope link
    71. valid_lft forever preferred_lft forever
    72. user1@vm1:~$

    解释

    1. 打印当前接口配置。
    2. 编辑/etc/network/interfaces
    3. 自动配置tap0
    4. tap0设置以下 IPv4 静态参数。
    5. 将 IP 地址10.2.2.2添加给tap0
    6. 为此 IP 地址指定网络掩码、参数“广播”和“网络”自动 从这个网络掩码导出。
    7. 指定拥有tap0接口的用户。
    8. 由于可读性的空行。
    9. tap1接口出现在系统中时,添加以下参数。
    10. tap1设置以下 IPv4 静态参数。
    11. 将 IP 地址10.3.3.3添加给tap1。
    12. 为此 IP 地址指定网络掩码。
    13. 应用网络配置更改。
    14. 打印当前接口配置。你可以看到tap0被添加到接口列表中。
    15. 添加tap1伪接口。
    16. 打印当前接口配置。你可以看到`/etc/network/interfaces中指定的参数自动应用于它。

    附加题

    • 说明如何导出“网络”和“广播”参数。
    • 尝试这个:ping kitty。预期会失败。现在添加一个条目到/etc/hosts,以便你能够成功执行ping