通过VPS穿透内网发布内网服务

通过VPS穿透内网发布内网服务

黑客软件访客2021-10-12 9:39:007521A+A-

  当我们有一个本地服务又想暂时对外提供的时候,发现机子在内网。这个时候我们刚好手上有台VPS,那么接下来我们就来尝试下穿透内网对外提供

  主机名  IP    VPN IP                       备注

  VPS     外网  192.168.31.133 192.168.0.1   外网VPS

  server  内网  192.168.137.2 192.168.0.234  VPN客户端

  1.VPS开启VPN,我们选择pptp比较简单。

  需要安装ppp pptpd 还需要支持iptables(安装iptables为了做nat,基本都带iptables)

  vps情况如下

  [root@localhost ~]# cat /etc/issue

  CentOS release 5.5 (Final)

  [root@localhost ~]# uname -a

  Linux MiWiFi-R1D 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

  版本为centos 5.5 内核为2.6.18.

  ps内核版本在2.6.15后的默认都已经有了MPPE(Microsoft Point to Point Encryption,微软点对点加密)补丁,所以不需要再安装dkms和kernel_ppp_mppe内核补丁。

  1)安装pptp vpn服务

  a.查看是否有ppp,iptables

  [root@localhost ~]# rpm -qa|grep iptables

  iptables-1.3.5-5.3.el5_4.1

  iptables-ipv6-1.3.5-5.3.el5_4.1

  [root@localhost ~]# rpm -qa|grep ppp

  rp-pppoe-3.5-32.1

  ppp-2.4.4-2.el5

  可以看到是支持ppp和iptables,否则就yum install安装

  ppp-2.4.4-2.el5

  iptables-1.3.5-5.3.el5_4.1

  b.查看是否支持安装pptp

  网上一般2个方法,一个看知否支持

  [root@localhost ~]# modprobe ppp-compress-18 && echo ok////////////问题点////////////////

  ok

  (用模块方式支持MPPE加密模式浏览,如果内核支持检测不到。)显示“ok”则表明通过。

  [root@localhost ~]# cat /dev/net/tun

  cat: /dev/net/tun: File descriptor in bad state

  上述两条只要一条通过,就能安装pptp。

  c.安装pptp

  安装 pptpd

  加入 yum 源

  rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel5/pptp-release-current.noarch.rpm

  安装 pptpd

  yum install pptpd

  [root@localhost proc]# yum list|grep pptpd

  pptpd.x86_64                               1.4.0-1.rhel5               installed

  没装直接

  yum install

  2)配置pptp vpn服务

  主配置文件/etc/pptpd.conf

  选项文件/etc/ppp /options.pptpd

  帐号文件/etc/ppp/chap-secrets

  pptpd –-help

  specified in the config file (default config file: /etc/pptpd.conf).

  可以看到pptp配置文件位于/etc/pptpd.conf

  a.主配置文件/etc/pptpd.conf

  先看看默认配置

  [root@localhost proc]#grep -v "#" /etc/pptpd.conf

  option /etc/ppp/options.pptpd

  logwtmp

  localip 192.168.0.1

  remoteip 192.168.0.234-238,192.168.0.245

  可以看出VPNSERVER的虚拟ip为192.168.0.1

  vpnclient获取的ip段位192.168.0.234-192.168.0.245

  b.选项配置文件/etc/ppp /options.pptpd

  [root@localhost proc]# grep -v "#" /etc/ppp/options.pptpd

  可配置DNS等

  ms-dns 8.8.8.8

  c.账号文件/etc/ppp/chap-secrets

  # client        server  secret                  IP addresses

  osvpnuser01 ppptpd 123456 *

  test pptpd 1234 *

  账号 服务名(在option.pptpd)密码 可登录ip(*表示没限制)

  d.启动pptpdvpn并设置开机启动,并开启ip_forward(因为下面要使用到iptables)

  1)开启ip_forward

  修改/etc/sysctl.conf文件的ip_forward=1

  vi /etc/sysctl.conf

  然后使其生效

  sysctl –p

  2)开启pptpvpn并开机启动

  [root@MiWiFi-R1D ~]# service pptpd start

  Starting pptpd:                                            [  OK  ]

  chkconfig开机启动服务

  [root@MiWiFi-R1D ~]# chkconfig –level 345 pptpd on

  [root@MiWiFi-R1D ~]# chkconfig –list|grep pptpd

  pptpd              0:off    1:off    2:off    3:on    4:on    5:on    6:off

  我们可以看到

  netstat nltp |grep pptpd 可以看到 1723端口

  [root@localhost proc]# netstat -nltp|grep pptpd

  tcp        0      0 0.0.0.0:1723                0.0.0.0:*                   LISTEN      4427/pptpd

  —————-到这里 ,pptpvpn部分配置完成!!!路由和iptables部分我们稍后配置

  2.配置VPSclient,假如我们客户端也为centos 5.5 linux的pptp client稍微复杂点

  1)需要装ppp,pptp.src.rpm包含pptp和pptp-debuginfo

  检查是否有ppp

  rpm -qa|grep ppp

  检查是否安装pptp

  [root@localhost ~]# rpm -qa|grep pptp

  pptp-debuginfo-1.7.2-3

  pptp-1.7.2-3

  a.安装ppp直接

  yum install ppp

  b.而安装pptp和pptp-debuginfo

  下载pptp-1.7.2-3.rhel5.src.rpm  源码rpm包安装,解决依赖关系

  #wget http://nchc.dl.sourceforge.net/project/pptpclient/pptp/pptp-1.7.2/pptp-1.7.2-3.rhel5.src.rpm

  #rpmbuild pptp-1.7.2-3.rhel5.src.rpm #.src.rpm包的安装方法

  #cd /usr/src/redhat/RPMS/x86_64

  [root@localhost x86_64]# ls

  pptp-1.7.2-3.x86_64.rpm  pptp-debuginfo-1.7.2-3.x86_64.rpm

  #rpm –ivh 安装这两个rpm包

  2)pptp vpn client端配置

  你会发现可以使用pptpseyup命令进行客户端配置

  #pptpsetup –create mytesevpn –server 192.168.31.131 –username test –password 1234

  #cd /etc/ppp/peers

  [root@localhost ~]# cat /etc/ppp/peers/mytestvpn

  # written by pptpsetup

  pty "pptp 192.168.31.133 –nolaunchpppd"

  lock

  noauth

  nobsdcomp

  nodeflate

  name test

  remotename mytestvpn

  ipparam mytestvpn

  修改/etc/ppp/peers/mytestvpn

  注释掉noauth

  添加

  require-mppe-128

  refuse-pap

  refuse-chap

  refuse-eap

  refuse-mschap

  3)连接vpn

  #cp /usr/share/doc/ppp-2.4.4/scripts/pon /usr/sbin/

  #cp /usr/share/doc/ppp-2.4.4/scripts/poff /usr/sbin/

  #chmod +x /usr/sbin/pon /usr/sbin/poff

  将这两个命令复制到path环境下,

  执行pon mytestvpn拨号

  [root@localhost /]# pon mytestvpn

  [root@localhost /]# ficonfig ppp0

  -bash: ficonfig: command not found

  [root@localhost /]# ifconfig ppp0

  ppp0      Link encap:Point-to-Point Protocol

  inet addr:192.168.0.234  P-t-P:192.168.0.1  Mask:255.255.255.255

  UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1496  Metric:1

  RX packets:6 errors:0 dropped:0 overruns:0 frame:0

  TX packets:6 errors:0 dropped:0 overruns:0 carrier:0

  collisions:0 txqueuelen:3

  RX bytes:60 (60.0 b)  TX bytes:66 (66.0 b)

  执行poff mytestvpn 断开拨号

  ———————–客户端vpn拨号完成,接下来就开始介绍iptables配置

  ———–测试结果———————————————————-

  我们可以看到

  

  在VPS上我们只需要

  iptables -t nat -A PREROUTING -d 192.168.31.133 -p tcp –dport 333 -j DNAT –to 192.168.0.234:22

  iptables –t nat –A POSTROUTING –d 192.168.0.234 –p tcp –dport 22 –j SNAT –to 192.168.0.1

  将内网服务器的VPN对应的IP端口映射出去,就能通过访问外网192.168.31:333访问到内网了。

  [root@MiWiFi-R1D ~]# iptables -t nat -A PREROUTING -d 192.168.31.133 -p tcp –dport 333 -j DNAT –to 192.168.0.234:22

  [root@MiWiFi-R1D ~]# iptables -t nat -A POSTROUTING -d 192.168.0.234 -p tcp –dport 22 -j SNAT –to 192.168.0.1

  测试结果

  Connecting to 192.168.31.133:333…

  Connection established.

  To escape to local shell, press 'Ctrl+Alt+]'.

  Last login: Tue Dec 16 22:20:02 2014 from 192.168.0.1

  [root@localhost ~]# ls

  anaconda-ks.cfg  Desktop  install.log  install.log.syslog

  [root@localhost ~]# ifconfig eth0

  eth0      Link encap:Ethernet  HWaddr 00:0C:29:8C:07:7D

  inet addr:192.168.137.2  Bcast:192.168.137.255  Mask:255.255.255.0

  inet6 addr: fe80::20c:29ff:fe8c:77d/64 Scope:Link

  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

  RX packets:4769 errors:0 dropped:0 overruns:0 frame:0

  TX packets:3344 errors:0 dropped:0 overruns:0 carrier:0

  collisions:0 txqueuelen:1000

  RX bytes:455890 (445.2 KiB)  TX bytes:409449 (399.8 KiB)

  [root@localhost ~]#

  ===========下面扩展====================

  当我拥有这样一台VPNCLIENT以后,假如他在DMZ区,网段内一大堆服务器,那么我们只需要在vpnclient代理所有vpn段ip到内网的访问就能进行登陆。

  
  1.双重映射,内网vpn客户端192.168.137.2映射一次,然后再通过vps这vpn服务器映射一次

  先在vpnclient映射一次,比如192.168.137.1的3389端口

  1)vpn client端

  [root@MiWiFi-R1D ~]# iptables -t nat -A PREROUTING -d 192.168.0.234 -p tcp –dport 3389 -j DNAT –to 192.168.137.1:3389

  [root@MiWiFi-R1D ~]# iptables -t nat -A POSTROUTING -d 192.168.137.1 -p tcp –dport 3389 -j SNAT –to 192.168.137.2

  2)vpn server端

  [root@MiWiFi-R1D ~]# iptables -t nat -A PREROUTING -d 192.168.31.133 -p tcp –dport 3389 -j DNAT –to 192.168.0.234:3389

  [root@MiWiFi-R1D ~]# iptables -t nat -A POSTROUTING -d 192.168.0.234 -p tcp –dport 3389 -j SNAT –to 192.168.0.1

  3)于是乎流量就是这样

  192.168.31.133:3389>192.168.0.234:3389>192.168.137.1:3389

  2.使用通过这台内网vpn客户端(192.168.137.2)进内网

  1)开启ip_forward

  修改/etc/sysctl.conf文件的ip_forward=1

  vi /etc/sysctl.conf

  然后使其生效

  sysctl -p

  [root@localhost ~]# sysctl -p

  net.ipv4.ip_forward = 1

  net.ipv4.conf.default.rp_filter = 1

  net.ipv4.conf.default.accept_source_route = 0

  kernel.sysrq = 0

  kernel.core_uses_pid = 1

  net.ipv4.tcp_syncookies = 1

  kernel.msgmnb = 65536

  kernel.msgmax = 65536

  kernel.shmmax = 68719476736

  kernel.shmall = 4294967296

  2)用到的工具还是我们的iptables

  这里需要在client上做SNAT

  iptables -t nat -A POSTROUTING -d 192.168.137.0/24  -j SNAT –to 192.168.137.2

  [root@localhost ~]# iptables -t nat -L|grep 192.168.137.0

  SNAT       all  —  anywhere             192.168.137.0/24    to:192.168.137.2

  3)到vpn Server添加静态路由

  route add -net 192.168.137.0 netmask 255.255.255.0 gw 192.168.0.234192.168.137.0   192.168.0.234

  [root@MiWiFi-R1D ~]# route –n

  Kernel IP routing table

  Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

  192.168.137.0   192.168.0.234   255.255.255.0   UG    0      0        0 ppp0

  4)我们只需要客户端接入vpn就能链接内网所有机器了

  流量导向 最终客户机>—–vpn—->vpn网关(vpnserver)>内网vpn客户端>—iptables—->192.168.137.0/24

  http://www.360doc.com/content/11/0416/17/2104556_110100707.shtml

  http://os.51cto.com/art/201003/191707.htm

    文章来源:http://youngcloud.blog.51cto.com/2873694/1590318

点击这里复制本文地址 以上内容由黑资讯整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
  • 1条评论
  • 青迟语酌2022-05-29 10:36:34
  • 命令进行客户端配置  #pptpsetup –create mytesevpn –server 192.168.31.131 –username test –password 1234  #cd /etc/ppp/peers  

支持Ctrl+Enter提交

黑资讯 © All Rights Reserved.  
Copyright Copyright 2015-2020 黑资讯
滇ICP备19002590号-1
Powered by 黑客资讯 Themes by 如有不合适之处联系我们
网站地图| 发展历程| 留言建议| 网站管理