歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 如何在Linux機器上設定IP別名

如何在Linux機器上設定IP別名

日期:2017/2/27 9:28:42   编辑:更多Linux
  指令:    * 首先載入 IP Alias 模組(如果你將它編譯進核心可跳過此步驟):    /sbin/insmod /lib/modules/`uname -r`/ipv4/ip_alias.o    * 再來,建立回繞(loopback)裝置,以及 eth0 界面上以主 IP 號碼為開頭的所有 IP  號碼:    /sbin/ifconfig lo 127.0.0.1  /sbin/ifconfig eth0 up  /sbin/ifconfig eth0 172.16.3.1  /sbin/ifconfig eth0:0 172.16.3.10  /sbin/ifconfig eth0:1 172.16.3.100    172.16.3.1 是主 IP 號碼,而 .10 及 .100 是別名.比較奇怪的地方是 eth0:x,  其中 x=0, 1, 2, ... n 在每一不同的 IP 號碼上.主 IP 號碼不需要這個.    * 第三步是建立遞送路徑.首先,遞送到回繞裝置,然後是區域網路,最後是不同的  IP 號碼及預設遞送路徑:    /sbin/route add -net 127.0.0.0  /sbin/route add -net 172.16.3.0 dev eth0  /sbin/route add -host 172.16.3.1 dev eth0  /sbin/route add -host 172.16.3.10 dev eth0:0  /sbin/route add -host 172.16.3.100 dev eth0:1  /sbin/route add default gw 172.16.3.200    就這樣了.    在上面的例子中,為了說明我用的是 RFC 1918 所定義的私用 IP 號碼.用你正式或  私有的 IP 號碼來取代它.    上面的例子只展示了三個 IP 號碼.在 /usr/include/Linux/net_alias.h 中定義的  最大值是 256.在一片網路卡上 256 個 IP 號碼已經很多了 :-)!    我用 /sbin/ifconfig 看起來像這樣:    lo Link encap:Local Loopback  inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0  UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1  RX packets:5088 errors:0 dropped:0 overruns:0  TX packets:5088 errors:0 dropped:0 overruns:0    eth0 Link encap:10Mbps Ethernet HWaddr 00:8E:B8:83:19:20  inet addr:172.16.3.1 Bcast:172.16.3.255 Mask:255.255.255.0  UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1  RX packets:334036 errors:0 dropped:0 overruns:0  TX packets:11605 errors:0 dropped:0 overruns:0  Interrupt:7 Base address:0x378    eth0:0 Link encap:10Mbps Ethernet HWaddr 00:8E:B8:83:19:20  inet addr:172.16.3.10 Bcast:172.16.3.255 Mask:255.255.255.0  UP BROADCAST RUNNING MTU:1500 Metric:1  RX packets:0 errors:0 dropped:0 overruns:0  TX packets:0 errors:0 dropped:0 overruns:0    eth0:1 Link encap:10Mbps Ethernet HWaddr 00:8E:B8:83:19:20  inet addr:172.16.3.100 Bcast:172.16.3.255 Mask:255.255.255.0  UP BROADCAST RUNNING MTU:1500 Metric:1  RX packets:1 errors:0 dropped:0 overruns:0  TX packets:0 errors:0 dropped:0 overruns:0    而 /proc/net/aliases 是    device family address  eth0:0 2 172.16.3.10  eth0:1 2 172.16.3.100    而 /proc/net/alias_types 是    type name n_attach  2 ip 2    當然,/proc/net 的內容是由 ifconfig 指令產生而非用手寫的!    問: 如何在重新啟動機器後保持設定?  答: 不論你是用 BSD 形式或是 SysV 形式(例如 Red Hat)的 init 啟動,你都可以把它  放在 /etc/rc.d/rc.local 中.下面是我在我的 SysV init 系統(Red Hat 3.0.3  及 4.0)中的設定:    * 我的 /etc/rc.d/rc.local: (修改過只顯示相關的部份)    #setting up IP alias interfaces  echo "Setting 172.16.3.1, 172.16.3.10, 172.16.3.100 IP Aliases ..."  /sbin/ifconfig lo 127.0.0.1  /sbin/ifconfig eth0 up  /sbin/ifconfig eth0 172.16.3.1  /sbin/ifconfig eth0:0 172.16.3.10  /sbin/ifconfig eth0:1 172.16.3.100  #setting up the routes  echo "Setting IP routes ..."  /sbin/route add -net 127.0.0.0  /sbin/route add -net 172.16.3.0 dev eth0  /sbin/route add -host 172.16.3.1 eth0  /sbin/route add -host 172.16.3.10 eth0:0  /sbin/route add -host 172.16.3.100 eth0:1  /sbin/route add default gw 172.16.3.200  #    問: 我如何在具 IP 別名的機器上在不同的 IP 別名號碼上接收電子郵件(在一部用  sendmail 的機器上)?  答: * 建立(如果還沒有的話)一個檔案,例如叫 /etc/mynames.cw.不需要真的是這個  名字,也不一定要放在 /etc 目錄下.    * 在那個檔案中,放上別名 IP 號碼的完整領域名稱.如果別名的 IP 沒有領域名  稱,你可以用這個 IP 本身.    /etc/mynames.cw:  ----------------  # /etc/mynames.cw - include all aliases for your machine here; # is a comment.  domain.one.net  domain.two.com  domain.three.org  4.5.6.7    * 在你的 sendmail.cf 檔中,在它定義檔案類別巨集 Fw 的地方,加上:    .  .  .  ##################  # local info #  ##################  .  .  # file containing names of hosts for which we receive email  Fw/etc/mynames.cw  .  .  .    * 這樣應該就可以了.以測試模式執行 sendmail 以測試新的設定:    ganymede$ /usr/lib/sendmail -BT  ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)  Enter < ruleset> < address>  > 0 [email protected]  rewrite: ruleset 0 input: me @ 4 . 5 . 6 . 7  rewrite: ruleset 98 input: me @ 4 . 5 . 6 . 7  rewrite: ruleset 98 returns: me @ 4 . 5 . 6 . 7  rewrite: ruleset 97 input: me @ 4 . 5 . 6 . 7  rewrite: ruleset 3 input: me @ 4 . 5 . 6 . 7  rewrite: ruleset 96 input: me < @ 4 . 5 . 6 . 7 >  rewrite: ruleset 96 returns: me < @ 4 . 5 . 6 . 7 . >  rewrite: ruleset 3 returns: me < @ 4 . 5 . 6 . 7 . >  rewrite: ruleset 0 input: me < @ 4 . 5 . 6 . 7 . >  rewrite: ruleset 98 input: me < @ 4 . 5 . 6 . 7 . >  rewrite: ruleset 98 returns: me < @ 4 . 5 . 6 . 7 . >  rewrite: ruleset 0 returns: $# local $: me  rewrite: ruleset 97 returns: $# local $: me  rewrite: ruleset 0 returns: $# local $: me  > 0 [email protected]  rewrite: ruleset 0 input: me @ 4 . 5 . 6 . 8  rewrite: ruleset 98 input: me @ 4 . 5 . 6 . 8  rewrite: ruleset 98 returns: me @ 4 . 5 . 6 . 8  rewrite: ruleset 97 input: me @ 4 . 5 . 6 . 8  rewrite: ruleset 3 input: me @ 4 . 5 . 6 . 8  rewrite: ruleset 96 input: me < @ 4 . 5 . 6 . 8 >  rewrite: ruleset 96 returns: me < @ 4 . 5 . 6 . 8 >  rewrite: ruleset 3 returns: me < @ 4 . 5 . 6 . 8 >  rewrite: ruleset 0 input: me < @ 4 . 5 . 6 . 8 >  rewrite: ruleset 98 input: me < @ 4 . 5 . 6 . 8 >  rewrite: ruleset 98 returns: me < @ 4 . 5 . 6 . 8 >  rewrite: ruleset 95 input: < > me < @ 4 . 5 . 6 . 8 >  rewrite: ruleset 95 returns: me < @ 4 . 5 . 6 . 8 >  rewrite: ruleset 0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 >  rewrite: ruleset 97 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 >  rewrite: ruleset 0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 . 6 . 8 >  >    注意,當我測試 [email protected] 時,它將信件送到本地機器上,因為 [email protected] 會  被 smtp mailer 拒絕.這是正常的回應.    * 所有都設定完成了.    希望前面說的對某些人有用.    感謝那些在 Linux 及 IP 別名上做了偉大貢獻的人們.還有特別感謝 Juan Jose  Ciarlante 澄清我的疑問.還有感謝那些為我找出打字錯誤及提供建議的人!    好好享受吧




Copyright © Linux教程網 All Rights Reserved