frp 搭建内网穿透服务

什么是内网穿透

什么时候需要用内网穿透?

无公网IP时,需要将本地服务器和应用服务,提供到互联网访问时,就需要使用内网穿透的方法。

内网穿透和DDNS的区别

DDNS(动态域名解析)指的是直接将域名解析到家用路由器上, 然后路由器实现端口转发, 从而实现通过域名访问内网中的服务器的目的.

内网穿透和DDNS都是为了让内网的设备被公网访问。

两者的区别:

  • 是否需要公网服务器? 内网穿透需要, DDNS不需要
  • 稳定性, ddns因为使用的家庭宽带ip, 其他地区的用户可能访问不了, 内网穿透因为需要运营商的公网ip, 正常网站可访问的地方都可以访问

frp

开源地址: https://github.com/fatedier/frp.git
文档地址: https://gofrp.org/docs/

配置稍微负责点点~但是比较稳定

nps

开源地址: https://github.com/ehang-io/nps.git

配置简单, 并带有web配置界面.

可惜的是,截止到目前已经有2年时间没维护了~~

frp自启动配置

# 服务端
# /etc/systemd/system/frps.service

[Unit]
Description=FRP Server Daemon

[Service]
Type=simple
AmbientCapabilities=CAP_NET_BIND_SERVICE
ExecStart=/opt/bin/frps -c /opt/etc/frps.ini
Restart=always
RestartSec=2s
User=root
LimitNOFILE=infinity

[Install]
WantedBy=multi-user.target
# 客户端
# /etc/systemd/system/frpc.service

[Unit]
Description=FRP Client Daemon
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/opt/bin/frpc -c /opt/etc/frpc.ini
Restart=always
RestartSec=20s
User=root
LimitNOFILE=infinity

[Install]
WantedBy=multi-user.target

# 使用下面命令操作
systemctl daemon-reload
systemctl enable frpc
systemctl status frpc
systemctl enable frps
systemctl status frps
# centos 6.5 init.d script
# centos 6.5 客户端环境下配置后台自启

#!/bin/bash

# chkconfig: - 85 15
# # description: frp init script

RETVAL=0
PROG="frpc"
EXEC="/usr/bin/frpc"
LOCKFILE="/var/lock/subsys/$PROG"
OPTIONS="-c /etc/frp/frpc.ini"

# Source function library.
if [ -f /etc/rc.d/init.d/functions ]; then
  . /etc/rc.d/init.d/functions
else
  echo "/etc/rc.d/init.d/functions is not exists"
  exit 0
fi

start() {
  if [ -f $LOCKFILE ]
  then
    echo "$PROG is already running!"
  else
    echo -n "Starting $PROG: "
    #$EXEC $OPTIONS  &
    nohup $EXEC $OPTIONS >/dev/null 2>&1 &
    RETVAL=$?
    [ $RETVAL -eq 0 ] && touch $LOCKFILE && success || failure
    echo
    return $RETVAL
  fi
}

stop() {
  echo -n "Stopping $PROG: "
  killproc $EXEC
  RETVAL=$?
  [ $RETVAL -eq 0 ] && rm -r $LOCKFILE && success || failure
  echo
}

restart ()
{
  stop
  sleep 1
  start
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    status $PROG
    ;;
  restart)
    restart
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
esac
exit $RETVAL

此处评论已关闭