pizdatiigus/Double-VPN-with-OpenVPN

GitHub: pizdatiigus/Double-VPN-with-OpenVPN

提供Shell脚本自动化搭建基于两台VPS的OpenVPN链式双重VPN,实现多跳流量转发以增强匿名性。

Stars: 27 | Forks: 14

# 使用 OpenVPN 实现双重 VPN 使用 OpenVPN 实现 Double VPN / как сделать двойной vpn / 自建 double vpn / 如何链式连接两台 OpenVPN 服务器 / double vpn reddit / double vpn nordvpn Debian / Ubuntu Debian >= 10 Ubuntu >= 16.04 **已在 Debian 10 上测试** **已在 Debian 10 上测试** **配置兼容 2.4 及更早版本的 OpenVPN** 购买两台 VPS 服务器 将 **server1.sh** 上传到第一台服务器 将 **server2.sh** 上传到第二台服务器 在文件 **server2.sh** 中,将 111.111.111.111 替换为第一台服务器的 IP 地址 ``` #IP Server 1 IPSERVER1="111.111.111.111" ``` 你可以通过 nano 编辑器复制文件 ``` nano server1.sh CTRL+O CTRL+X ``` 安装 screen,以便在连接断开时安装过程不会中断 ``` apt update -y apt install screen ``` 创建名为 f 的 screen 会话 ``` screen -S f ``` 将 screen 会话放入后台 ``` CTRL+A+D ``` 返回到 screen 会话 ``` screen -r f ``` 接下来,为所有文件设置 777 权限 ``` chmod 777 server1.sh chmod 777 server2.sh ``` 进入 screen 会话并运行 首先运行服务器 1 ``` ./server1.sh ``` 第一个安装完成后,再运行第二个 ``` ./server2.sh ``` 密钥生成可能需要多达 15 分钟,我使用了最强的加密方式 如果出现问题,请检查第二台服务器的配置文件是否已成功复制到第一台服务器。 这应该会通过以下命令自动完成(将 111.111.111.111 替换为服务器 1 的地址,并在第二台服务器上执行命令) ``` scp /root/client000.ovpn root@111.111.111.111:/etc/openvpn/client.conf ssh root@111.111.111.111 'systemctl enable openvpn@client' ssh root@111.111.111.111 'systemctl start openvpn@client' ``` 脚本执行完成后,服务器 1 上会生成一个客户端文件 该文件已配置为允许多连接(对服务器的并发连接数没有限制)。 你可以通过以下方式使用 SSH 将其复制到电脑上(将 111.111.111.111 替换为第一台服务器的地址) ``` scp root@111.111.111.111:/root/client000.ovpn vpn-double.ovpn ``` 在电脑上启动 ``` openvpn --config vpn-double.ovpn ``` 连接成功后,请访问相关网站并检查显示的 IP 是否为服务器 2 的 IP ## 已验证是否存在 DNS 泄漏 你可以自己进行验证,只需在第一台和第二台服务器上设置抓包监听 ``` tcpdump -nnni eth0 udp port 53 tshark -i eth0 -f "port 53" ``` 在第一台服务器上日志将为空,而在第二台服务器上将会有数据流通过 DNS 服务器将是你电脑上配置的那个,而不是客户端文件中指定的那个 请在电脑上将其替换为你想要使用的 DNS 服务器 ## 防火墙配置 为了防止流量绕过 VPN 将网络接口 eth0 替换为你的实际接口名称,可以通过以下命令查看接口名 ``` ifconfig ``` 将 111.111.111.111 替换为第一台服务器的 IP ``` iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 111.111.111.111 -p tcp -m tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited iptables -A OUTPUT -o lo -j ACCEPT iptables -A OUTPUT -o tun0 -j ACCEPT iptables -A OUTPUT -d 111.111.111.111 -o eth0 -p tcp -m tcp --dport 443 -j ACCEPT iptables -A OUTPUT -j REJECT --reject-with icmp-host-prohibited ip6tables -A INPUT -j DROP ip6tables -A FORWARD -j DROP ip6tables -A OUTPUT -j DROP ``` 输入命令后,你可以检查所有规则是否输入正确 ``` iptables-save ip6tables-save ``` 现在保存配置,以便在电脑重启后规则不会被清除(提示时请选择是) ``` apt-get install iptables-persistent ``` ## 附加信息 如果你熟悉路由配置,可以对我的工作成果进行进一步修改和完善 代码中包含一些多余的内容,但当前状态可以正常运行 建议使用 Whonix 和 Tails 以获取更高的匿名性
标签:Cutter, Debian, DNS解析, Double VPN, OpenVPN, Shell脚本, VPN, VPN链式代理, VPS, 匿名网络, 双重VPN, 开源项目, 服务器配置, 流量转发, 网络加密, 网络安全, 网络安全, 网络隐匿, 翻墙, 自建VPN, 防追踪, 隐私保护, 隐私保护, 隧道代理