deepin(debian)中双网卡上内外网的设置方法(通过NetworkManager运行脚本)
国产良心操作系统deepin,界面好看,反应速度快,开箱即用,深度商店里有非常多好用的linux、windows软件,其windows软件通过crossover进行运行,还可以运行一些安卓的apk程序,非常的方便,值得一试,是时候扔掉windows了,windows太容易中毒了,软件虽多,但那些破解版注册版都好像带着病毒,中国的好多软件都是流氓软件,inux下都是开源软件,大部分都是外国爱好者所写,很少有带病毒和流氓软件的,而且都可以免费使用,基本上在windows上的软件都有linux的开源软件替代品。这是我下决心使用deepin作为实体机桌面系统的原因。办公室有内网和外网,而办公机上有固定网卡和无线网卡两块网卡,于是可以用固定网卡上内网,用无线网卡连接外网,做到内外通吃。
一、系统环境:
操作系统:deepin 15.3
有线网卡:ens33:设置静态网址:10.1.162.128,子网掩码:255.255.255.0,网关:10.1.162.1
无线网卡:wlx640980616015:设置静态网址:192.168.1.128,子网掩码:255.255.255.0,网关:192.168.1.1
二、设置路由:
进入终端界面,切换为root身份,查看路由表:
#route
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.1.162.1 0.0.0.0 UG 200 0 0 ens33
default xyun.co 0.0.0.0 UG 600 0 0 wlx640980616015
10.1.162.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 wlx640980616015
两块网卡都连接上时,会产生两个默认路由,所以默认使用第一个默认路由,只能访问内网,第二个默认路由没有用,外网无法访问,要访问外网,就要关闭内网,留下第二个默认路由,并从此路由访问,如果要内外网都在线,并能各自走自己的路由,那就非常完美了,为此我们要删除掉内网默认路由,并配置一个内网访问时走的路由,在终端输入:
#route del -net default netmask 0.0.0.0 dev ens33
#route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.1.162.1 dev ens33
第一条语句是删除掉默认内网的路由,第二条语句添加10打头的网段(内网)都走此路由,重启网络服务:
#systemctl restart networking.service
即可实现内外网皆可访问,但这样的修改在操作系统重启之后,就又会还原为以前的路由状态,要实现自动修改为内外网可用的路由表该怎么办呢?在百度上查找了许多资料,都说时把上面两条语句放到/etc/rc.local中,实现启动时就修改路由,经过无数次实验发现都是不行的,查看日志都出现错误,找不到网络路径,在/etc/rc.local中写了一条route > /routetest.txt,重启后查看routetest.txt发现只有标题头,没有路由信息,根本还没有生成路由表,所以这些命令肯定出错,经过在deepin官网上搜索和研究发现,deepin使用NetworkManager来管理网络,可以让NetworkManager在启动时来运行脚本进行修改路由操作,具体帮助可以看看archlinux的wiki:https://wiki.archlinux.org/index.php/NetworkManager_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87),查找dispatch,查看”使用 NetworkManager 调度网络服务“这个章节,先使NetworkManager-dispatcher.service在开机时启动:
#systemctl enable NetworkManager-dispatcher.service
然后在/etc/NetworkManager/dispatcher.d/目录下新建一个脚本文件02myroutes,内容如下:
#!/bin/bash
route del -net default netmask 0.0.0.0 dev ens33
route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.1.162.1 dev ens33
保存后,重启系统验证成功,我想只要通过NetworkManager管理网络的linux系统都可以照此法设置。