2011
Oct
24




因為工作需求,常要連回公司工作,公司使用的VPN軟體為Cisco Systems VPN Client,每次只要連上VPC軟體,就沒辦法用內部IP ,ssh 連到我的內部 Linux系統,網芳也無法使用,讓我沒辦法一邊上公司網站,一邊開發我的內部系統。

設備介紹

  • WindowsXP 內部 IP 192.168.0.2
  • 路由器內部 IP 192.168.0.1
  • 虛擬機:Oracle VM VirtualBox,裝一台 Linux 系統
  • Linux 系統內部 IP 192.168.0.3
  • 連回公司取得 IP xx.xx.xx.122

VirtualBox 中的Linux

  • 網路介面卡選擇 「橋接介面卡」,「window用的網卡」,Promiscuous「Allow All」
  • 網卡在系統中代號 eth0
Example
  1. /* /etc/sysconfig/network-scripts/ifcfg-eth0 */
  2. DEVICE=eth0
  3. ONBOOT=yes
  4. BOOTPROTO=static
  5. IPADDR=192.168.0.3
  6. NETMASK=255.255.255.0
  7. GATEWAY=192.168.0.1
  8. HWADDR=??:00:27:??:??:??

這時我在XP Ping 192.168.0.3,會失敗,後來查看 route table,發現Cisco 將所有的Destination指向公司的IP,導至內部ip全部失效。

Example
  1. c:\route print //看route table 分佈
  2. /*
  3. 會看到這行
  4. Network Destination Netmask Gateway Interface Metric
  5. 0.0.0.0 0.0.0.0 xx.xx.xx.122 xx.xx.xx.122 1
  6. 因為所有的 IP與 Netmask 做 & 運算後,都符合 route rule,所以全部被導向公司的IP,使得內部IP失效。
  7. */
  8. //刪除VPN的設定
  9. c:\route delete 0.0.0.0
  10. //加入原VPN設定但是將 metric改為2 (優先權往後調整)
  11. c:\route add 0.0.0.0 mask 0.0.0.0 xx.xx.x.122 metric 2
  12. //加入內部IP的 route rule 設定
  13. c:\route add 192.168.0.0 mask 255.255.255.0 192.168.0.2 metric 1

Netmask 運算

  • Network Destination = 192.168.0.0
  • Netmask = 255.255.255.0
  • Gateway = 192.168.0.2
  • 想連接的目標IP 192.168.0.3

這裡我假設 ND = Network Destination, NK = Netmask, GY = Gateway , 當 IP 與 NK 做 「&」 運算等於 ND 時 , 則網卡會將傳送給 IP 的封包,透過 GY 來轉送。

若目標 ( IP & Netmask = Network Destination) 則符合規則,封包將會被導到 Gateway , 而我想連接的IP是 192.168.0.3 , (192.168.0.3)&(255.255.255.0),剛好會等於192.168.0.0,所以封包會走 192.168.0.2 這條路線。

route 指令簡介

  • 檢視 route rule
Example
  1. c:\route print
  2. //輸入後會顯示網卡資訊及網卡代號
  3. 0x1 .................. MS TPC Loopback interface
  4. 0x2 ..............
  5. 0x40003 ........... Ethernet 10/100/1000Base
  6. //接著會有目前的route rule
  7. Network Destination Netmask Gateway Interface Metric
  8. x.x.x.x x.x.x.x x.x.x.x x.x.x.x 20
  • 新增 route rule
Example
  1. c:\route add 192.168.0.0 mask 255.255.255.0 192.168.0.2 metric 2
  2. //指定網卡代號 0x2 (if ==> interface)
  3. c:\route add 192.168.0.0 mask 255.255.255.0 192.168.0.2 if 0x2 metric 2
  • 修改 route rule
Example
  1. c:\route change 192.168.0.0 mask 255.255.255.0 192.168.0.2 metric 2
  • 刪除 route rule
Example
  1. c:\route delete 192.168.0.0
  • 新增永久的 route rule

route table 可能會因為網路設定而被重置,加上 -p 可以寫死route table

Example
  1. c:\route add 192.168.0.0 mask 255.255.255.0 192.168.0.2 metric 2 -p

回應 (Leave a comment)