• 转发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 &
  • 相关阅读:
    Spell checker
    Power Network
    ACM Computer Factory
    Asteroids
    Golang: 并发抓取网页内容
    Golang: 抓取网页内容
    Golang: 读取文件并统计内容
    Golang: 接收命令行输入
    React: 有状态组件生成真实DOM结点
    React: 无状态组件生成真实DOM结点
  • 原文地址:https://www.cnblogs.com/ccielife/p/14049537.html
Copyright © 2020-2023  润新知