我在运行 CentOS 6.2 的服务器上设置 OpenVPN 时遇到了问题。我之前曾在这台服务器上使用过 OpenVPN,而且它运行正常(虽然那是在 Ubuntu 上,现在我使用的是 CentOS)。我刚刚重新格式化了硬盘,并试图重新启动 OpenVPN。我使用OpenVPN 配置文件中的up
和down
指令来设置我的网桥。由于某种原因,当up
脚本运行时,我在尝试执行时收到权限被拒绝错误brctl
。这是我的配置文件:
mode server
tls-server
local 192.168.1.93 ##ip of server
port 1194
proto tcp
dev tap0
up "/etc/openvpn/up.sh br0"
down "/etc/openvpn/down.sh br0"
persist-key
persist-tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
#tls-auth ta.key 0
cipher BF-CBC
comp-lzo
ifconfig-pool-persist ipp.txt
server-bridge 192.168.1.93 255.255.255.0 192.168.1.110 192.168.1.120
push "dhcp-option DNS 192.168.1.1"
push "dhcp-option DOMAIN nyc.rr.com"
max-clients 10
user nobody
group nogroup
keepalive 10 120
status openvpn-status.log
verb 3
脚本如下up.sh
:
#!/bin/sh
BR=$1
DEV=$2
MTU=$3
/sbin/ifconfig $DEV mtu $MTU promisc up
/usr/sbin/brctl addif $BR $DEV
brctl
在本脚本之外运行良好。我可以手动执行它。
我以 root 身份启动 OpenVPN,因此我认为问题中不存在权限问题,这就是为什么我如此困惑。
谢谢你的帮助。
编辑:这是回显的错误:
[root@server openvpn]# /etc/init.d/openvpn start Starting openvpn: /etc/openvpn/up.sh: line 7: /usr/sbin/brctl: Permission denied [FAILED]
答案1
我相信你打中了这个错误。
创建文件 openvpnlocal.te:
module openvpnlocal 1.0;
require {
type openvpn_t;
type brctl_exec_t;
class file { read execute open execute_no_trans };
}
#============= openvpn_t ==============
allow openvpn_t brctl_exec_t:file { read execute open execute_no_trans };
然后运行:
checkmodule -M -m -o openvpnlocal.mod openvpnlocal.te
semodule_package -o openvpnlocal.pp -m openvpnlocal.mod
semodule -i openvpnlocal.pp