全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 12667|回复: 49

[经验] openvz vps ubuntu 安装 openvpn 并配置iptables防火墙

[复制链接]
发表于 2010-4-30 17:33:08 | 显示全部楼层 |阅读模式
更新记录:
2010/05/01
第二版发布,小修正openvpn的配置,解决通过vpn上网的掉线问题,现在己经可以非常稳定的工作。不会出现开网页会时不时的抽风的现象
2010/04/30
第一版发布,完成整个配置流程
---------------------------------------------------------------------------------------------------------------------------

对于买了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 Files\OpenVPN\config 下面,需要使用vpn的时候,点开openvpn,直接connect即可。

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

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

    参考资料

    http://vpsnoc.com/blog/how-to-in ... untu-vps-instantly/

    http://openvpn.se/download.html

    https://help.ubuntu.com/9.10/serverguide/C/openvpn.html

    http://www.douhua.im/2010/01/06/ ... all-openvpn-server/

原文链接:http://www.netroby.com/article-1565.html (高清详细版)

[ 本帖最后由 netroby 于 2010-5-1 09:03 编辑 ]
发表于 2010-4-30 18:02:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2010-4-30 18:37:58 | 显示全部楼层
在openvz和xen下面完美通过。
发表于 2010-4-30 18:41:44 | 显示全部楼层
还是centos好
发表于 2010-4-30 19:07:21 | 显示全部楼层
84 上 centos从来没成功过
 楼主| 发表于 2010-5-1 09:05:35 | 显示全部楼层
经过摸索和尝试,己经比较好的解决openvpn下面vpn连接不稳定的工作状态,现在看网页,看视频,响应速度己经有了很明显的提升。

求版主或管理员加个精或置个顶吧。也算是对技术开源的一种帮扶和支持。
发表于 2010-5-1 09:25:38 | 显示全部楼层
不知道你怎么测试的。。
openvz是无法使用MASQUERADE的。。
 楼主| 发表于 2010-5-1 09:52:58 | 显示全部楼层
原帖由 ccp 于 2010-5-1 09:25 发表
不知道你怎么测试的。。
openvz是无法使用MASQUERADE的。。

请联系提供商为你开通。如果你的提供商不愿意提供,那就是他的不作为。
quickweb很乐意帮助用户开通openvz的iptables模块。我己经写的很清楚明白了。
需要tun/tap和iptables相关模块的支持。提供商应该知道需要开启哪些。如果他们不知道,只能证明他们的服务和支持力量不到位。

需要开启的iptables模块至少需要NAT,MASQUERADE
 楼主| 发表于 2010-5-1 09:53:31 | 显示全部楼层
参见openvz的官方说明,需要iptables完整的模块,提供商必须自行加载相关模块。
发表于 2010-5-1 11:45:03 | 显示全部楼层
原帖由 netroby 于 2010-5-1 09:52 发表

请联系提供商为你开通。如果你的提供商不愿意提供,那就是他的不作为。
quickweb很乐意帮助用户开通openvz的iptables模块。我己经写的很清楚明白了。
需要tun/tap和iptables相关模块的支持。提供商应该知道需要开启哪 ...



说了MASQUERADE不能的。。。只有SNAT和DNAT是支持的。真的,好好测试好再发布,误人子弟。。
http://forum.openvz.org/index.php?t=msg&goto=8117
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-19 02:38 , Processed in 0.062843 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表