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, 防追踪, 隐私保护, 隐私保护, 隧道代理