`
hqman
  • 浏览: 352683 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

OpenVPN 详细配置

阅读更多

一、服务器环境及目的

 

服务器两块网卡,一块连接外网,一块连接内网
外网IP: X X X X
办公内网IP:172.16.1.0/24

 

目 的:

通过VPN在Internet环境下接入办公内网,可以访问内网指定段内的计算机,并且客户端能通过VPN通道访 问Internet

 

二、服务端安装过程

 

1.安装openvpn

 

sudo apt-get install openvpn

 

2. 设置认证机构,产生证书

在Ubuntu中大致这样操作,将目录 /usr/share/doc/openvpn/examples/easy-rsa/2.0 复制的你的HOME目录(这个目录包含了一系列很方便的脚本),修改vars使其符合你的实际情况(国家、省份、城市、公司、机构、邮件地址),然后运行
代 码:

 

source ./vars
./clean-all
./build-ca
./build-key-server <servername>
./build-key <clientname>
./build-dh

 

3. 注意:

这只是第一次产生证书的正确操作,其中 build-ca 创建根证书,若你没有清除全部VPN Server/Client的打算,你不应该再次运行此命令;
创建的全部证书及私钥都在当前目录的 keys 下面,而命令 clean-all 将清除 keys 下面全部内容,因此 cliean-all 只在 build-ca 前运行一次。
随后添加 Server 证书或 Client 证书只需运行(建议单独的客户端配置单独的证书)
代码:

 

./vars
./build-key-server <servername>
or
./build-key <clientname>

 

4. 配置Server端

从示例中解压 server.conf
代码:

 

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz  /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz

 

将 相关证书、私匙拷贝的 /etc/openvpn

 

ca.crt
server.crt
server.key
dh1024.pem

 

5. 修改 server.conf

关键一: 取消注释 push "route a.b.c.d 255.255.255.0",并将地址和掩码替换为办公网络的地址和掩码

目的是为客户端加一条路由,这样客户端才有可 能访问到办公网络中出VPN Server之外的其它主机

关键二: 取消注释 push "dhcp-option DNS a.b.c.d" 和 push "dhcp-option WINS a.b.c.d", 并将地址替换为实际的 DNS 和 WINS 服务器的地址

目的是客户端连接VPN后仍能访问 Internet,(若推过来的DNS不能解析外部域名,则即使客户端的路由配置正确,想通过域名访问Internet也不可能)

 

示 例server.conf

 

port 443
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key    
dh dh1024.pem
server 192.168.42.0 255.255.255.0
ifconfig-pool-persist ipp.txt


push "redirect-gateway def1 bypass-dhcp" #增加172.16.1.0 IP断的路由 使VPN客户端能访问这个地址段(真正能访问还需要后面的设置) push "route 172.16.1.0 255.255.255.0" push "dhcp-option DNS 202.205.6.4"

#vpn客户端能否相互访问 ;client-to-client #注释掉此参数表示同一个客户端证书只能有一个连接,如果两个客户端使用同一个证书连接的话, #先连接的会自动断开 ;duplicate-cn keepalive 10 120

comp-lzo persist-key persist-tun status openvpn-status.log log /var/log/openvpn.log verb 3

 

6.Server 端其它设置

配置服务器,允许包转发:
代码:

 

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

 

设 置iptable转发规则 使访问目标为172.16.1.0段的请求都转发到eth0网卡,这是vpn服务器连接办公内网的网卡,这里很重要,不然的话VPN客户端还是不能访问办 公内网

 

iptables -t nat -A POSTROUTING -d 172.16.1.0/24 -o eth0 -j MASQUERADE

 

设 置iptable转发规则 使来源为vpn客户端的请求都转发到eth1网卡,这是vpn服务器连接Internet的网卡,这里很重要,不然的话VPN客户端还是不能通过VPN访 问Internet

 

iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o eth1 -j MASQUERADE

 

通 过修改/etc/rc.local,加入以下代码,使服务器重启后自动设置转发规则

 

echo 1 |tee /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -d 172.16.1.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o eth1 -j MASQUERADE
exit 0

 

三、 客户端配置过程

 

至此openvpn服务器端配置完毕, 客户端只需要将keys目录下生成的对应的ca.crt(公用) 专用client.crt和client.key, client.ovpn拷贝到客户端openvpn安装目录下的config目录,如果没有client.ovpn文件,直接新建一个,内容类似:

 

client
dev tun
proto udp   
remote <serverip> 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key  
comp-lzo
verb 3

 

运 行客户端连接试一下吧:)

 

 

 

 

10个步骤搭建功能强大的openvpn pam mysql服务器V1.1

六月 1st, 2010 Posted in VPN | 359次浏览

Author:gaojinbo 
Time:2010-6-1

ubuntu openvpn安装配置-user/password方式V1.1,使用pam_mysql方式验证用户密码,openvpn pam mysql

 

1.环境 
ubuntu 9.10    amd64 
openvpn 2.1 
eth0    192.168.1.195(这个是openvpn server的地址,请更换为自己的公网ip) 
vpn网络    192.168.10.0/24(这个是openvpn连接后的虚拟私用ip网段,这个网段不能与物理网段相同)

 

 

2.启用ip转发 
vi /etc/sysctl.conf

net.ipv4.ip_forward = 1 

 

 

3.防火墙的设置

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT 

 

 

4.安装openvpn libpam_mysql并生成证书

apt-get install openvpn  libpam-mysql

cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn

cd /etc/openvpn/easy-rsa/2.0

source ./vars

./clean-all

./build-ca

./build-key-server server  #出现…Sign the certificate… 按 y

./build-dh

openvpn –genkey –secret ta.key

cp ta.key keys

生成文件都在keys目录下

 

 

5.添加openvpn的pam文件

vi /etc/pam.d/openvpn

auth sufficient  pam_mysql.so  user=openvpn passwd=openvpn \
host=127.0.0.1 port=3306 db=vpn table=vpnuser usercolumn=name \
passwdcolumn=password sqllog=0 crypt=2

account required pam_mysql.so  user=openvpn passwd=openvpn \
host=127.0.0.1 port=3306 db=vpn table=vpnuser usercolumn=name \
passwdcolumn=password sqllog=0 crypt=2 

说明:openvpn-auth-pam认证只能使用host=localhost或host=127.0.0.1

 

 

6.安装mysql-proxy

由于本机没有安装Mysql-server,也不能通过ip连接到无端的数据库,所以安装一个mysql-proxy来支持openvpn-auth-pam验证

apt-get install mysql-proxy

启动

/usr/sbin/mysql-proxy  –proxy-address=0.0.0.0:3306 –proxy-backend-addresses=192.168.1.12:3306  –proxy-lua-script=/usr/share/mysql-proxy/rw-splitting.lua >/var/log/mysql-proxy.log &

 

 

7.配置数据库

以管理员身份登录数据库:

create database vpn;

GRANT ALL ON vpn.* TO openvpn@% IDENTIFIED BY ‘openvpn’;

flush privileges;

use vpn;

CREATE TABLE vpnuser (name char(20) NOT NULL,password char(128) default NULL,active int(10) NOT NULL DEFAULT 1,PRIMARY KEY (name));

insert into vpnuser (name,password) values(‘gaojinbo.com’,password(‘gaojinbo.com’));

说明:

创建openvpn用户,对vpn这个database有所有操作权限,密码为openvpn

active不为1,无权使用VPN

增加用户 用户名:gaojinbo.com 密码:gaojinbo.com

 

 

8.修改openvpn服务配置文件

vi /etc/openvpn/server.conf

port 1194
proto udp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem

server 10.0.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

;push "redirect-gateway"
push "route 192.168.1.0 255.255.255.0"
push "route 192.168.1.9 255.255.255.255 net_gateway"

push "dhcp-option DNS 202.96.128.166">

keepalive 10 120
tls-auth /etc/openvpn/ta.key 0 

comp-lzo 

user nobody
group nogroup

persist-key
persist-tun 

status       /var/www/openvpn-status.log
log-append  /var/log/openvpn.log 

plugin ./openvpn-auth-pam.so openvpn 

client-cert-not-required
username-as-common-name
client-to-client
duplicate-cn

auth-nocache
verb 3 

到此服务器端配置完成!

 

 

9.openvpn客户端安装

windows下的openvpn客户端,到 http://openvpn.se/去下载,安装后在其安装目录的conf目录把服务器生

成的ca.crt、ta.key拷过来,之后建立client.ovpn文件

client
dev tun
proto udp 

remote 192.168.1.195 1194
resolv-retry infinite 

nobind
persist-key
persist-tun 

ca ca.crt
auth-user-pass
ns-cert-type server 

tls-auth ta.key 1
comp-lzo 

verb 3

 

10.测试

在windows下通过openvpn gui建立到服务器的连接,登录的时候输入用户名密码gaojinbo.com

 

完成!

 

参考:http://dozview.com/blog/an-implementation-of-openvpn-system-based-on-userpass-authentication-bandwidth-control

 

http://hi.baidu.com/viccom/blog/item/7608fe4406ee6f5c510ffe07.html

 

 

分享到:
评论
1 楼 hqman 2012-05-20  
export LD_PRELOAD=/lib/libpam.so.0
root@hqman:/etc/openvpn/2.0# killall openvpn
root@hqman:/etc/openvpn/2.0# openvpn --config ./server.conf & 
[2] 4691
[1]   Done                    openvpn --config ./server.conf
root@hqman:/etc/openvpn/2.0# tail -f /var/log/auth.log

相关推荐

    OpenVpn-Pool-Overflow:OpenVpn NDIS TAP驱动程序中的池溢出

    OpenVpn Tap驱动程序使用NdisReadConfiguration从注册表读取一些配置。 使用任何功能之前的一项显而易见的任务是必须阅读其手册 Note that NDIS does not validate values that a driver reads from the registry. ...

    openvpn-certificate-authority

    可配置的属性 国家/地区代码(例如CA) 州(例如安大略省) 城市(例如多伦多) 组织(例如无) 组织单位(例如无) 通知属性 通知电子邮件 到中间CA的通知消息传递api 中级CA 中间CA对用户的所有客户端和...

    luci-app-pptp-server_2.0-7_all.ipk

    网上收集来的,别问干什么用,我什么都不知道,给OPENWRT的GUI界面添加什么功能,配置某些功能方便点而已

    MedShakeEHR-Ansible:在Debian上自动安装Ansible的MedShakeEHR

    安装OpenVPN 保护OpenVPN 在局域网中安装Orthanc ? 先决条件 Ansible&gt; 2.5 Ansible&gt; 2.9(用于SSH-sec角色) 在客户端计算机和服务器计算机之间已正确配置SSH身份验证。 安装 克隆项目并安装角色: git clone...

    wireshark 包解析插件

    该资源为用脚本编写的适用于wireshark的一个新的协议。即当wireshark不能及时解析一些新的协议时,可以自己动手根据新协议字段编写解析文件。有新协议的话可以基于此脚本改写. 使用方法: 1. 打开wireshark根目录中...

    python-pia:命令行工具可自动配置PIA服务

    -e {nm,cm,openvpn}, --exclude {nm,cm,openvpn} 不包括修改所列程序的配置。 也许再用一次。 -v, --verbose 启用更详细的日志记录 --version 显示程序的版本号并退出 安装/使用 登录信息存储在/etc/private-...

    Linux 运维 入门到高级

    linux企业实战运维入门到高级系列 ubuntu Centos ...自动化运维 安装kickstart文件(半自动化) ANSIBLE部署 企业级OpenVPN 安装OpenVPN 该笔记由刘森飚整理,版权归原作者所有 仅用于学习交流分享,如有争议请联系下架

    在linux下自动生成大量证书Shell(无其他工具版)

    在C/S模型中,Server需要认证Client的证书,而每一个Client持有独一无二的证书(比如一个设备的MAC地址),此时... 对了,忘了告诉大家了,你当前的目录里面一定要有个cert.cnf配置文件,自己手动生成的CA证书和CA key.

    Oracle-Cloud-instances-configuration:Oracle Cloud实例配置

    第二台服务器托管openvpn服务和该网站的nginx服务器配置要允许传入连接,请在Web控制台中配置端口和相应的安全性列表重新配置iptables以允许流量Nginx服务器配置-Postfix,dovecot,rspamm和MySql 克隆此仓库,并...

    system:我的系统配置

    系统配置该存储库包含为我的所有机器构建NixOS系统配置所需的一切。... external/private包含我无法公开共享的所有内容,例如nixops状态(它包括ssh私有密钥),openvpn密钥和密码。 为了使它在配置

    gate:Gate是启用了MFA的SSO平台,支持SAML,OAuth,Linux Shell登录和CAS

    Gate可以自动为您创建OpenVPN配置文件,还可以为您提供Google多因素身份验证(MFA)集成。 Gate在您的组织内提供单个MFA令牌授权。 Gate可以处理以下情况: 使用Gate身份验证设置OpenVPN。 自动为每个用户创建VPN...

    openconnect-gui:镜像-图形化OpenConnect客户端(测试阶段)

    OpenConnect GUI 这是openconnect VPN的GUI客户端。 该客户端处于beta测试阶段。 不能假定它提供了所需的安全性。 查看项目网页以获取详细描述,屏幕截图和其他相关项目。支持平台Microsoft Windows 7及更高版本...

    TorrentBoxTutorial

    一步步: 安装OpenVPN和Transmission-Daemon sudo apt update && sudo apt install openvpn transmission-daemon -y 配置传输停止传输sudo systemctl stop transmission-daemon.service b。 备份原始配置文件sudo cp...

    salt-stack-modules:盐堆模块

    盐堆配置这是配置状态。 基本系统是Ubuntu 12.04 / 13.04-但我认为它可以用于其他基于deb的发行版(Debian,Mint等)。 您也可以找到我的用于备份,监视,Web服务器的自行车解决...- users - net - openvpn - coll

    bits-cloud-hosting:BITS 云托管 (ISPConfig 3)

    此修改后的 ISPConfig3 设置还将 HTTPS 端口设置为 8443 而不是 443 这在 OpenVPN 和 Apache 之间进行端口共享时很有用: 在这种情况下,OpenVPN 将侦听端口 443,并将非 VPN 连接转发到在端口 8443 上运行的 ...

    2021年全国职业院校技能大赛:网络系统管理项目-模块A-样题(八)

    一、 竞赛简介 - 3 - 二、 竞赛注意事项 - 3 - 三、 竞赛结果文件的提交 - 3 ...5. OPENVPN - 7 - 6. IPTABLES - 7 - 服务器AppSrv上的工作任务 - 8 - 3. SSH - 8 - 4. DHCP - 8 - 5. DNS(BIND) - 8 - 6. APACHE2 - 8

    工业路由器和民用路由器的区别.pdf

    安全性差异 工业级路由器要多很多安全规则设定和更高级的防火墙,如支持 APN/VPDN 专网,同时 设备具有 IPSEC、PPTP、L2TP、GRE、OPENVPN 多种 VPN 连接, 具有 VPN 客户端、服务端等 功能而。民用路由甚至有些都...

    Windows11 装不了虚拟网卡无法启动虚拟机

    Windows11 装不了虚拟网卡,可能可以帮助您解决问题

    desec-ns:用于deSEC的前端名称服务器,实现为docker-compose应用程序

    openvpn-client :OpenVPN客户端容器,为ns和replicator器提供网络服务。 要求 尽管大多数配置都包含在此存储库中,但是在运行应用程序之前需要满足一些外部依赖性。 依赖项是: 我们使用dockerd守护程序的--...

    TunnelDroid-开源

    与http://code.google.com/p/android-openvpn-settings/合并在一起。它是一个小型的GUI包装器,用于管理您的OpenVPN配置和在Android设备上的隧道传输。 它使您可以启动/停止隧道并编辑配置。

Global site tag (gtag.js) - Google Analytics