(四) 搭建 Open××× Server 路由模式 + 口令认证 +TEXT/POP3

还是(一)的网络环境

目的:客户端还是连接到公司局域网中,但为了用户管理方便,认证数据从TEXT 数据库中提取。

Open××× Server 基本设定:连接方式采用路由,认证方式采用TEXT/POP3认证,虚拟设备使用tun

1 下载 TEXT 认证脚本 checkpsw.sh , 并且复制到 /usr/local/etc/ 目录中同时 chmod u+x

http://open***.se/files/other/

注意: 1.脚本保存到 windows 中再上传导 linux 有问题,最好在那个目录新建一个同名文件再从控制台粘贴进去。

2.脚本的开始不是 # 要改正。

2.配置服务器配置文件, 在(一)的基础上

添加如下几行:

# auth-user-pass-verify cmd method: Query client for username/password and

# run script cmd to verify. If method='via-env', pass

# user/pass via environment, if method='via-file', pass

# user/pass via temporary file.

auth-user-pass-verify /usr/local/etc/checkpsw.sh via-env

#不请求客户的CA证书,使用User/Pass验证

client-cert-not-required

#使用客户提供的UserName作为Common Name

username-as-common-name

3.配置客户端配置文件

注释掉

;cert client1.crt

;key client1.key

增加

#询问用户名和密码

auth-user-pass

4.更改 checkpsw.sh 中的PASSFILE 变量为。

PASSFILE="/usr/local/etc/psw-file"

5 创建 /usr/local/etc/psw-file 内容如下:

格式:用户名Tab密码

User1 pass

User2 pass

注:实验成功后我自己仿照 checkpsw.sh perl 重写了一遍(目录中的checkpsw.pl),也可以使用。

6.同样的原理我们还可以使用POP3 认证(^_^ 其他的当然也可以)

脚本见目录中的 popauth.pl

(五) 搭建 Open××× Server 路由模式 + 口令认证 +RADIUS

网络环境:在(一)的基础上添加一台 win2003 服务器 ip 192.168.80.130

^_^ 不好意思,我把服务器给放到了公网上了。不过还好是测试。

目的:客户端还是连接到公司局域网中,但为了用户管理方便,认证数据从radius 数据库中提取。

Open××× Server 基本设定:连接方式采用路由,认证方式采用radius认证,虚拟设备使用tun

1 搭建 Radius 服务器

见附录 搭建 win2003 下的IAS 服务

2 配置 radiusplugin

1.radiusplugin_v2.0.tar.gz: 可以编译得到radiusplugin.so

http://www.nongnu.org/radiusplugin/下载

2.libgcrypt 支持库: 可以编译得到/usr/lib/libgcrypt.so.11

ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.2.4.tar.gz 下载

3.libgpg-error 支持库: 可以编译得到/usr/local/lib/libgpg-error.so.0

ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.5.tar.gz 下载

简单的编译以上3 个支持库,configure;make;make install

我们要用到radiusplugin.so,其他是radiusplugin.so 的支持库。

好了如果能够得到radiusplugin.so,已经成功了80%,其他的就是配置了。

radiusplugin.so 拷贝到/usr/local/etc/lib 下,并配置其配置文件radiusplugin.conf

内容如下:

# The NAS identifier which is sent to the RADIUS server

NAS-Identifier=Open***

# The service type which is sent to the RADIUS server

Service-Type=5

# The framed protocol which is sent to the RADIUS server

Framed-Protocol=1

# The NAS port type which is sent to the RADIUS server

NAS-Port-Type=5

# 这是运行open*** 服务器的ip,作为radius 客户端

NAS-IP-Address=192.168.80.129

#这里指明open*** 的配置位置

Open×××Config=/usr/local/etc/server.conf

# 这里定义 radius server 参数可以超过1 个作为备份

server

