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
留言
張貼留言