PPTP 容易被防火墙锁定,国外 vps 尽量不用;

pptpd 服务器 https://www.bbsmax.com/A/nAJvO0Xx5r/

1 安装pptp # apt-get install pptpd

2 安装之后配置pptp,首先查看本机ip和网卡信息 # ifconfig
eth0是外网的的网卡,下面的步骤要用的

3 配置pptp的主配置文件,设置pptp内网地址,并配置地址池 # vi /etc/pptpd.conf
localip 192.168.0.1
remoteip 192.168.0.134-238,192.168.0.245
localip 是本机的局域网的IP地址,remoteip是ip地址池范围,这里用默认的就好了,将前面的注释符去掉就可以了

4 设置pptp用于解析dns的服务器ip地址 #vi /etc/ppp/pptpd-options  ms-dns 1.1.1.1 ms-dns 8.8.8.8

5 添加pptp登录用户 # vi /etc/ppp/chap-secrets
user pptpd password *

6 重启下pptpd服务 # /etc/init.d/pptpd restart

7 开启系统的路由转发功能 # vi /etc/sysctl.conf   将 net.ipv4.ip_forward=1  重新读取sysctl配置   #sysctl -p

8 配置防火墙规则,不然无法上网

没有安装iptables的话,先安装下

开启路由转发规则  # iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

保存规则 # iptables-save >/etc/iptables-rules 编辑网卡,使得网卡每次重启自动加载防火墙规则 # vi /etc/network/interfaces

或加入到 /root/ddns/drop 文件里

9 设置mtu,防止数据包过大,产生有些网站访问不了。正常设置为1200

# iptables -A FORWARD -s 192.168.0.0/24 -p tcp -m tcp –tcp-flags SYN,RST SYN -j TCPMSS –set-mss 1200

保存规则 # iptables-save >/etc/iptables-rules

10 设置pptp随系统自启动, 测试下pptp服务有没有开启,默认开启的端口是1723端口

# update-rc.d pptpd enable

# netstat -tuln | grep 1723

pptp服务端配置到此结束,客户端的配置可以分为在windows和linux下,windows的客户端一进集成到系统,简单配置及可以了,暂时讨论。
这里我配置的过程中出现619的错误,原来是我配置pptp的账户密码时填错了服务名将pptpd填成httpd,呵呵,这个错误也会发生。

 

pptd 客户端

https://www.likecs.com/show-308355991.html#sc=126

A.安装pptp客户端软件 sudo apt-get install pptp-linux
B.查看网络配置 ifconfig / route -n
C.初始化一个***的连接通道:mypptp

sudo pptpsetup --create mypptp --server xxx.xxx.xxx.xxx --username xx1 --password xx2 --encrypt --start
ip addr show

D.

1.断开***连接 poff mypptp
2.重新连接*** pon mypptp
3.读取配置文件重新连接*** sudo pppd call mypptp updetach

 

容易被防火墙锁定,国外 vps 不用;
IPsec VPN  ios 测试成功,安卓成功,https://github.com/hwdsl2/docker-ipsec-vpn-server

docker run \
    --name ipsec-vpn-server \
    --env-file /root/conf/vpn.env \
    -v ikev2-vpn-data:/etc/ipsec.d \
    -v /lib/modules:/lib/modules:ro \
    --network=mynet \
    --ip 172.18.0.5 \
    -d --privileged \
    hwdsl2/ipsec-vpn-server

L2TP without IPSec 没有秘钥
依据如下 https://github.com/hwdsl2/docker-ipsec-vpn-server/issues/191
run.sh 把如下两行注释
# $ipi 1 -p udp --dport 1701 -m policy --dir in --pol none -j DROP
# $ipi 6 -p udp --dport 1701 -j DROP
Dockerfile 增加 1701/udp
EXPOSE 500/udp 4500/udp 1701/udp
重新生成镜像

iptables -t nat -nL

