天天看点

【树莓派】双网卡添加多路由静态路由持久化的问题处理怎样删除路由

在实际现场遇到这样一个问题,双网卡添加多路由静态路由持久化的问题,后来经过尝试,最终使用一种比较挫的办法解决了,但我认为只是一个临时解决方案,这里暂时补录于下,下次再出现问题用于回朔。

一.问题:

客户现场的网络有一定限制,外网网段为:192.168.0.*网段,内网为 192.168.12.*网段,但内网需要和另外两台机器(192.168.104.198、192.168.254.111)互通,配置成 static ip_address=192.168.12.22/16 或者 static ip_address=192.168.12.22/8,结果并不生效;子网wlan限制比较麻烦;

而在树莓派上面配置的网络情况如下:

<a></a>

网络重启之后,可见结果如下:

二.处理办法

尝试了如下解决办法:

1.直接修改/etc/dhcpcd.conf的配置信息:static ip_address=192.168.12.22/16 或者 static ip_address=192.168.12.22/8;

结果:不生效;

2.手动添加路由:

添加之后,可见网络连通;

将这些内容写在 /etc/rc.local中,可见并无效果。

手动强制source:

结果OK!

3.或者直接添加192.168.0.0网段,并编写配置开机启动脚本:

但是我们还需要能够自动添加,开机启动就增加,而不是需要每次人工去启动,于是增加在 /etc/rc.local中。

但是重启之后,却并没有生效,持久化有问题,得继续处理。

开机启动脚本:

然后加入chkconfig中

重启之后,还是存在问题。

Be aware that the latest version of Raspbian Jessie (12/30/2016) contains a flaw in the second line of the interfaces file. The second line is missing the leading # symbol to designate the line as a comment. This problem causes the interfaces file to be unreadable by the system. I spent many hours trying to get my wifi to work before I found this error.

To fix it, simply add a # symbol to the start of the line.

需要配置dns之类信息,但其实我们之前早已做了配置。这些解释对有需要的人可以在读一读:

interface = the name of the network connection; this should be either eth0 or wlan0 for 99% of us home users

static ip_address = the address you want to force your Pi to use. It is unknown to me why we put the /24 at the end there. Maybe some kind soul can ELI5 in the comments here.

static routers = your gateway / router on the LAN the Pi will connect to.

static domain_name_servers = the DNS server you want the Pi to connect to when it can’t resolve a network address. 8.8.8.8 is the free Google DNS server but use whatever you prefer there.

看来和系统有一定关系,于是尝试 /etc/init.d/rc.local等文件修改。但是还没生效。

4.解决办法:

树莓派的配置信息在 /etc/network/interfaces 下:

但是还需要开机自动执行。

最终采用crontab去实现,结果OK;

sudo vi /etc/network/netmu.sh

内容为:

添加到crontab中:

保存退出。

三.其他补充:

redhat 或者fedora系列类,永久静态路由是添加在/etc/sysconfig/network-scripts目录下对应设备文件中。

route add命令可以用来添加一条新路由到你的服务器,直到下一次重启。这个方法的优势是在所有版本的Linux中都通用,而且在man里面都有详细的说明。在我们的例子里,10.0.0.0网络前面有-net参数,子网掩码和网关前面也分别有netmask和gw参数。

如果你想为一个单独的服务器添加路由,那么应该使用-host参数,而且不设子网掩码值(route命令会自动知道子网掩码是255.255.255.255)。这里是为机器10.0.0.1添加路由的例子。

如果想要这个变化在重启后也能持续,一个通用的方法是把route add命令添加到<code>/etc/rc.d/rc.local</code>文件中,它会始终在启动过程结束前运行。

在Fedora Linux中,永久静态路由是添加在<code>/etc/sysconfig/network-scripts</code>目录下对应设备文件中的。文件名的格式是route-网络设备名称,所以<code>wlan0</code>设备对应的文件名是<code>route-wlan0</code>

该文件的格式很直观,第一行是目标网络加上单词via和网关的IP地址。在我们的例子中,要设置一个到通过网关192.168.1.254 到网络10.0.0.0的路由,子网掩码是255.0.0.0(一个头8位都是1的掩码),我们像这样设置<code>/etc/sysconfig/network-scripts/route-wlan0</code>文件:

注意: 文件名<code>/etc/sysconfig/network-scripts/route-*</code>非常重要。在route-后面添加了错误的设备后缀会导致下次启动后路由不能被正确添加。而且不会在屏幕上报告错误或者在<code>/var/log/</code>目录下生成任何日志文件。

你可以通过运行<code>/etc/sysconfig/network-scripts/ifup-routes</code>命令加设备名作为参数测试新建的文件。在下面例子里,我们先检查路由表查看没有到网络10.0.0.0的路由,然后执行<code>ifup-routes</code>命名把路由加上。

注意: 在基于Debian的系统中,永久静态路由是配置在文件<code>/etc/network/interfaces</code>中的。请参阅后面章节"Debian / Ubuntu网络配置"以了解更多详情。

这里介绍了怎样删除之前章节添加的路由。

文件 <code>/etc/sysconfig/network-scripts/route-wlan0</code>也需要被更新,这样你重启服务器後路由才不会被重新加回来。删除如下的行:

其余更多,在使用中再继续摸索吧。

本文转自 念槐聚 博客园博客,原文链接:http://www.cnblogs.com/haochuang/p/7071075.html,如需转载请自行联系原作者

继续阅读