Ubuntu双网卡上网




from https://www.ubuntu-tw.org/modules/newbb/viewtopic.php?post_id=206692

Default gateway 或 default route

中文叫做 預設路由

預設路由 只能有一個,沒錯。

若有兩個預設路由的話,就會出錯。

在 Windows 上,不會遇到這問題的原因是它做了很多防呆設計,由系統自動幫你決定。所以,雖然你設錯了,但還是有可能會通。

在 linux 上,網路功能比較強大,所以系統不會去做幫你自動決定路由方向,路由概念不淸楚的話,設錯了就是不通。







from https://blog.csdn.net/dajiangqingzhou/article/details/82901666





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                 
保存之后,需要重启系统才能生效。
————————————————
版权声明:本文为CSDN博主「dajiangqingzhou」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dajiangqingzhou/article/details/82901666




留言

熱門文章