指定 IP 才可以访问;墙外主机无法直连,墙内的 vps 才需要这样设置,
https://10001blog.xslinc.com/?p=9475
/root/ddns/drop
/sbin/iptables -I INPUT -p udp --dport 500:4500 -j DROP
/sbin/iptables -I INPUT -s frp11.xie3fa.top,172.17.0.0/24,172.18.0.0/24 -p udp --dport 500:4500 -j ACCEPT
 
/root/ddns/ipupdate
   `/sbin/iptables -t nat -D PREROUTING -s $old_ip -p udp --dport 500 -j DNAT --to-destination 172.18.0.5:500`
   `/sbin/iptables -t nat -D PREROUTING -s $old_ip -p udp --dport 4500 -j DNAT --to-destination 172.18.0.5:4500`

   `/sbin/iptables -t nat -I PREROUTING -s $new_ip -p udp --dport 500 -j DNAT --to-destination 172.18.0.5:500`
   `/sbin/iptables -t nat -I PREROUTING -s $new_ip -p udp --dport 4500 -j DNAT --to-destination 172.18.0.5:4500`

Windows 错误 809 
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f 
(测试ok)
某些个别的 Windows 系统配置禁用了 IPsec 加密,此时也会导致连接失败。要重新启用它,可以运行以下命令并重启。 
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\RasMan\Parameters /v ProhibitIpSec /t REG_DWORD /d 0x0 /f
(未遇到这种情况)

Android
重要: Android 用户应该使用更安全的 IKEv2 模式 连接(推荐)。Android 12+ 仅支持 IKEv2 模式。
Android 系统自带的 VPN 客户端对 IPsec/L2TP 和 IPsec/XAuth ("Cisco IPsec") 模式使用安全性较低的 modp1024 (DH group 2)。

如果你仍然想用 IPsec/L2TP 模式连接,你必须首先编辑 VPN 服务器上的 /etc/ipsec.conf 并在 ike=... 
一行的末尾加上 ,aes256-sha2;modp1024,aes128-sha1;modp1024 字样。保存文件并运行 sudo service ipsec restart。

Docker 用户:在 你的 env 文件 中添加 VPN_ENABLE_MODP1024=yes,然后重新创建 Docker 容器。

如果你的 Android 6.x 或者 7.x 设备无法连接,请尝试以下步骤:

    单击 VPN 连接旁边的设置按钮,选择 "Show advanced options" 并且滚动到底部。如果选项 "Backward compatible mode" 存在(参见屏幕截图),
请启用它并重试连接。如果不存在,请尝试下一步。
    编辑 VPN 服务器上的 /etc/ipsec.conf。找到 sha2-truncbug 一行并切换它的值。也就是说,
将 sha2-truncbug=no 替换为 sha2-truncbug=yes,或者将 sha2-truncbug=yes 替换为 sha2-truncbug=no。保存修改并运行 service ipsec restart。然后重新连接 VPN。

Docker 用户: 如需在 /etc/ipsec.conf 中设置 sha2-truncbug=yes(默认为 no),你可以在你的 env 文件中添加 VPN_SHA2_TRUNCBUG=yes,然后重新创建 Docker 容器。
使用 IPSec Xauth PSK 能拨号上去,但是上不了网;

Android MTU/MSS 问题 暂时没有遇到这个问题;

Docker 用户: 要修复这个问题,不需要运行以上命令。你可以在你的 env 文件中添加 VPN_ANDROID_MTU_FIX=yes,然后重新创建 Docker 容器。

苹果 IPSec 拨号上去,无法上网;
浏览器输入本身服务器的 ip,可以访问80的网页;
浏览器输入本身服务器的 ip,不可以访问80的网页;说明不能访问外网;
https://github.com/hwdsl2/setup-ipsec-vpn/issues/247
用本地 ssh 终端,也无法 ping 通外网 ip,原因上vpn.env 加了 VPN_SHA2_TRUNCBUG=yes
安卓 IPSec Xauth PSK 拨号上去能上外网,可以 ping 通外网 ip

IKEv2 证书绑定了 ip,无法穿透内网;
frp12:vpnclient.mobileconfig vpnclient.sswan vpnclient.p12
frp11:vpnclient.mobileconfig vpnclient.sswan vpnclient.p12
frp10:vpnclient.mobileconfig vpnclient.sswan vpnclient.p12

