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

网页好读版