查看文章 |
openvpn 的配置(包括用mysql认证)
2009-06-16 14:28
一、是建立 PKI (public key infrastructure). 切換到 /usr/share/doc/openvpn/examples/easy-rsa 目錄,執行:執行:設定環境變數 root@debian:~# . ./vars 以下東西產生出來會放到 ./keys/ 目錄下,可修改 vars 來改變位置 二、 root@debian:~# ./clean-all root@debian:~# ./build-ca 會產生 ca.crt ca.key 三、建立給 server 用的 certificate & key root@debian:~# ./build-key-server server 當中問到 “Common Name” 設成 “server” 會產生 01.pem server.crt server.csr server.key 四、產生給多個 client 用的 certificates & keys 當中問到 “Common Name” 設成 “client1″,以此類推 root@debian:~# ./build-key client1 產生 client1.crt client1.csr client1.key root@debian:~# ./build-key client2 root@debian:~# ./build-key client3 (可只产生一个clinet) root@debian:~# ./build-dh root@debian:~# openvpn –genkey –secret ta.key 五、接著將 key 利用加密通道拷貝到 server 及 client 機器上(和配置文件放在同一个目录里) 两端都需要ca.crt 客户端需要 client.crt client.csr clinet.key ca.crt ta.key 其他的server端都要用 六、server端修改/etc/openvpn/server.conf 可從 /usr/share/doc/openvpn/examples/sample-config-files/ 拿来当范本 local 192.168.1.*#(服务端IP) port 1194 #(端口) proto tcp #(协议) dev tun#(设备 应该是一个网卡) tls-server ca ca.crt cert server.crt key server.key tls-auth ta.key 0 dh dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt 上面几个文件要写清全路径 push “redirect-gateway” # 自動將 client 的 default gateway 設成經由 VPN server 出去 keepalive 10 120 # 保持連線,每 10 秒 ping 一次,若是 120 秒未收到封包,即認定 client 斷線 comp-lzo max-clients 10 # 最多同時只能有十個 client user nobody group nogroup # vpn daemon 執行時的身份(在非 Windows 平台中使用) persist-key persist-tun status /etc/openvpn/easy-rsa/keys/openvpn-status.log verb 3 # 以下二行是將 vpn server 內部的虛擬 ip 機器開放給 client 使用 push “route 192.168.10.0 255.255.255.0″ push “route 192.168.20.0 255.255.255.0″ (我没用这个功能) 七、 linux clinet端上修改 client.conf client dev tun proto tcp remote server-ip 1194 persist-key persist-tun ca ca.crt cert client.crt key client.key ns-cert-type server tls-auth ta.key 1 comp-lzo verb 3 服务端打开转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE 现在说说Debian下OpenVpn 实现用户名密码验证 1.数据库部分: 1.1:安装mysql(自己google) 1.2:新建vpn数据库+添加表等 以管理员身份登录数据库: mysql> create database vpn; 创建数据库vpn。 mysql> GRANT ALL ON vpn.* TO vpn@localhost IDENTIFIED BY ‘vpn123′; 授权localhost上的用户vpn(密码vpn123)有对数据库vpn的所有操作权限。 mysql> flush privileges; 更新sql数据库的权限设置。 mysql> use vpn; 使用刚创建的的vpn数据库。 mysql> CREATE TABLE vpnuser ( -> name char(20) NOT NULL, -> password char(128) default NULL, -> active int(10) NOT NULL DEFAULT 1, -> PRIMARY KEY (name) -> ); mysql> insert into vpnuser (name,password) values(’soai’,password(’soai’)); 命令解释: #创建vpn用户,对vpn这个database有所有操作权限,密码为vpn123 #active不为1,无权使用VPN 2.配置pam_mysql模块 (我在做的时候发现没有这个模块,debian 下这个模块的包名叫libpam-mysql) 创建/etc/pam.d/openvpn文件,文件内容如下: auth sufficient pam_mysql.so user=vpn passwd=vpn123 host=localhost db=vpn \ table=vpnuser usercolumn=name passwdcolumn=password \ where=active=1 sqllog=0 crypt=2 account required pam_mysql.so user=vpn passwd=vpn123 host=localhost db=vpn \ table=vpnuser usercolumn=name passwdcolumn=password \ where=active=1 sqllog=0 crypt=2 3.配置server.conf在原基础上添加一下内容 3.1现在把openvpn-auth-pam.so拷贝到当前目录下.. cp /usr/lib/openvpn/openvpn-auth-pam.so /etc/openvpn/ 3.2在server.conf中添加如下内容: plugin ./openvpn-auth-pam.so openvpn #说明使用的插件,openvpn为插件的参数,使用pam的servicesname client-cert-not-required #不请求客户的CA证书,使用User/Pass验证 username-as-common-name #使用客户提供的UserName作为Common Name #client-to-client #如果让Client之间可以相互看见,去掉本行的注释掉,否则Client之间无法相互访问 #duplicate-cn #是否允许一个User同时登录多次,去掉本行注释后可以使用同一个用户名登录多次 4.现在需要把客户端client.ovpn修改一下: 原来是CA验证..现在不需要了.. 把cert **.crt 和 key **.key 注释掉(我这没注释掉也一样用。。) 添加auth-user-pass OK 现在可以了!~ |
最近读者:

