2016年11月23日星期三

CentOS7搭建openvpn实现免流


webjoker's blog

webjokeradmin@webjoker.top

HomeCategoryTagMusicAbout

LinksLiuil's blog

CentOS7搭建openvpn实现免流

webjoker - 系统运维 - 2016-09-19

0x01 简介

最近在折腾免流,关于这个,网上教程多而杂,不方便新手,我在这里贴出我的方法,一个我认为算是简洁的办法,提前说明,方法并不一定适用于所有人所有地区,如果按照我的办法做过之后不能实现免流,对不起,请不要喷。我的测试环境:centos7.2,陕西移动,cmnet的APN。

首先我们需要知道免流的原理,运营商为了推广自家某些产品和服务,会推出一些免流量策略,比如说访问咪咕音乐就不消耗流量,运营商的流量计费服务器会检查数据包,准确的说是http数据包中的”X-Online-Host”字段,如果值为规定好的免流量节点,那么就不计算流量,所以,我们可以通过修改或添加这字段来实现免流。

0x02 安装 & 配置

安装

下面开始搭建,服务器用到的只要就是openvpn和easy-rsa,直接在源里安装即可:

yum -y install openvpn easy-rsa lzo

制作证书

下面开始制作证书,为了方便,先在openvpn目录下创建证书文件夹:

mkdir /etc/openvpn/easy-rsa/ cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

之后编辑easy-rsa的配置文件,位置就在/etc/openvpn/easy-rsa/vars:

export KEY_COUNTRY=”CN”

export KEY_PROVINCE=”SX”

export KEY_CITY=”Xian”

export KEY_ORG=”webjokerCA”

export KEY_EMAIL=”admin@webjoker.top”

export KEY_OU=”webjoker”

export KEY_NAME=”webjokervpn”


以上信息根据个人实际情况修改,接下来制作CA证书:

cd /etc/openvpn/easy-rsa/2.0 source vars ./clean-all ./build-ca

一路回车即可,这时我们查看keys目录,应该会有ca.crt和ca.key两个文件,其中ca.crt就是我们需要的ca证书,把他复制到/etc/openvpn/:

cp keys/ca.crt /etc/openvpn/

下面制作server证书:

./build-key-server webjokervpn ./build-dh

这里的webjokervpn,就是上面配置文件里面设置的KEY_NAME,根据个人情况修改。这两步做完之后,keys目录里面应该会有webjokervpn.crt、webjokervpn.key、dh2048.pem这三个文件,把他们都复制到/etc/openvpn/:

cp keys/webjokervpn.crt keys/webjokervpn.key keys/dh2048.pem /etc/openvpn/

然后制作client证书:

./build-key webjokervpnclient

这个webjokervpnclient,是客户端证书名称,可以自定义,这一步执行完,keys文件夹应该会有webjokervpnclient.crt和webjokervpnclient.key这两个文件,这是我们需要的客户端证书。接下来配置服务端,先把openvpn提供的样本配置文件复制到/etc/openvpn/下:

cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/

配置服务端

然后编辑/etc/openvpn/server.conf,下面是我的配置:

port 1194

proto tcp

dev tun

ca ca.crt

cert webjokervpn.crt

key webjokervpn.key

dh dh2048.pem

server 192.168.100.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push “redirect-gateway def1 bypass-dhcp”

push “dhcp-option DNS 223.5.5.5”

push “dhcp-option DNS 223.6.6.6”

duplicate-cn

keepalive 10 120

comp-lzo

user nobody

group nogroup

persist-key

persist-tun

status openvpn-status.log

verb 3


然后是添加防火墙,这里网上好多教程用的是squid,但是我不用这个,我就用防火墙,更简单,需要先安装iptables-services:

systemctl stop firewalld.service systemctl disable firewalld.service yum install iptables-services

之后配置防火墙规则/etc/sysconfig/iptables,下面贴出我的(哎呀,暴露了服务器配置了),根据自己情况修改:

*nat

:PREROUTING ACCEPT [0:0]

:POSTROUTING ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A POSTROUTING -s 192.168.100.0/24 -j SNAT –to-source 121.42.33.138

COMMIT

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -p tcp –dport 22 -j ACCEPT

-A INPUT -p tcp –dport 25 -j ACCEPT

-A INPUT -p tcp –dport 80 -j ACCEPT

-A INPUT -p udp –dport 123 -j ACCEPT

-A INPUT -p tcp –dport 110 -j ACCEPT

-A INPUT -p tcp –dport 143 -j ACCEPT

-A INPUT -p tcp –dport 443 -j ACCEPT

-A INPUT -p tcp –dport 1194 -j ACCEPT

-A INPUT -p tcp –dport 3306 -j ACCEPT

-A INPUT -j REJECT –reject-with icmp-host-prohibited

-A FORWARD -s 192.168.100.0/24 -j ACCEPT

COMMIT


上面的”121.42.33.138”换成服务器的ip地址,保存之后重启以上所有服务,并添加开机启动:

systemctl restart openvpn@server systemctl enable openvpn@server systemctl restart iptables systemctl enable iptables

配置客户端

最后配置客户端,这里我们需要把下面三个文件下载到本地:

/etc/openvpn/easy-rsa/keys/ca.crt

/etc/openvpn/easy-rsa/keys/webjokervpnclient.crt

/etc/openvpn/easy-rsa/keys/webjokervpnclient.key


之后从下面的下载链接下载配置文件,按照里面提示修改后导入手机的openvpn就可以了。

下载链接:client.ovpn

TAGS: 

CentOS

 

VPN

Comments

   

Powered by Jekyll. Theme Designed by webjoker.

没有评论:

发表评论