# 練習 25:網絡:配置文件,`/etc/network/interfaces`
> 原文:[Exercise 25. Networking: configuration files, /etc/network/interfaces](https://archive.fo/ckUKJ)
> 譯者:[飛龍](https://github.com/wizardforcel)
> 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻譯](https://translate.google.cn/)
從命令行配置網絡接口是很好的,但現在是時候學習如何讓`vm1`自動配置網絡接口。為此,你將了解`/etc/network/interfaces`配置文件:
```
user1@vm1:~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
#(1) (2)
auto lo
#(3) (4)(5) (6)
iface lo inet loopback
# The primary network interface
#(7) (8)
allow-hotplug eth0
#(9) (10) (11) (12)
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: ip a s
2: sudo vim /etc/network/interfaces
```
現在將這些東西添加到配置文件末尾:
```
3: auto tap0
4: iface tap0 inet static
5: address 10.1.1.2
6: netmask 255.255.255.0
7: tunctl_user uml-net
8:
9: allow-hotplug tap1
10: iface tap1 inet static
11: address 10.1.1.3
12: netmask 255.255.255.0
```
現在鍵入`:wq<ENTER>`并繼續:
```
13: sudo /etc/init.d/networking start
14: ip a s
15: sudo tunctl -t tap1 -u uml-net
16: ip a s
```
## 你會看到什么
```
user1@vm1:~$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:d4:45:68 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
inet6 fe80::a00:27ff:fed4:4568/64 scope link
valid_lft forever preferred_lft forever
user1@vm1:~$ sudo vim /etc/network/interfaces
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
auto tap0
iface tap0 inet static
address 10.2.2.2
netmask 255.255.255.0
tunctl_user uml-net
allow-hotplug tap1
iface tap1 inet static
address 10.3.3.3
netmask 255.255.255.0
~
"/etc/network/interfaces" 21L, 457C written 21,1-8 Bot
user1@vm1:~$ sudo /etc/init.d/networking start
Configuring network interfaces...Set 'tap0' persistent and owned by uid 104 done.
user1@vm1:~$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:d4:45:68 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
inet6 fe80::a00:27ff:fed4:4568/64 scope link
valid_lft forever preferred_lft forever
3: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether 46:63:30:70:b5:21 brd ff:ff:ff:ff:ff:ff
inet 10.2.2.2/24 brd 10.2.2.255 scope global tap0
inet6 fe80::4463:30ff:fe70:b521/64 scope link
valid_lft forever preferred_lft forever
user1@vm1:~$ sudo tunctl -t tap1 -u uml-net
Set 'tap1' persistent and owned by uid 104
user1@vm1:~$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:d4:45:68 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
inet6 fe80::a00:27ff:fed4:4568/64 scope link
valid_lft forever preferred_lft forever
3: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether 46:63:30:70:b5:21 brd ff:ff:ff:ff:ff:ff
inet 10.2.2.2/24 brd 10.2.2.255 scope global tap0
inet6 fe80::4463:30ff:fe70:b521/64 scope link
valid_lft forever preferred_lft forever
4: tap1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether 8a:ed:90:33:93:55 brd ff:ff:ff:ff:ff:ff
inet 10.3.3.3/24 brd 10.3.3.255 scope global tap1
inet6 fe80::88ed:90ff:fe33:9355/64 scope link
valid_lft forever preferred_lft forever
user1@vm1:~$
```
## 解釋
1. 打印當前接口配置。
1. 編輯`/etc/network/interfaces`。
1. 自動配置`tap0`。
1. 為`tap0`設置以下 IPv4 靜態參數。
1. 將 IP 地址`10.2.2.2`添加給`tap0`。
1. 為此 IP 地址指定網絡掩碼、參數“廣播”和“網絡”自動 從這個網絡掩碼導出。
1. 指定擁有`tap0`接口的用戶。
1. 由于可讀性的空行。
1. 在`tap1`接口出現在系統中時,添加以下參數。
1. 為`tap1`設置以下 IPv4 靜態參數。
1. 將 IP 地址`10.3.3.3`添加給tap1。
1. 為此 IP 地址指定網絡掩碼。
1. 應用網絡配置更改。
1. 打印當前接口配置。你可以看到`tap0`被添加到接口列表中。
1. 添加`tap1`偽接口。
1. 打印當前接口配置。你可以看到`/etc/network/interfaces中指定的參數自動應用于它。
## 附加題
+ 說明如何導出“網絡”和“廣播”參數。
+ 嘗試這個:`ping kitty`。預期會失敗。現在添加一個條目到`/etc/hosts`,以便你能夠成功執行`ping`。
- 笨辦法學 Linux 中文版
- 練習 0:起步
- 練習 1:文本編輯器,vim
- 練習 2:文本瀏覽器,少即是多
- 練習 3:Bash:Shell、.profile、.bashrc、.bash_history
- 練習 4:Bash:處理文件,pwd,ls,cp,mv,rm,touch
- 練習 5:Bash:環境變量,env,set,export
- 練習 6:Bash:語言設置,LANG,locale,dpkg-reconfigure locales
- 練習 7:Bash:重定向,stdin,stdout,stderr,<,>,>>,|,tee,pv
- 練習 8:更多的重定向和過濾:head,tail,awk,grep,sed
- 練習 9:Bash:任務控制,jobs,fg
- 練習 10:Bash:程序退出代碼(返回狀態)
- 練習 11:總結
- 練習 12:文檔:man,info
- 練習 13:文檔:Google
- 練習 14:包管理:Debian 包管理工具aptitude
- 練習 15:系統啟動:運行級別,/etc/init.d,rcconf,update-rc.d
- 練習 16:處理進程,ps,kill
- 練習 17:任務調度:cron,at
- 練習 18:日志:/var/log,rsyslog,logger
- 練習 19:文件系統:掛載,mount,/etc/fstab
- 練習 20:文件系統:修改和創建文件系統,tune2fs,mkfs
- 練習 21:文件系統:修改根目錄,chroot
- 練習 22:文件系統:移動數據,tar,dd
- 練習 23:文件系統:權限,chown,chmod,umask
- 練習 24:接口配置,ifconfig,netstat,iproute2,ss,route
- 練習 25:網絡:配置文件,/etc/network/interfaces
- 練習 26:網絡:封包過濾配置,iptables
- 練習 27:安全 Shell,ssh,sshd,scp
- 練習 28:性能:獲取性能情況,uptime,free,top
- 練習 29:內核:內核消息,dmesg
- 練習 30:打磨、洗練、重復:總復習
- 下一步做什么
- Debian 手動安裝