我来自伊朗,我们的国际互联网正在关闭,所以我们要失去我们与世界的联系。
VPN 一个接一个被封锁。Tor 网络被封锁,网桥大部分都无法工作,即使能连接上,ping 值也会超过 1000。
我们国家的一些服务器仍然有国际互联网。(但不能保证能连接到国际互联网。)
访问国际互联网的最佳方式是通过本地隧道(伊朗语) 服务器,然后从该服务器通过隧道连接到国外服务器。然后,你就可以使用来自伊朗的被屏蔽的程序和网站了。
::::: 你的电脑<==>本地(Ir)服务器(A)<==>国外服务器(B) :::::
要做到这一点,你需要一个 vpn 协议,我更喜欢使用它OpenVPN或者SSH
我想以某种方式配置我的服务器 A,以便当我连接到服务器 A 时,我将使用服务器 B 的互联网连接。
我已经在服务器 B 和 A 上安装了 openvpn。服务器 B 上的 openvpn 服务器处于活动状态,并且我将其 client.ovpn 文件复制到我的服务器 A 目录中。
当我输入命令:openvpn client.ovpn
它给了我这个错误:
Mon Oct 10 14:37:58 2022 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Mon Oct 10 14:37:58 2022 TLS Error: TLS handshake failed
Mon Oct 10 14:37:58 2022 SIGUSR1[soft,tls-error] received, process restarting
Mon Oct 10 14:37:58 2022 Restart pause, 5 second(s)
Mon Oct 10 14:38:03 2022 TCP/UDP: Preserving recently used remote address: [AF_INET]168.119.106.217:1194
Mon Oct 10 14:38:03 2022 Socket Buffers: R=[212992->212992] S=[212992->212992]
Mon Oct 10 14:38:03 2022 UDP link local: (not bound)
Mon Oct 10 14:38:03 2022 UDP link remote: [AF_INET]168.119.106.217:1194
Mon Oct 10 14:39:03 2022 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Mon Oct 10 14:39:03 2022 TLS Error: TLS handshake failed
Mon Oct 10 14:39:03 2022 SIGUSR1[soft,tls-error] received, process restarting
Mon Oct 10 14:39:03 2022 Restart pause, 5 second(s)
Mon Oct 10 14:39:08 2022 TCP/UDP: Preserving recently used remote address: [AF_INET]168.119.106.217:1194
Mon Oct 10 14:39:08 2022 Socket Buffers: R=[212992->212992] S=[212992->212992]
Mon Oct 10 14:39:08 2022 UDP link local: (not bound)
Mon Oct 10 14:39:08 2022 UDP link remote: [AF_INET]168.119.106.217:1194
我找到了很多解决方案。其中很多都不同,或者需要一些网络知识。我只是复制终端命令并使用它们,我什么都不知道。(几周前我可以使用 client.ovpn 通过手机 openvpn 应用程序直接连接到服务器 B)
我只知道这是一个防火墙问题并且我应该使用 iptables,但我不知道如何使用。
服务器 B 上的 server.conf:
local 168.119.106.217
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
server-ipv6 fddd:1194:1194:1194::/64
push "redirect-gateway def1 ipv6 bypass-dhcp"
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "block-outside-dns"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
verb 3
crl-verify crl.pem
explicit-exit-notify
服务器 A 上的 client.ovpn:
client
dev tun
proto udp
remote 168.119.106.217 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
verb 3
<ca>
(除此之外,如果您知道如何通过 ssh 隧道执行此操作,请告诉我您的解决方案。
<<如何只连接服务器A就能使用服务器B的网络>>
我的笔记本电脑 <== ssh ==> 服务器 A 服务器 A <== ssh ==> 服务器 B )
(或者给我服务器 A 通过 ssh 隧道连接到服务器 B 的方式,然后我可以使用 openvpn 应用程序或 ssh 隧道 vpn 连接到服务器 B 的互联网)
抱歉,我的语法错误。
答案1
服务器 A:
在服务器 A 上使用以下命令{替换服务器 IP 和端口}:
sudo ssh -p {SERVER B SSH PORT} -f -N -L 0.0.0.0:{ANY PORT YOU WANT}:{SERVER B IP}:{SERVER B OPENVPN PORT} root@{SERVER B IP}
例子 :
sudo ssh -p 22 -f -N -L 0.0.0.0:800:2.2.2.2:22222 [email protected]
使用上述命令后,系统会要求您输入服务器B的root密码。
- 使用上述命令,服务器 A 上的端口 800 监听服务器 B 的 OpenVPN 端口 22222。为确保一切正确,请输入以下命令:
ps-aux
如果你在列表中看到上述命令,则一切正确
您必须在服务器机器上授权公钥才能建立 SSH 连接,而无需使用任何密码:
ssh-copy-id root@SERVER-B-IP
每次重启后此隧道都会丢失。现在要在重启后自动运行此命令:
sudo nano vpn.sh
粘贴以下行{替换您的服务器 IP 和端口}然后保存:
#!/bin/sh
ssh -p 22 -f -N -L 0.0.0.0:800:2.2.2.2:22222 [email protected]
使用以下命令使 shell 脚本可执行。
sudo chmod +x vpn.sh
然后 :
cp vpn.sh /usr/local/bin/
重启后使用 crontab 运行 shell 脚本:
sudo crontab -e
然后在文件中添加以下行并保存:
@reboot /usr/local/bin/vpn.sh
现在重新启动服务器,然后使用以下命令确保一切正确:
ps -aux
现在,您可以编辑 .ovpn 客户端文件,将服务器 B 的 IP 和端口更改为服务器 A 的 IP,并将上面第一个命令中的端口更改为 0.0.0.0
您可以将此方法用于 Shadowsocks、Outline、Anyconnect 等