背景不说了,网上的教程查过之后感觉写的都挺复杂的,遂抛弃之。

在Windows下,如果要设置内外网同时可用,只需要两条命令:

#内外网连接上后,此时内外网的默认网关同时存在  
#1、清除两个默认网关  
#2、添加默认网关为外网网关  
#3、添加内网路由  
route delete 0.0.0.0  
route add -p 0.0.0.0 mask 0.0.0.0 192.92.48.1
route add -p 192.0.0.0 mask 255.0.0.0 192.92.36.1

说明:

1、 192.92.48.1是我的外网网关,通常来说,如果要设置的话,第二条命令只需要将外网网关改成你自己的网络环境里的外网网关

2、 192.92.36.1是我的内网网关,192.0.0.0 是我的内网的地址  255.0.0.0是子网掩码,这两个地址表示,ip地址为192开头的网络包都会走192.92.36.1这个路由。这个也要根据你自己的环境来设置。可能需要一些网络基础才行。

 

Ubuntu双网卡上网

依据windows下的双网卡上网原理,我推测如果是Ubuntu的话这么设置应该也可以。

不过Linux 的route命令设置路由要分成两条命令。

route add  -net {内网网段} netmask {子网掩码} 网卡名称(比如最常见的eth0)

route add -net {内网网段} netmask {子网掩码} gw {路由ip/网关IP}

以我的网络为例,先用ifconfig命令查看当前的网络信息。

#用ifconfig命令查看我的网卡名称和其他网络信息
终端返回的数据如下:
eth0      Link encap:以太网  硬件地址 6c:0b:84:0b:cd:2c  
          inet 地址:10.92.36.90  广播:10.92.36.255  掩码:255.255.255.0
          inet6 地址: fe80::6e0b:84ff:fe0b:cd2c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:89887 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:35575 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:21515279 (21.5 MB)  发送字节:4718843 (4.7 MB)
          中断:20 Memory:f7c00000-f7c20000 

lo        Link encap:本地环回  
          inet 地址:127.0.0.1  掩码:255.0.0.0
          inet6 地址: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  跃点数:1
          接收数据包:8632 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:8632 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:0 
          接收字节:649777 (649.7 KB)  发送字节:649777 (649.7 KB)

usb0      Link encap:以太网  硬件地址 be:1e:34:87:4c:4a  
          inet 地址:192.168.42.159  广播:192.168.42.255  掩码:255.255.255.0
          inet6 地址: fe80::bc1e:34ff:fe87:4c4a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:31 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:109 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:2924 (2.9 KB)  发送字节:19978 (19.9 KB)

从终端输出的信息可以看出,我的一个网卡名为eth0,另一个是usb0

eth0对应的是内网的环境,usb0对应的是外网的环境。

内网网段是10开头,路由/网关地址为10.92.36.1(可在Ubuntu的工具栏的网络图标那里查看)

外网的路由地址为192.168.42.129

设置外网的路由(route命令需要root权限),将外网路由为默认路由

route add -net 0.0.0.0/0 usb0
route add -net 0.0.0.0/0 gw 192.168.42.129

设置内网的路由

route add -net 10.0.0.0 255.0.0.0 eth0
route add -net 10.0.0.0 255.0.0.0 gw 10.92.36.1

也可以写成
route add -net 10.0.0.0/8 eth0
route add -net 10.0.0.0/8 gw 10.92.36.1

然后就可以上网了。

稍微解释下上面几个命令的意思:

       10.92.36.1是10开头的网络包的路由,不是10开头的ip包都走192.168.42.129. (默认路由的优先级较低)

 

这些命令可以保存到.sh文件中,方便使用。不过这些命令都不是永久的,如果是想设置成永久的可以接着看:

 

设置永久路由

sudo vim /etc/rc.local

然后将以上命令保存到rc.local文件中,我修改后的文本内容为:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

route add -net 0.0.0.0/0 usb0
route add -net 0.0.0.0/0 gw 192.168.42.129
route add -net 10.0.0.0/8 eth0
route add -net 10.0.0.0/8 gw 10.92.36.1

exit 0

保存之后,需要重启系统才能生效。

参考文章:

http://man.linuxde.net/route 感觉这个网站很好,Linux的每个基本命令讲的都很详细