转发pptp和l2tp
已知条件: #公司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 &