局域网内:windows 和 iPhone 手机不能用本网段的外网 ip,用内网地址可以,百思不得其解;安卓正常;
路由器定时执行此命令   指向网关ip;lan_ip 为网关ip my_ip 为路由器外网ip;
/usr/sbin/iptables -t nat -I PREROUTING -s $lan_ip/24 -d $my_ip -j DNAT --to-destination $lan_ip
从内网段的 ip 访问路由器外网 ip,范围太大,影响后面本地网段iptables -t nat -I PREROUTING的设置,后面设置不起作用;

 `/usr/sbin/iptables -t nat -I PREROUTING -s $lan_ip/24 -d $my_ip -p udp --dport 500:4500 -j DNAT --to-destination $lan_ip`
从内网段的 ip 访问路由器外网 ip 的 udp 端口500:4500,指向网关ip;500 1701 4500 在这网段里;

https://www.songluyi.com/%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%E5%B0%8F%E7%B1%B3%E8%B7%AF%E7%94%B1vpn-%E6%97%A0psk%E8%BF%9E%E6%8E%A5/

如何解决小米路由VPN 无PSK连接
l2tp 安装脚本
### 系统支持:CentOS6+,Debian7+,Ubuntu12+
wget --no-check-certificate https://raw.githubusercontent.com/teddysun/across/master/l2tp.sh
chmod +x l2tp.sh
./l2tp.sh
不支持直接在系统操作 
小米路由器 L2TP 服务器端      OpenWrt上搭建纯L2TP服务器
编辑/etc/xl2tpd/xl2tpd.conf,配置l2tp服务器端

L2TP without IPSec 没有秘钥 小米路由器连接有问题,经常连接不上;有时候连接上去上不了网,也 ping 不通其他连接到服务器的客户端;

https://github.com/hwdsl2/docker-ipsec-vpn-server/blob/master/docs/advanced-usage-zh.md#%E5%90%AF%E7%94%A8-libreswan-%E6%97%A5%E5%BF%97

启用 Libreswan 日志

为了保持较小的 Docker 镜像,Libreswan (IPsec) 日志默认未开启。如果你需要启用它以进行故障排除,
首先在正在运行的 Docker 容器中开始一个 Bash 会话: docker exec -it ipsec-vpn-server env TERM=xterm bash -l
然后运行以下命令: 
# For Alpine-based image 
apk add --no-cache rsyslog 
rsyslogd 
rc-service ipsec stop; rc-service -D ipsec start >/dev/null 2>&1 
sed -i '/pluto\.pid/a rsyslogd' /opt/src/run.sh 
exit

注: 如果你在不启用 privileged 模式的情况下使用本镜像,则错误 rsyslogd: imklog: cannot open kernel log 是正常的。
完成后你可以这样查看 Libreswan 日志:
docker exec -it ipsec-vpn-server grep pluto /var/log/auth.log
如需查看 xl2tpd 日志,请运行
 docker logs ipsec-vpn-server
查看服务器状态

检查 IPsec VPN 服务器状态:
docker exec -it ipsec-vpn-server ipsec status
查看当前已建立的 VPN 连接:
docker exec -it ipsec-vpn-server ipsec trafficstatus

OPENVPN 测试中
https://hub.docker.com/r/kylemanna/openvpn   用于 Docker 的 OpenVPN 
http://www.manongjc.com/detail/64-rvungbvqhbiyqdz.html     docker部署openvpn
#生成配置文件 
docker run -v /root/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://frp11.xie3fa.top

生成密钥文件
docker run -v /root/openvpn:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki


启动 OpenVPN 服务器进程 
docker run -d --name openvpn-server -v /root/openvpn:/etc/openvpn --cap-add=NET_ADMIN kylemanna/openvpn

生成没有密码的客户端证书 
docker run -v /root/openvpn:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass

使用嵌入式证书检索客户端配置  导出客户端配置
docker run -v /root/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > CLIENTNAME.ovpn