systemd管理网络应用
采用systemd-networkd管理网卡
主网卡eth0的配置文件/etc/systemd/network/20-eth0.network,静态配置时内容示例如下:
[Match] Name=eth0 [Network] Address=192.168.10.111/ DNS=8.8.8.8 DNS=8.8.4.4 [Route] Gateway=192.168.10.1 Metric=
动态配置时内容为:
[Match] Name=eth0 [Network] DHCP=yes [DHCP] RouteMetric=
无线网卡的配置文件/etc/systemd/network/21-wireless.network,一般设置为动态IP即可,即该文件内容保持不变。
[Match] Name=wlan0 [Network] DHCP=yes [DHCP] RouteMetric=
无线网卡的应用服务程序为wpa_supplicant,其systemd配置文件为/lib/systemd/system/wpa_supplicant.service,内容如下,保持不变。
[Unit] Description=WPA supplicant Before=network.target [Service] Type=simple ExecStart=/sbin/wpa_supplicant -Dnl80211 -iwlan0 -c /etc/wpa_supplicant.conf ExecReload=/sbin/wpa_supplicant -Dnl80211 -iwlan0 -c /etc/wpa_supplicant.conf RestartSec= Restart=on-failure [Install] WantedBy=multi-user.target Alias=dbus-fi.epitest.hostap.WPASupplicant.service
无线网卡上网方式的配置文件为/etc/wpa_supplicant.conf,样例如下:
ctrl_interface=/var/run/wpa_supplicant
update_config=
network={
scan_ssid=
ssid="test"
psk=""
key_mgmt=WPA-PSK
pairwise=CCMP
}
pppoe集成到systemd中,需配置文件/etc/ppp/pppoe.conf和/etc/ppp/chap-secrets、/etc/ppp/pap-secrets。
# cat /etc/ppp/pppoe.conf DEMAND=no DNSTYPE=SERVER PEERDNS=yes DEFAULTROUTE=yes CONNECT_TIMEOUT= CONNECT_POLL= PING="." CF_BASE=`basename $CONFIG` PIDFILE="/var/run/$CF_BASE-pppoe.pid" SYNCHRONOUS=no CLAMPMSS= LCP_INTERVAL= LCP_FAILURE= PPPOE_TIMEOUT= FIREWALL=NONE LINUX_PLUGIN= PPPOE_EXTRA="" PPPD_EXTRA="" ETH="eth0" USER="test" # cat /etc/ppp/chap-secrets "test" * "" # cat /etc/ppp/pap-secrets "test" * ""
systemd服务配置文件/lib/systemd/system/pppoe.service内容如下(保持不变)。
# cat /lib/systemd/system/pppoe.service [Unit] Description=PPP over ethernet After=network-online.target systemd-networkd.service Wants=network-online.target systemd-networkd.service [Service] Type=forking ExecStart=/usr/sbin/pppoe-start ExecReload=/usr/sbin/pppoe-stop;/usr/sbin/pppoe-start ExecStop=-/usr/sbin/pppoe-stop ExecStopPost=-ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf Restart=on-failure [Install] WantedBy=multi-user.target
static、dhcp、wifi、pppoe方式的切换操作步骤如下:
网络部分使用前部署
需安装wpa_supplicant应用程序,并设置该应用开机启动。
apt-get install wpasupplicant systemctl enable wpa_supplicant
修改wpa_supplicant的systemd配置文件/lib/systemd/system/wpa_supplicant.service内容如下(内容保持不变):
[Unit] Description=WPA supplicant Before=network.target [Service] Type=simple ExecStart=/sbin/wpa_supplicant -Dnl80211 -iwlan0 -c /etc/wpa_supplicant.conf ExecReload=/sbin/wpa_supplicant -Dnl80211 -iwlan0 -c /etc/wpa_supplicant.conf RestartSec= Restart=on-failure [Install] WantedBy=multi-user.target Alias=dbus-fi.epitest.hostap.WPASupplicant.service
增加无线网卡的配置文件/etc/systemd/network/21-wireless.network。
[Match] Name=wlan0 [Network] DHCP=yes [DHCP] RouteMetric=
pppoe部分需要额外配置内核及安装pppoe且增加pppoe服务配置文件。
Device Drivers ->
Network device support ->
<M> ppp(point-to-point protocol) support
<M> PPP BSD-Compress compression
<M> PPP Deflate compression
[*] PPP filtering
<M> PPP MPPE compression (encryption)
[*] PPP multilink support
<M> PPP over Ethernet
<M> PPP support async serial ports
<M> PPP support for sync tty ports
pppoe安装及服务配置文件:
# apt install pppoe # cat /lib/systemd/system/pppoe.service [Unit] Description=PPP over ethernet After=network-online.target systemd-networkd.service Wants=network-online.target systemd-networkd.service [Service] Type=forking ExecStart=/usr/sbin/pppoe-start ExecReload=/usr/sbin/pppoe-stop;/usr/sbin/pppoe-start ExecStop=-/usr/sbin/pppoe-stop ExecStopPost=-ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf Restart=on-failure [Install] WantedBy=multi-user.target
2) eth0动态上网:
修改/etc/systemd/network/20-eth0.network内容为:
[Match] Name=eth0 [Network] DHCP=yes [DHCP] RouteMetric=
之后执行如下命令:
systemctl stop pppoe systemctl restart systemd-networkd ifconfig wlan0 down systemctl restart systemd-resolved ls -al /etc/resolv.conf | grep systmed >/dev/null || ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
3) eth0静态上网:
根据配置的IP、netmask、Gateway、DNS适当修改/etc/systemd/network/20-eth0.network内容。
[Match] Name=eth0 [Network] Address=192.168.10.111/ DNS=8.8.8.8 DNS=8.8.4.4 [Route] Gateway=192.168.10.1 Metric=
之后执行如下命令:
systemctl stop pppoe systemctl restart systemd-networkd ifconfig wlan0 down systemctl restart systemd-resolved ls -al /etc/resolv.conf | grep systmed >/dev/null || ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
4) 无线上网:
根据ssid、psk、key_mgmt、pairwise合理修改/etc/wpa_supplicant.conf。
ctrl_interface=/var/run/wpa_supplicant
update_config=
network={
scan_ssid=
ssid="test"
psk=""
key_mgmt=WPA-PSK
pairwise=CCMP
}
之后执行如下命令:
systemctl stop pppoe systemctl restart systemd-networkd systemctl restart wpa_supplicant ifconfig eth0 down systemctl restart systemd-resolved ls -al /etc/resolv.conf | grep systmed >/dev/null || ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
5)pppoe上网:
根据用户名和密码合理修改/etc/ppp/pppoe.conf和/etc/ppp/chap-secrets、/etc/ppp/pap-secrets,其中/etc/ppp/pppoe.conf只需要修改用户名及USER。
# cat /etc/ppp/pppoe.conf DEMAND=no DNSTYPE=SERVER PEERDNS=yes DEFAULTROUTE=yes CONNECT_TIMEOUT= CONNECT_POLL= PING="." CF_BASE=`basename $CONFIG` PIDFILE="/var/run/$CF_BASE-pppoe.pid" SYNCHRONOUS=no CLAMPMSS= LCP_INTERVAL= LCP_FAILURE= PPPOE_TIMEOUT= FIREWALL=NONE LINUX_PLUGIN= PPPOE_EXTRA="" PPPD_EXTRA="" ETH="eth0" USER="test" # cat /etc/ppp/chap-secrets "test" * "" # cat /etc/ppp/pap-secrets "test" * ""
之后运行如下命令:
systemctl restart systemd-networkd ifconfig wlan0 down systemctl restart pppoe ifconfig eth0 0.0.0.0 && route del default; route add default dev ppp0
上网方式切换时间统计
-
切换方式
切换后成功连通时间
static -> wifi
约8s
dhcp -> wifi
约18s
others
5s内
注:不同网络环境或测试条件下,时间可能有差距。上述测试环境基于北京网络。
上网方式切换后网络连通的测试方法
上网方式
切换后连通测试方法
static
Ping网关
dhcp
可正确获取到动态分配的IP
wifi
可正确获取到动态分配的IP
pppoe
有虚拟网卡ppp0且可获取IP
开机启动时网络设计
断电重启或reboot后,不同上网方式网卡配置和路由不同,需要根据上网方式来正确配置系统。
在/etc/wan_way下保存当前上网方式,可取值:static、dhcp、wifi、pppoe,在/etc/rc.local中增加网络初始化脚本/usr/local/bin/init_networking后台执行,以配置不同上网方式的网络。
#!/bin/sh
wan_way=$(cat /etc/certusnet_conf/wan_way) case $wan_way in "dhcp" | "static" ) ifconfig wlan0 down ls -al /etc/resolv.conf | grep systmed >/dev/null || ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf echo "dhcp or static" ;; "wifi") ifconfig eth0 down ls -al /etc/resolv.conf | grep systmed >/dev/null || ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf echo "wifi" ;; "pppoe") ifconfig wlan0 down systemctl restart pppoe echo "pppoe" ifconfig eth0 0.0.0.0 num= while [ $num -lt ] do num=$(($num+)) pppoe-status | grep -w inet >/dev/null && { echo "pppoe success after $num *10s" num= } done sleep route del default ; route add default dev ppp0 ;; *) echo "not dhcp, static, pppoe or wifi" ;; esac exit
目前测试发现问题
采用DHCP方式上网,插拔网线时配置其他设备该网关动态IP,此网关不能获取新的IP。
参考:
systemd管理网络应用的更多相关文章
- CentOs7下systemd管理知识要点
centOs7的一个巨大的变动就是用systemd取代了原来的System V init.systemd是一个完整的软件包,安装完成后有很多物理文件组成,大致分布为,配置文件位于/etc/system ...
- Ubuntu 18.04 使用Systemd管理MySQL 5.6
转自:https://blog.csdn.net/skykingf/article/details/45225981 如何用Systemd管理 general 包安装的MySQL呢? 首先看看yum安 ...
- dockerd启动配置_修改IP和systemd管理
docker采用CS架构,dockerd是管理后台进程,默认的配置文件为/etc/docker/daemon.json(--config-file可以指定非默认位置). 一个完整的daemon.jso ...
- linux任务计划 chkconfig工具 systemd管理服务 unit介绍 target介绍
linux任务计划 任务计划:特定时间备份数据,重启服务,shell脚本,单独的命令等等. 任务计划配置文件:cat /etc/crontab [root@centos7 ~]# cat /etc/c ...
- 简述systemd的新特性及unit常见类型分析、使用systemd管理编译安装的nginx
1. systemd新特性 并行处理(同时启动)所有服务. 基于依赖关系定义的服务控制逻辑 系统状态快照 按需激活进程,只有第一次被访问时才会真正启动: 2. systemd的常见unit类型 Ser ...
- linux任务计划cron、chkconfig工具、systemd管理服务、unit和target介绍
第8周第1次课(5月14日) 课程内容: 10.23 linux任务计划cron10.24 chkconfig工具10.25 systemd管理服务10.26 unit介绍10.27 target介绍 ...
- Linux centos7 linux任务计划cron、chkconfig工具、systemd管理服务、unit介绍、 target介绍
一.linux任务计划cron crontab -u -e -l -r 格式;分 时 日 月 周 user command 文件/var/spool/corn/username 分范围0-59,时范 ...
- Linux 使用 Systemd 管理进程服务
转载自:https://mp.weixin.qq.com/s/e-_PUNolUm22-Uy_ZjpuEA systemd 介绍 systemd是目前Linux系统上主要的系统守护进程管理工具,由于i ...
- systemd管理进程
systemd很强大的管理工具,这里简单用来管理一个进程: [Unit]Description=Imges Compress Server [Service]Type=simpleExecStart= ...
随机推荐
- Android帧布局<TabHost>标签
先贴上一段代码: main.xml: <p><?xml version="1.0" encoding="utf-8"?> <Tab ...
- 集群扩容的常规解决:一致性hash算法
写这篇博客是因为之前面试的一个问题:如果memcached集群需要增加机器或者减少机器,那么其他机器上的数据怎么办? 最后了解到使用一致性hash算法可以解决,下面一起来学习下吧. 声明与致谢: 本文 ...
- nginx 有关防盗链的设置
http://blog.csdn.net/longjef/article/details/53284108 关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链 ...
- 如何使你的Android应用记住曾经使用过的账户信息
原文:http://android.eoe.cn/topic/android_sdk 当您记住他们的名字时,每个人都会很喜欢.最简单的一个例子,您能够做的,让您的应用更加受人喜爱的,最有效的方法是记住 ...
- 【小超_Android】2015最流行的android组件、工具、框架大全(兴许)
2015.07.07 FlyRefresh 创意Replace的Android实现,非常cool. fab-toolbar Material Design风格的FAB工具栏效果 MaterialVie ...
- 【凯子哥带你夯实应用层】使用ActionMode实现有删除动画的多选删除功能
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 ActionMode是3.0之后.官方推荐的一种上下文菜单的实现方式,在之前一直用的是Co ...
- 安装MySQL start Service(无法启动服务)
在xp是这样: C:\ProgramData\MySQL 在win7 或者win8 在C:\ProgramData\MySQL 这里还有MySQL的文件,必须要删除 注意:Applica ...
- C#-微信公众平台接口-上传临时素材
最烦做微信公众平台的东西..文档说得不清不楚,又没示例代码,只能自己 慢慢搜索,弄了一晚上,基本弄出来了,把本地的图片上传到微信的临时素材那里,返回媒体ID,用于其他操作,代码如下 :(自己导入相应的 ...
- spring(四) 手动整合web项目(SSH)
清楚了spring的IOC 和 AOP,最后一篇就来整合SSH框架把,记录下来,以后应该会用的到. --WH 一.web项目中如何使用spring? 当tomcat启动时,就应该加载spring的配置 ...
- LeetCode(35) Search Insert Position
题目 Given a sorted array and a target value, return the index if the target is found. If not, return ...