我的系统有一个 SoftEther VPN 服务,它在启动时创建自己的 TAP 接口,并在停止时删除它。但即使在 VPN 上运行 DHCP,TAP 也不会在出现时配置它自己的 IP,也不会配置在ifcfg
特定于它的文件中配置的静态 IP。但是,如果我执行dhclient
或运行ifup
(ifcfg
当前),它会配置它的 DHCP IP 。
我的问题是,如果接口已启动并运行dhclient
或ifup
,无论我想要哪个,我如何编写监控脚本?
答案1
正如我在 Centos7 上所做的那样,我确实使用 sysmtemd-networkd 解决了这个问题。它侦听您在 /etc/systemd/network/ 上指定的所有网络设备
例如,20-static-tap_clients.network 如下所示:
[Match]
Name=tap_clients
[Network]
Address=192.168.103.1/24
更改tap_clients
您的点击接口名称并修改 IP 地址为您想要的 IP。
您必须禁用 NetworkManager 服务并启用 systemd-networkd。至于softether,我也创建了单元文件并将它们放在/usr/lib/systemd/system上
softether-vpnserver.service
[Unit]
Description=SoftEther VPN Server
After=network.target auditd.service
ConditionPathExists=!/opt/vpnserver/do_not_run
[Service]
Type=forking
EnvironmentFile=-/opt/vpnserver
ExecStart=/opt/vpnserver/vpnserver start
ExecStop=/opt/vpnserver/vpnserver stop
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Alias=softether-vpnserver.service
Softether-VPNbridge.service
[Unit]
Description=SoftEther VPN Bridge
After=network.target auditd.service
ConditionPathExists=!/opt/vpnbridge/do_not_run
[Service]
Type=forking
ExecStart=/opt/vpnbridge/vpnbridge start
ExecStop=/opt/vpnbridge/vpnbridge stop
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Alias=softether-vpnserver.service
和 softether-vpnclient.service
[Unit]
Description=SoftEther VPN Client
After=network.target auditd.service
ConditionPathExists=!/opt/vpnclient/do_not_run
[Service]
Type=forking
EnvironmentFile=-/opt/vpnclient
ExecStart=/opt/vpnclient/vpnclient start
ExecStop=/opt/vpnclient/vpnclient stop
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
Alias=softether-vpnclient.service
答案2
您可以在 while 循环中监视接口,如下所示:
#!/bin/sh
trap exit 1 2 15
while true; do
if [ "$(ip l | fgrep IFACE: | wc -l)" -gt 0 ]; then
# run dhclient/ifup for your IFACE here
break
fi
sleep 1
done
但我希望 SoftEther VPN 可以配置 TAP 接口,在程序的配置文件或 gui 中,必须有一个用户编写的脚本选项或控制 TAP 接口配置的选项。