通过 OpenVPN 或 SSH 在两台服务器之间建立隧道以使用第二台服务器的互联网

通过 OpenVPN 或 SSH 在两台服务器之间建立隧道以使用第二台服务器的互联网

我来自伊朗,我们的国际互联网正在关闭,所以我们要失去我们与世界的联系。

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 等

相关内容