{

# The UDP port for radius accounting.

acctport=1813

# The UDP port for radius authentication.

authport=1812

# 这是我radius 服务器的ip,并添加了用户。

name=192.168.80.130

# How many times should the plugin send the if there is no response?

retry=1

# How long should the plugin wait for a response?

wait=1

# The shared secret.共享密钥,在winradius 里配置,设置-系统-NAS 密钥

sharedsecret=123456

}

3.配置服务器配置文件, 在(一)的基础上

添加如下几行:

#说明使用的插件

plugin /usr/local/etc/lib/radiusplugin.so /usr/local/etc/radius.conf

#不请求客户的CA证书,使用User/Pass验证

client-cert-not-required

#使用客户提供的UserName作为Common Name

username-as-common-name

4.配置客户端配置文件

注释掉

;cert client1.crt

;key client1.key

增加

#询问用户名和密码

auth-user-pass

使用客户端连接服务器 测试 ok

(六) 搭建 Open××× Site to Site

目的:公司局域网 LAN B 和在其它城市公司分部网络 LAN A 要互相连通,共享彼此的资源。

Open××× Server 基本设定:连接方式采用路由,认证方式采用证书认证,虚拟设备使用tun

网络环境:

1 *** client *** server 两台设备都将作为各自网络的 GW ,系统为 CentOS 5.2 上面安装 Open××× 软件。并开启 ip 转发,防火墙已设置妥当。

2 配置 open*** server 在(一) 的基础上:

添加:

route 192.168.90.0 255.255.255.0

client-config-dir /usr/local/etc/ccd

配置要点:

使用 tun 点对点的虚拟连接(路由)

dev tun

在本机添加一条到 192.168.90.0 255.255.255.0 via 就是对端 10.9.0.2

route 192.168.90.0 255.255.255.0

push一条路由到客户端,告诉客户机 172.18.2.0 255.255.255.0 在它的对端 10.9.0.5

push "route 172.18.2.0 255.255.255.0"

*** clien 设置单独配置文件,内容是:iroute 192.168.90.0 255.255.255.0

client-config-dir /usr/local/etc/ccd

3 配置 ××× Client

同(一)

4.使用 ping pathping tracert 等命令测试, LAN A LAN B 两个网络连通 ok

至此 Open××× Site to Site 配置完成。

(七) Open ××× 其它配置选项

1 服务器选项
a) # 定义最大连接数 ;max-clients 100
b) # 记录日志,每次重新启动 open*** 后删除原有的 log 信息 log /var/log/open***.log # log 一致,每次重新启动 open*** 后保留原有的 log 信息,新信息追加到文件最后 ;log-append open***.log
c) # 如果可以让 ××× Client 之间相互访问直接通过 open*** 程序转发, # 不用发送到 tun 或者 tap 设备后重新转发,优化 Client to Client 的访问效率 client-to-client
d) # 使 Client 的默认网关指向 ××× ,让 Client 的所有 Traffic 都通过 ××× ;push "redirect-gateway"
e) *** client 连接或退出时,执行脚本。可以用于生成用户访问日志。

client-connect /usr/local/etc/connect client-disconnect /usr/local/etc/disconnect

脚本 见附录

f#定义运行open***的用户 user nobody group nobody

2 客户端选项

a)可以有多个*** 服务器做负载均衡,然后客户端配置这样写

remote 61.1.1.2 1194

remote 22.1.1.2 1194

# 随机选择一个Server连接,否则按照顺序从上到下依次连接

;remote-random

b)如果 remote 后接的是域名

# 始终重新解析ServerIP地址(如果remote后面跟的是域名), # 保证Server IP地址是动态的使用DDNS动态更新DNS后,Client在自动重新连接时重新解析ServerIP地址 # 这样无需人为重新启动,即可重新接入××× resolv-retry infinite

C# 如果你使用HTTP代理连接××× Server,把ProxyIP地址和端口写到下面 # 如果代理需要验证,使用http-proxy server port [authfile] [auth-method] # 其中authfile是一个2行的文本文件,用户名和密码各占一行,auth-method可以省略,详细信息查看Manual ;http-proxy-retry # retry on connection failures ;http-proxy [proxy server] [proxy port #]