IT技术互动交流平台

freebsd9 openvpn桥接模式的构建

作者:转身、决绝  发布日期:2012-07-19 09:39:17

最近公司服务器升级,同时将更新操作系统,需要在最新的freebsd 9.0上重新部署openvpn,且部门manager要求以网桥模式搭建。

先简单介绍下公司网络环境:

外部一台cisco ASA防火墙,外网IP:119.97.xx.xx,内网:192.168.21.2,openvpn位于公司内网,且单网卡,IP为192.168.21.229。同时公司内部还有192.168.4.0/24、192.168.10.0/24、192.168.20.0/24网段www.it165.net

整个配置过程如下:

首先要保证路由转发是开启的,可在/etc/sysctl里面添加


net.inet.ip.forwarding=1

1.安装openssl。

在freebsd下,安装软件方法有三种,第一种是prots,第二种是pkg_add,第三种是源码安装。在这里我使用ports进行安装

#cd /usr/ports/security/openssl

#make install

#make clean

2.安装lzo

#tar xf lzo-2.0.3.tar.gz

#cd lzo-2.0.3

#./configure && make && make install

3.安装openvpn

#cd /usr/src

#tar xf openvpn-2.2.2.tar.gz

#cd openvpn-2.2.2


#./configure --prefix=/usr/local/openvpn-2.2.2 --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib && make && make install


4.配置openvpn

#cd /usr/src/openvpn-2.2.2/easy-rsa/2.0

#vim vars

 

export KEY_COUNTRY="CN"

export KEY_PROVINCE="Huhei"

export KEY_CITY="WuHan"

export KEY_ORG="wswtek"

创建证书

#source ./vars

#./clean all

 

#./build-ca          #生成ca证书

#./build-key-server server  #生成服务器证书

#./build-dh

#./build-key breeze      #创建客户端证书

这时候 ,所有生成的证书全部位于/usr/src/openvpn-2.2.2/easy-rsa/2.0/keys目录下。如果把证书放在这里,怕有同事在创建新的证书的时候,误操作再次执行./clean-all将所有证书删除。故尔新建目录/etc/openvpn,并将所有证书拷到该目录下。

#cp -r /usr/src/openvpn-2.2.2/easy-rsa/2.0/keys /etc/openvpn/keys

编辑主配置文件server.conf

#cp /usr/src/openvpn-2.2.2/sample-config-files/server.conf /etc/openvpn/server.conf

#vim server.conf

port 1194  #openvpn默认通信端口

proto udp

dev tap0    #使用网桥模式

ca /etc/openvpn/keys/ca.crt

cert /etc/openvpn/keys/server.crt

key /etc/openvpn/keys/server.key

dh /etc/openvpn/keys/dh1024.pem

crl-verify /usr/local/openvpn-2.2.2/crl.pem   #吊销证书

ifconfig 192.168.21.228 255.255.255.0   #设置虚拟网卡IP,即tap0

ifconfig-pool-persist ipp.txt

server-bridge 192.168.21.228 255.255.255.0 192.168.21.70 192.168.21.80 #客户端拨后用于分配的地址池

push "redirect-gateway"   #客户端拨入后的网关

push "dhcp-option DNS 8.8.8.8" #客户端拨入后的dns

client-to-client #允许拨入的客户端互相访问

keepalive 10 120

comp-lzo    #启用压缩

user nobody

group nobody

persist-key

persist-tun

status opevpn-status.log

log /var/log/openvpn.log

log-append /var/log/openvpn.log

verb 3

5.配置网桥,在这里直接写成脚本放入/etc/rc.local中,以保证每次开机自动执行

vim /root/addbr0

 

#!/bin/sh

kldload if_tap

ifconfig bridge0 create

ifconfig bridge0 addm msk1

ifconfig bridge0 192.168.21.228  netmask 255.255.255.0  broadcast 192.168.21.255

/usr/local/openvpn-2.2.2/sbin/openvpn --config /etc/openvpn/server.conf --daemon openvpn

ifconfig bridge0 addm tap0

ifconfig bridge0 deletem tap0

/usr/local/openvpn-2.2.2/sbin/openvpn --config /etc/openvpn/server.conf --daemon openvpn

ifconfig bridge0 addm tap0

6.因为在freebsd中,不能像在centos中一样,通过service 来控制openvpn的启动与关闭。为方便控制启动,我又写了个脚本,如下:

 vim /root/openvpn.sh

 

#!/bin/sh

A=`ps aux | grep openvpn | grep nobody | awk '{print $2}'`

start () {

    /usr/local/openvpn-2.2.2/sbin/openvpn --config /etc/openvpn/server.conf &

    netstat -an | grep 1194 &&

    echo "openvpn is running..."

}

stop () {

        ps aux | grep openvpn | grep nodody &> /dev/null

        if [ $? = 0 ];then

            kill -9 $A

            echo "openvpn is stopped..."

        else

            echo "openvpn is not running..."

        fi

}

restart () {

    $0 stop

    $0 start

}

status () {

ps aux | grep openvpn | grep nodody &> /dev/null

    if [ $? = 0 ];then

        echo "openvpn is running..."

        netstat -an | grep 1194

    else

        echo "openvpn is stopped..."

    fi

}

case $1 in

    start)

    start

    ;;

    stop)

    stop

    ;;

    restart)

    restart

    ;;

    status)

    status

    ;;

    *)

    echo 'Usage "start|stop|restart|status"'

    ;;

esac

exit 0

这样,以后就可以通过 /root/openvpn.sh start|stop|restart|status 来对openvpn进行启动控制了。

到此服务器端设置完成。

客户端我不做详细讲述,简单列出client.ovpn的配置项

 

client

dev tap0

proto udp

remote 119.97.226.230 1194

persist-key

persist-tun

ca ca.crt

cert georgez.crt

key georgez.key

ns-cert-type server

comp-lzo

verb 3

 终于可以向老大交差了。

 

延伸阅读:

Tag标签: freebsd9   openvpn   桥接模式  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规