Linux · 2010-05-22

openvz ubuntu安装openvpn并配置iptables防火墙

对于买了openvz vps,想开立vpn的朋友们,首先应该发送Ticket联络你的提供商,开启TUN/TAP和iptables相关的模块,并开启iptables相关 的组件。

我们先检测下是否己经有开通tun和tap,检测是否开启tun功能的方法是:

lsmod | grep tun

如果没有显示, 再试试下面的命令

modprobe tun

这种检测手段并不很准确,为了保险起见 ,你还是联系下提供商,记住,一 定要开启TUN/TAP和iptables相关组件,不然配置会不成功。

等待提供商为你开启了相关功能后,下面就正式动手进行配置了。

以下命令都是在命令行进行手动敲入的,因为自动化脚本并不能解决在安装openvpn过程中遇到的各种小问题,所以需要手动来配置,才能最后让 openvpn正常运作。所以请大家耐心的进行复制粘贴。出现了错误,仔细分析前因后果。

记住需要使用到的常量,在下面输入的时候,要记得用这些变量的值,替换变量,不要原封不动的复制粘贴代码。

$HOSTNAME 你的vps服务器的机器名,可输入hostname命令获取

$IP 你vps对外的IP地址,公网IP,可输入ifconfig查询。

服务器安装配置

安装openvpn开始,先更新下源

apt-get update

安装openvpn和必须的类库

apt-get install openvpn libssl-dev  openssl

转到openvpn的配置文件夹

cd /etc/openvpn/

拷贝工具过来,准备生成Key

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

进入工作目录

cd /etc/openvpn/easy-rsa/2.0/

改变文件可执行状态

chmod +rwx *

编辑配置文件,修改默认用户信息 vim ./vars

找到下列内容进行替换成你自己的,比如国家可以自US改成CN

    export KEY_COUNTRY=“US”
 
    export KEY_PROVINCE=“CA”
 
    export KEY_CITY=“SanFrancisco”
 
    export KEY_ORG=“Fort-Funston”
 
    export KEY_EMAIL=“me@myhost.mydomain”

编辑完毕后,保存一下,执行下面的命令

source vars
 
    ./clean-all
 
    ./build-dh
 
    ./pkitool --initca
 
    ./pkitool --server server

进入key目录

cd keys

生成key

    openvpn --genkey --secret ta.key
 
    cp  ./{ca.crt,ca.key,ta.key,server.crt,server.key,dh1024.pem} /etc/openvpn/

编辑openvpn配置文件

vim /etc/openvpn/openvpn.conf

用下面的内容替换原来的内容

    port 1194
 
    proto udp
 
    dev tun
 
    ca ca.crt
 
    cert server.crt
 
    key server.key
 
    dh dh1024.pem
 
    server 10.8.0.0 255.255.255.0
 
    push “redirect-gateway def1”
 
    push “dhcp-option DNS 8.8.8.8”
 
    push “dhcp-option DNS 8.8.4.4”
 
    ifconfig-pool-persist ipp.txt
 
    keepalive 10 120
 
    client-to-client
 
    comp-lzo
 
    user daemon
 
    group daemon
 
    persist-key
 
    persist-tun
 
    status openvpn-status.log
 
    verb 3

配置文件保存后,现在开始配置网络相关设置,先开启转发功能

echo “net.ipv4.ip_forward=1” >> /etc/sysctl.conf

使设定生效

sysctl -p

开始配置防火墙了,先清空防火墙现有的设置,遇到错误,不用管它,进行下一个操作。

iptables -t nat -F
 
    iptables -t nat -X
 
    iptables -t nat -P PREROUTING ACCEPT
 
    iptables -t nat -P POSTROUTING ACCEPT
 
    iptables -t nat -P OUTPUT ACCEPT
 
    iptables -t mangle -F
 
    iptables -t mangle -X
 
    iptables -t mangle -P PREROUTING ACCEPT
 
    iptables -t mangle -P INPUT ACCEPT
 
    iptables -t mangle -P FORWARD ACCEPT
 
    iptables -t mangle -P OUTPUT ACCEPT
 
    iptables -t mangle -P POSTROUTING ACCEPT
 
    iptables -F
 
    iptables -X
 
    iptables -P FORWARD ACCEPT
 
    iptables -P INPUT ACCEPT
 
    iptables -P OUTPUT ACCEPT
 
    iptables -t raw -F
 
    iptables -t raw -X
 
    iptables -t raw -P PREROUTING ACCEPT
 
    iptables -t raw -P OUTPUT ACCEPT

设置防火墙,允许nat,端口转发和常用的服务,需要注意的是第一行的-o venet0 在openvz下面是venet0,在xen下面可能是eth0,这是网卡的编号,大家可以用ifconfig查看,看第一块网卡是eth0还是 venet0,不要搞错了,搞错了就访问不了外面的互联网。

 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
 
    iptables -A INPUT -i lo -j ACCEPT
 
    iptables -A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT
 
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
    iptables -A OUTPUT -j ACCEPT
 
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 
    iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
 
    iptables -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
 
    iptables -A INPUT -p udp --dport 1194 -j ACCEPT
 
    iptables -A INPUT -s 10.8.0.0/24 -p all -j ACCEPT
 
    iptables -A FORWARD -d 10.8.0.0/24 -j ACCEPT
 
    iptables -A INPUT -i tun+ -j ACCEPT
 
    iptables -A FORWARD -i tun+ -j ACCEPT
 
    iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
 
    iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix “iptables denied: ” --log-level 7
 
    iptables -A INPUT -j REJECT
 
    iptables -A FORWARD -j REJECT

保存 防火墙规则,让它在下次启动系统时自动生效

iptables-save > /etc/iptables.up.rules

新建网络启动时加载的脚本 vim /etc/network/if-pre-up.d/iptables
输入下面的内容

#!/bin/bash
 
    /sbin/iptables-restore < /etc/iptables.up.rules

改变执行权限

chmod a+x /etc/network/if-pre-up.d/iptables

等下次你启动系统的时候,防火墙就会以现在的规则执行。

现在既然配置都己经好了,那就重启openvpn服务吧

/etc/init.d/openvpn restart

客户端配置文件

cd /etc/openvpn/easy-rsa/2.0/
 
    source vars
 
    ./pkitool client1
 
    cd keys/

编辑客户端配置文件 vim $HOSTNAME.ovpn

输入下面的内容

client
 
    remote $ip 1194
 
    dev tun
 
    comp-lzo
 
    ca ca.crt
 
    cert client1.crt
 
    key client1.key
 
    route-delay 2
 
    route-method exe
 
    redirect-gateway def1
 
    dhcp-option DNS 10.8.0.1
 
    verb 3

注意把上面的$ip,$HOSTNAME变量替换为真实的主机名和IP地址,不得有误
打包密匙,供客户端使用

tar -zcvf  keys.tar.gz ca.crt ca.key client1.crt client1.csr client1.key ta.key $HOSTNAME.ovpn

移动到Root的主目录下面

mv keys.tar.gz ~/

你可以用Winscp等软件,把这个下载回来。解压放到你的openvpn目录下面使用

这些密匙和配置文件是放在C:Program FilesOpenVPNconfig 下面,需要使用vpn的时候,点开openvpn,直接connect即可。

客户端我们用的是openvpn gui工具,在windows下面可以很方便的连接openvpn服务器上。

在服务器端己经启动了,我们就可以用GUI工具进行连接了,右键点击托盘栏的小图标,启动connect即可连接vpn了。