有時候你可能想在你的網卡上使用多個 ip 位址。遇到這種情況你會怎麼辦呢?買一個新的網卡并配置設定一個新的 ip?不,沒有這個必要(至少在小型網絡中)。現在我們可以在 ubuntu 系統中為一個網卡配置設定多個 ip 位址。想知道怎麼做到的?跟着我往下看,其實并不難。
這個方法也适用于 debian 以及它的衍生版本。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnausmdxdTM5IjMmFjet1Wb5MHNwgzMyIzLcVDMvwVMwYTMwIzLc1WdixWYvwFduVWboNWY0RXYvwVY0FGZvwVZt5CevJWcu42Y4VnbpxWLuR2Lc9CX6MHc0RHaiojIsJye.jpg)
<a></a>
首先,讓我們找到網卡的 ip 位址。在我的 ubuntu 15.10 伺服器版中,我隻使用了一個網卡。
運作下面的指令找到 ip 位址:
<code>sudo ip addr</code>
樣例輸出:
<code>1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state unknown group default</code>
<code>link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00</code>
<code>inet 127.0.0.1/8 scope host lo</code>
<code>valid_lft forever preferred_lft forever</code>
<code>inet6 ::1/128 scope host</code>
<code>2: enp0s3: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state up group default qlen 1000</code>
<code>link/ether 08:00:27:2a:03:4b brd ff:ff:ff:ff:ff:ff</code>
<code>inet 192.168.1.103/24 brd 192.168.1.255 scope global enp0s3</code>
<code>inet6 fe80::a00:27ff:fe2a:34e/64 scope link</code>
或
<code>sudo ifconfig</code>
<code>enp0s3 link encap:ethernet hwaddr 08:00:27:2a:03:4b</code>
<code>inet addr:192.168.1.103 bcast:192.168.1.255 mask:255.255.255.0</code>
<code>inet6 addr: fe80::a00:27ff:fe2a:34e/64 scope:link</code>
<code>up broadcast running multicast mtu:1500 metric:1</code>
<code>rx packets:186 errors:0 dropped:0 overruns:0 frame:0</code>
<code>tx packets:70 errors:0 dropped:0 overruns:0 carrier:0</code>
<code>collisions:0 txqueuelen:1000</code>
<code>rx bytes:21872 (21.8 kb) tx bytes:9666 (9.6 kb)</code>
<code>lo link encap:local loopback</code>
<code>inet addr:127.0.0.1 mask:255.0.0.0</code>
<code>inet6 addr: ::1/128 scope:host</code>
<code>up loopback running mtu:65536 metric:1</code>
<code>rx packets:217 errors:0 dropped:0 overruns:0 frame:0</code>
<code>tx packets:217 errors:0 dropped:0 overruns:0 carrier:0</code>
<code>collisions:0 txqueuelen:0</code>
<code>rx bytes:38793 (38.7 kb) tx bytes:38793 (38.7 kb)</code>
正如你在上面輸出中看到的,我的網卡名稱是 enp0s3,它的 ip 位址是 192.168.1.103。
現在讓我們來為網卡添加一個新的 ip 位址,例如說 192.168.1.104。
打開你的終端并運作下面的指令添加額外的 ip。
<code>sudo ip addr add 192.168.1.104/24 dev enp0s3</code>
用指令檢查是否啟用了新的 ip:
<code>sudo ip address show enp0s3</code>
<code>link/ether 08:00:27:2a:03:4e brd ff:ff:ff:ff:ff:ff</code>
<code>inet 192.168.1.104/24 scope global secondary enp0s3</code>
類似地,你可以添加任意數量的 ip 位址,隻要你想要。
讓我們 ping 一下這個 ip 位址驗證一下。
<code>sudo ping 192.168.1.104</code>
樣例輸出
<code>ping 192.168.1.104 (192.168.1.104) 56(84) bytes of data.</code>
<code>64 bytes from 192.168.1.104: icmp_seq=1 ttl=64 time=0.901 ms</code>
<code>64 bytes from 192.168.1.104: icmp_seq=2 ttl=64 time=0.571 ms</code>
<code>64 bytes from 192.168.1.104: icmp_seq=3 ttl=64 time=0.521 ms</code>
<code>64 bytes from 192.168.1.104: icmp_seq=4 ttl=64 time=0.524 ms</code>
好極了,它能工作!
要删除 ip,隻需要運作:
<code>sudo ip addr del 192.168.1.104/24 dev enp0s3</code>
再檢查一下是否删除了 ip。
可以看到已經沒有了!!
正如你所知,重新開機系統後這些設定會失效。那麼怎麼設定才能永久有效呢?這也很簡單。
ubuntu 系統的網卡配置檔案是 /etc/network/interfaces。
讓我們來看看上面檔案的具體内容。
<code>sudo cat /etc/network/interfaces</code>
輸出樣例:
<code># this file describes the network interfaces available on your system</code>
<code># and how to activate them. for more information, see interfaces(5).</code>
<code>source /etc/network/interfaces.d/*</code>
<code># the loopback network interface</code>
<code>auto lo</code>
<code>iface lo inet loopback</code>
<code># the primary network interface</code>
<code>auto enp0s3</code>
<code>iface enp0s3 inet dhcp</code>
正如你在上面輸出中看到的,網卡啟用了 dhcp。
現在,讓我們來配置設定一個額外的位址,例如 192.168.1.104/24。
編輯 /etc/network/interfaces:
<code>sudo nano /etc/network/interfaces</code>
如下添加額外的 ip 位址。
<code>iface enp0s3 inet static</code>
<code>address 192.168.1.104/24</code>
儲存并關閉檔案。
運作下面的指令使更改無需重新開機即生效。
<code>sudo ifdown enp0s3 && sudo ifup enp0s3</code>
<code>killed old client process</code>
<code>internet systems consortium dhcp client 4.3.1</code>
<code>copyright 2004-2014 internet systems consortium.</code>
<code>all rights reserved.</code>
<code>for info, please visit https://www.isc.org/software/dhcp/</code>
<code>listening on lpf/enp0s3/08:00:27:2a:03:4e</code>
<code>sending on lpf/enp0s3/08:00:27:2a:03:4e</code>
<code>sending on socket/fallback</code>
<code>dhcprelease on enp0s3 to 192.168.1.1 port 67 (xid=0x225f35)</code>
<code>dhcpdiscover on enp0s3 to 255.255.255.255 port 67 interval 3 (xid=0xdfb94764)</code>
<code>dhcprequest of 192.168.1.103 on enp0s3 to 255.255.255.255 port 67 (xid=0x6447b9df)</code>
<code>dhcpoffer of 192.168.1.103 from 192.168.1.1</code>
<code>dhcpack of 192.168.1.103 from 192.168.1.1</code>
<code>bound to 192.168.1.103 -- renewal in 35146 seconds.</code>
注意:如果你從遠端連接配接到伺服器,把上面的兩個指令放到一行中非常重要,因為第一個指令會斷掉你的連接配接。而采用這種方式可以保留你的 ssh 會話。
現在,讓我們用下面的指令來檢查一下是否添加了新的 ip:
<code>inet 192.168.1.104/24 brd 192.168.1.255 scope global secondary enp0s3</code>
很好!我們已經添加了額外的 ip。
再次 ping ip 位址進行驗證。
<code>64 bytes from 192.168.1.104: icmp_seq=1 ttl=64 time=0.137 ms</code>
<code>64 bytes from 192.168.1.104: icmp_seq=2 ttl=64 time=0.050 ms</code>
<code>64 bytes from 192.168.1.104: icmp_seq=3 ttl=64 time=0.054 ms</code>
<code>64 bytes from 192.168.1.104: icmp_seq=4 ttl=64 time=0.067 ms</code>
好極了!它能正常工作。就是這樣。
想知道怎麼給 centos/rhel/scientific linux/fedora 系統添加額外的 ip 位址,可以點選下面的連結。
<a href="https://linux.cn/article-5127-1.html">在centos 7上給一個網卡配置設定多個ip位址</a>
工作愉快!
本文來自雲栖社群合作夥伴“linux中國”
原文釋出時間為:2013-04-02.