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
没有评论:
发表评论