vpn

openvpn

客户端   192.168.1.0/24 
vpn服务端分配 10.8.0.0/24   服务端内网  192.168.9.0/24    一定不能和客户端内网一样

客户端要连服务端内网其他服务器需要加路由
route add -net 10.8.0.0 netmask 255.255.255.0 gw vpn服务器的192.168.9.0/24段的IP

yum install openvpn easy-rsa -y

cd /usr/share/easy-rsa/3
vim vars
export KEY_COUNTRY="CN"
export KEY_PROVINCE="SH"
export KEY_CITY="ShangHai"
export KEY_ORG="Company"
export KEY_EMAIL="liangguangyu@dachuizichan.com"
export KEY_OU="MyOrganization"

source vars

./easyrsa init-pki # 初始化证书目录pki
./easyrsa build-ca nopass # 创建根证书提示输入Common Name名称随意但是不能和服务端证书或客户端证书名称相同
cp pki/ca.crt /etc/openvpn/
./easyrsa gen-dh # 生成Diffle Human参数它能保证密钥在网络中安全传输
cp pki/dh.pem /etc/openvpn/

./easyrsa build-server-full server nopass # server是服务端证书名称可以用其它名称

./easyrsa build-client-full npt02 nopass # client是客户端名称 每个客户端生成一个
./easyrsa build-client-full nix02 nopass
./easyrsa build-client-full nix22 nopass  名字和/etc/openvpn/ccd 里面文件对应

cd pki/private/ && cp * /etc/openvpn/ 已经有的可以不覆盖
cd ../../pki/issued && cp * /etc/openvpn/ 
cp /usr/share/doc/openvpn-2.4.5/sample/sample-config-files/server.conf /etc/openvpn/
cat /etc/openvpn/server.conf
local ip # 填服务器真实IP
port 1194
proto tcp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem
server 10.8.0.0 255.255.255.0 # 给客户端分配的IP段

client-config-dir /etc/openvpn/ccd
route 192.168.69.0 255.255.255.0
route 192.168.73.0 255.255.255.0
route 192.168.81.0 255.255.255.0
push "route 192.168.69.0 255.255.255.0" # 重定向客户端网关
push "route 192.168.73.0 255.255.255.0" # 重定向客户端网关
push "route 192.168.81.0 255.255.255.0" # 重定向客户端网关
#duplicate-cn 允许客户使用一样的client.key client.crt

client-to-client
keepalive 10 120
comp-lzo
max-clients 10
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3 # 日志等级

cat /etc/openvpn/ccd/npt02   #客户端网络信息
iroute 192.168.69.0 255.255.255.0
cat /etc/openvpn/ccd/nix02
iroute 192.168.73.0 255.255.255.0
cat /etc/openvpn/ccd/npt22
iroute 192.168.81.0 255.255.255.0



net.ipv4.ip_forward = 1  /etc/sysctl.conf   sysctl -p   要内网互通每个都需要配置ip转发
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE  tun0的数据转发到eth0192.168.9.0/24
service iptables save
/etc/init.d/openvpn start

客户端
从服务器拷贝ca.crt nix02.crt  nix02.key  到客户端.每个客户端的 nix02.crt  nix02.key不通
dacui.ovpn 内容 
client
proto tcp
dev tun
remote 服务器ip 11947
persist-key
persist-tun
comp-lzo
ca ca.crt
cert nix02.crt
key nix02.key
verb 3

windows客户端 C:\Program Files\OpenVPN\config\目录下

启动客户端

pptpd

yum install ppp pptpd

/etc/pptpd.conf
localip 10.0.0.1
remoteip 10.0.0.100-200
上面的IP地址是可以随便填的,ABC三类的内网地址都可以,主要兼顾其他地方的IP配置,不要出现IP冲突就可以了,后面的remoteip
默认从第一个10.0.0.100开始分配给客户,localip表示分配给服务器的内部网关地址。

/etc/ppp/pptpd-options
ms-dns 202.96.128.86
ms-dns 202.96.128.166
这里配置成客户端所在地的DNS就好了

/etc/ppp/chap-secrets
依次为:账号,协议,密码,ip地址
chap-secret

service pptpd start
chkconfig pptpd on
日志  /var/log/messages


net.ipv4.ip_forward = 1
sysctl -p

pptp需要用到的端口
pptp使用到的端口只有一个,那就是1723,网上有很多误人子弟的文章还说要开47端口,真是坑爹,因为GRE协议号是47,并不代表需要开47端口,
因此如果是要映射端口的话,1723就完全够了,不要信网上的某些教程,如果使用了iptable来作为防火墙,需要加入规则
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p 47 -j ACCEPT
如果是在内网中,需要网关转发,那么网关需要如下配置:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1723 -j DNAT --to SERVER_IP
iptables -t nat -A PREROUTING -i eth0 -p 47 -j DNAT --to SERVER_IP

配置防火墙转发
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT --to 115.115.115.115
其中第一种比较简单,自动伪装ip,第二种的10.0.0.0/24指的是VPN虚拟内网,而115.115.115.115代表外网地址,进行NAT。如果VPN服务器是
用来代理上网的,仅有上面的配置会出现访问网站缓慢的情况,需要手动修改一下转发包的mss
iptables -A FORWARD -p tcp --syn -s 10.0.0.0/24 -j TCPMSS --set-mss 1356

这样就不会出现打不开网页的问题了,最后可以保存一下防火墙。

访问限制
iptables -A FORWARD -p tcp -s 10.0.0.0/24 -d 180.97.163.157 -j ACCEPT  只允许访问180.97.163.157
iptables -A FORWARD -p tcp -s 10.0.0.0/24 -j DROP

shadowsocks

https://copr.fedorainfracloud.org/coprs/librehat/shadowsocks/

centos6

[librehat-shadowsocks]
name=Copr repo for shadowsocks owned by librehat
baseurl=https://copr-be.cloud.fedoraproject.org/results/librehat/shadowsocks/epel-6-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/librehat/shadowsocks/pubkey.gpg
repo_gpgcheck=0
enabled=1
enabled_metadata=1

centos7

[librehat-shadowsocks]
name=Copr repo for shadowsocks owned by librehat
baseurl=https://copr-be.cloud.fedoraproject.org/results/librehat/shadowsocks/epel-7-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/librehat/shadowsocks/pubkey.gpg
repo_gpgcheck=0
enabled=1
enabled_metadata=1