部署自己的内网穿透服务器并走出国门

2024-01-09 01:03:15

翻越高墙、展现自己

在家的内网服务无法让他人访问,公网ip、云服务器又太贵。
我想获取海外信息,需要jump出去。
那么,一台海外或者香港的云服务器+本文将彻底解决你的烦恼。

购买廉价海外云服务器

我们要把预算控制在300元以内,还必须是海外。

  1. 香草云香港虚拟机。https://www.xiangcaoyun.com/
  2. Ucloud海外主机。https://www.ucloud.cn/
    最近在搞新春促销,打3折,100元拿下。即使不打折也就300多元。
# 验证云主机可用
ping www.google.com

内网穿透篇

server端配置

ssh登陆云服务器,系统Ubuntu22.04

# 安装frp
apt -y install wget
wget https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_linux_amd64.tar.gz
tar -zxvf tar -zxvf frp_0.53.2_linux_amd64.tar.gz
cd frp_0.53.2_linux_amd64


# 配置frp
vim frps.ini

# 文件中写入如下内容
[common]
bind_port = 7000


# 关闭防火墙
ufw disable

云服务器的安全组放行入方向7000端口即可。
启动frp并验证是否可以登录。

./frps -c frps.ini

# 后台运行方法
nohup ./frps -c frps.ini &

验证服务是否启动

netstat -natlp |grep 7000

客户端配置

现在将你内网的端口映射给你的云服务器,其他人通过你的云服务器即可访问你家内网的应用。
同样先下载frp软件包。根据你的系统自行选择
windows:https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_windows_amd64.zip
linux: https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_linux_amd64.tar.gz

创建客户端配置文件frpc.ini
案例一:将内网某个主机的ssh映射到公网15000端口上

vim frpc.ini
--------------------------------------------------
[common]
server_addr = 服务器的公网IP
server_port = 7000

[sshself] 				#这个名字可以随便改
type = tcp 				#通常tcp,udp按需修改
local_ip = 127.0.0.1 	#一般不修改
local_port = 22 		#外界连接本机的哪个端口
remote_port = 15000 	#外界可以通过哪个端口访问进来

启动客户端

./frpc -c frpc.ini

# 后台运行方法
nohup ./frpc -c frpc.ini &

外界通过 公网IP + remote_port —访问—> local_ip + local_port
所以通过上述配置,你可以访问1.2.3.4:15000 实质访问内网 127.0.0.1:22

星辰大海

谷歌、油管、推特这些国外网站我们是没法访问的。如果需要获取一些学习资料和素材,除了魔法方法,有了云服务器后你可以自建梯子。

安装docker

我们使用容器化方式部署vpn后端。所以需要安装docker引擎。
官方安装文档:https://docs.docker.com/engine/install/ubuntu/
Ubuntu安装方法

# 卸载旧的docker,如果没有可以跳过这一步
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

# 添加docker apt源
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

# 安装docker
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

部署ipsec服务端

官方项目:https://github.com/hwdsl2/docker-ipsec-vpn-server
创建配置文件夹和数据目录

# 随机生成一个加密字符串作为key
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c20
5Z2sTo2M43AfDoeDn9O4

# 编写配置文件
mkdir -p /data/ipsec-vpn-server/ikev2-vpn-data
vim /data/ipsec-vpn-server/vpn.env
---------------------------------------------
# 必要参数
VPN_IPSEC_PSK=5Z2sTo2M43AfDoeDn9O4   # 你刚生成的key
VPN_USER=admin                       # 你的vpn主账号用户名
VPN_PASSWORD=admin123                # 你的vpn主账号密码



# 其他可选参数(非必须)
# 额外用户和密码
VPN_ADDL_USERS=additional_username_1 additional_username_2
VPN_ADDL_PASSWORDS=additional_password_1 additional_password_2
# 指定vpn所使用的DNS服务器
VPN_DNS_SRV1=1.1.1.1
VPN_DNS_SRV2=1.0.0.1

启动容器

docker run \
    --name ipsec-vpn-server \
    --env-file /data/ipsec-vpn-server/vpn.env \
    --restart=always \
    -v /data/ipsec-vpn-server/ikev2-vpn-data:/etc/ipsec.d \
    -v /lib/modules:/lib/modules:ro \
    -p 500:500/udp \
    -p 4500:4500/udp \
    -d --privileged \
    hwdsl2/ipsec-vpn-server

云服务器的安全组放行500和4500入方向端口,注意协议是UDP的
为什么是UDP呢? UDP不可靠啊,能建立TCP连接么?
这个不用担心, 这些IPsec VPN就是一种隧道加密速度,把【原始TCP的数据包】通过物理UDP协议来进行传输, 在这个层面你可以理解UDP是底层基础网络设施跟网线的作用差不多,我们只管真实TCP即可. 如果UDP丢包,那么TCP协议本身就是会重传,所以这些问题不用担心.

在你的家用电脑上安装客户端

官方文档:https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients-zh.md
支持各种场景,照着做即可。
这里写一下windows的客户端方法。
Windows 10 and 8
右键单击系统托盘中的无线/网络图标。
选择 打开"网络和 Internet"设置,然后在打开的页面中单击 网络和共享中心。
单击 设置新的连接或网络。
选择 连接到工作区,然后单击 下一步。
单击 使用我的Internet连接 (VPN)。
在 Internet地址 字段中输入你的 VPN 服务器 IP。
在 目标名称 字段中输入任意内容。单击 创建。
返回 网络和共享中心。单击左侧的 更改适配器设置。
右键单击新创建的 VPN 连接,并选择 属性。
单击 安全 选项卡,从 VPN 类型 下拉菜单中选择 “使用 IPsec 的第 2 层隧道协议 (L2TP/IPSec)”。
单击 允许使用这些协议。选中 “质询握手身份验证协议 (CHAP)” 和 “Microsoft CHAP 版本 2 (MS-CHAP v2)” 复选框。
单击 高级设置 按钮。
单击 使用预共享密钥作身份验证 并在 密钥 字段中输入你的 VPN IPsec PSK。
单击 确定 关闭 高级设置。
单击 确定 保存 VPN 连接的详细信息。
注: 在首次连接之前需要修改一次注册表,以解决 VPN 服务器 和/或 客户端与 NAT (比如家用路由器)的兼容问题。

要连接到 VPN:单击系统托盘中的无线/网络图标,选择新的 VPN 连接,然后单击 连接。如果出现提示,在登录窗口中输入 你的 VPN 用户名 和 密码 ,并单击 确定。最后你可以到 这里 检测你的 IP 地址,应该显示为你的 VPN 服务器 IP。

如果在连接过程中遇到错误,请参见 故障排除。

另外,除了按照以上步骤操作,你也可以运行下面的 Windows PowerShell 命令来创建 VPN 连接。将 你的 VPN 服务器 IP 和 你的 VPN IPsec PSK 换成你自己的值,用单引号括起来:

# 不保存命令行历史记录
Set-PSReadlineOption –HistorySaveStyle SaveNothing
# 创建 VPN 连接
Add-VpnConnection -Name 'My IPsec VPN' -ServerAddress '你的 VPN 服务器 IP' `
  -L2tpPsk '你的 VPN IPsec PSK' -TunnelType L2tp -EncryptionLevel Required `
  -AuthenticationMethod Chap,MSChapv2 -Force -RememberCredential -PassThru
# 忽略 data encryption 警告(数据在 IPsec 隧道中已被加密)

文章来源:https://blog.csdn.net/qq_43626147/article/details/135463728
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。