Linux 中的alias address

來源:互聯網
上載者:User

Linux 中的alias address

 

作者: 小馬哥 rstevens  (rstevens2008@hotmail.com)

歡迎轉載,未經允許,請勿用於商業目的

Linux 允許一個網路介面擁有多個 IPv4 地址,除了第一個地址外,其它的稱為 alias 地址

 

通過 ‘ifconfig’ 可以添加一個 alias 地址。例如以下命令,為 eth0 添加一個新的地址 192.168.2.2,

 

# ifconfig eth0:0 192.168.2.2

 

用 ‘ifconfig’ 可以看到系統中多了一個 eth0:0 的介面,但實際它不是介面,而是標籤 (label),只不過 ‘ifconfig’ 把它顯示成一個介面的樣子。核心中也並不存在這樣的 struct net_device 的結構。如果用工具 ‘ip’ 就可以更清楚的看到這一點。

 

在核心中,net_device 並不儲存 IP 位址,這是因為它是一個通用的結構,可用於不同的協議族,除了 IPv4,還可以用於 IPv6 或者其它協議族。

因此, IPv4 協議族有專門的結構:struct in_device

 

而這個結構中的 ifa_list 用於儲存 IPv4 地址

 

struct in_ifaddr   *ifa_list;

 

struct in_ifaddr

{

            struct in_ifaddr   *ifa_next;

            struct in_device  *ifa_dev;

            struct rcu_head              rcu_head;

            u32                               ifa_local;

            u32                               ifa_address;

            u32                               ifa_mask;

            u32                               ifa_broadcast;

            u32                               ifa_anycast;

            unsigned char                ifa_scope;

            unsigned char                ifa_flags;

            unsigned char                ifa_prefixlen;

            char                              ifa_label[IFNAMSIZ];

};

 

 

前面的 eth0:0 就儲存在這個結構的  ifa_label 成員中。

 

 

可以通過系統調用 ioctl() 來為介面設定一個 alias address。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.