已知条件: #公司VPN SERVER(106.38.xx.xx)支持windows客户端使用PPTP,MAC电脑、iphone手机使用l2tp拨入。
 
问题: 用户在家或者出差的时候,拨通106.38.xx.xx失败。
 
解决方案:使用阿里VPN代理(CentOS 7),用户将106.38.xx.xx替换成123.57.xx.xx,用户名和密码不变。 #阿里VPN代理(123.57.xx.xx),支持windows客户端使用PPTP,MAC电脑、iphone手机使用l2tp拨入。
 
#原理:阿里VPN代理TCP、UDP以及GRE流量转发给后端的公司VPN SERVER,对于客户端来说只是换个ip。对于server来说流量和速度不变。

l2tp转发使用socat

pptp转发使用iptables

 1 [root@localhost ~]# cat /etc/rc.d/init.d/forward-pptp-l2tp.sh 
 2 #/bin/bash
 3 #chkconfig: 35 99 1
 4 #forward to og pptp server
 5 #author qinliang
 6 #date 11/27/2020
 7 
 8 echo 1 > /proc/sys/net/ipv4/ip_forward
 9 modprobe ip_nat_pptp
10 
11 local_ip=192.168.1.176
12 remote_ip=106.38.xx.xx
13 
14 iptables -P FORWARD DROP
15 iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
16 
17 # zabbix access
18 iptables -A INPUT -s 35.xx.xx.xx/32 -j ACCEPT #zabbix-sg.oasgames.com
19 iptables -A INPUT -s 34.xx.xx.xx/32 -j ACCEPT   #zabbix-jp.oasgames.com
20 
21 # forward PPTP
22 iptables -t nat -A PREROUTING -d $local_ip -p tcp --dport 1723 -j DNAT --to $remote_ip
23 iptables -A FORWARD -d $remote_ip -p tcp --dport 1723 -j ACCEPT
24 iptables -t nat -A POSTROUTING -d $remote_ip -p tcp --dport 1723 -j SNAT --to $local_ip
25 iptables -t nat -A PREROUTING -d $local_ip -p gre -j DNAT --to $remote_ip
26 iptables -A FORWARD -d $remote_ip -p gre -j ACCEPT
27 iptables -t nat -A POSTROUTING -d $remote_ip -p gre -j SNAT --to $local_ip
28 
29 # forward L2TP
30 socat -d -d -lf /var/log/socat.log UDP4-LISTEN:1701,bind=0.0.0.0,reuseaddr,fork UDP4:106.38.xx.xx:1701 &
31 socat -d -d -lf /var/log/socat.log UDP4-LISTEN:4500,bind=0.0.0.0,reuseaddr,fork UDP4:106.38.xx.xx:4500 &
32 socat -d -d -lf /var/log/socat.log UDP4-LISTEN:500,bind=0.0.0.0,reuseaddr,fork UDP4:106.38.xx.xx:500 &