1. 程式人生 > >FreeBSD下一塊網絡卡繫結多個IP

FreeBSD下一塊網絡卡繫結多個IP

假設網絡卡lnc0原IP地址為192.168.0.2,現在為它繫結另一個IP:

CODE

# ifconfig lnc0 192.168.0.3 netmask 255.255.255.255 alias



解釋:
CODE

如果別名IP地址和網絡卡原IP地址在同一個子網上,就需要設定掩碼為255.255.255.255
如果位於不同的子網,就直接使用相應子網的正常網路掩碼

從TCP/IP的角度來看,這樣做意味著什麼呢?
網路掩碼的所有位都設定成1,就會保證ICP/IP棧這樣來看待包:
只要包的目標地址匹配所有位,就把該包看成本地子網上的包;它建立了只有一個地址的“子網”。
所有傳送給該地址的包以及該地址接受的包都會發送給路由器,而不會發送到LAN上。
如果多個別名使用了同一個網路掩碼,這些別名的廣播地址也應該相同,而這樣卻導致了TCP/IP棧的混亂。
使用全1的網路掩碼,才能騙過ifconfig,讓該命令允許單個介面卡上有多個IP地址。



要在/etc/rc.conf中設定別名,應該使用 ifconfig_xxx#_alias# 關鍵字,該關鍵字的使用形式類似於 ifconfig_xxx#:

CODE

ifconfig_lnc0="inet 192.168.0.2 netmask 255.255.255.0"
ifconfig_lnc0_alias0="inet 192.168.0.3 netmask 255.255.255.255"
ifconfig_lnc0_alias1="inet 192.168.1.2 netmask 255.255.255.0"
ifconfig_lnc0_alias2="inet 192.168.1.3 netmask 255.255.255.255"