linux隧道 linux版软件网站

老铁们,大家好,相信还有很多朋友对于linux隧道和linux版软件网站的相关问题不太懂,没关系,今天就由我来为大家分享分享linux隧道以及linux版软件网站的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

构建Linux系统内的IP隧道linuxip隧道

隧道是一段在网络路径中回环的网络连接,可以用来将私有网络中的机器与外部网络(Internet)关联起来。建立一个 Linux系统内的 IP隧道,意味着可以通过外网与私有网络中的机器进行通信,下面将介绍如何在 Linux系统中搭建一个 IP隧道。

1、在两个不同网络之间连接:

使用 ssh命令来将两个不同的网络之间连接起来,ssh命令可以指定一个主机名或 IP地址,它会将你的机器连接到指定的主机,通过命令 ssh user@remote.host来实现。

2、指定用于 IP隧道的网络地址:

接下来要指定一个网络地址来用作 IP隧道,这个网络地址可以在一台机器上定义,以便其它机器可以 ping到它,这样就可以通过 IP隧道进行信息交换。在远程主机上可以使用 ip a命令查看其本地 IP地址,并将该 IP地址指定给本地主机上的 IP隧道,来建立 IP隧道。

3、建立 IP隧道:

下面就要建立 IP隧道了,首先在本地机器上使用 ip tuntap命令创建一个隧道设备,之后使用 ip link命令将本地网络地址与隧道设备关联起来,最后使用 tunctrl命令来指定隧道设备的网络地址,代码如下:

ip tuntap add dev tunnel mode tun

ip link set tunnel up

tunctl-t tunnel-u{username}

ip addr add localIP/mask dev tunnel

ip route add remoteIP/mask dev tunnel

4、测试 IP隧道:

完成以上步骤后,你的 IP隧道已经建立成功,可以通过 ping命令来测试一下了,例如 ping remoteIP,如果一切正常,就可以放心使用 IP隧道了。

通过以上步骤我们就可以在 Linux系统中搭建 IP隧道了,IP隧道可以将两个不同的网络连接起来,来实现网络通信,保证网络资源的安全性,同时也可以方便用户查看外部网络资源。

隧道技术的在Linux 中

为了在TCP/IP网络中传输其他协议的数据包,Linux采用了一种IP隧道技术。在已经使用多年的桥接技术中就是通过在源协议数据包上再套上一个IP协议帽来实现。

利用IP隧道传送的协议包也包括IP数据包,Linux的IPIP包封指的就是这种情况。移动IP(Mobile-IP)和IP多点广播(IP-Multicast)是两个流行的例子。IP隧道技术在VPN中也显示出极大的魅力。

移动IP是在全球Internet上提供移动功能的一种服务,它允许节点在切换链路时仍可保持正在进行的通信。它提供了一种IP路由机制,使移动节点以一个永久的IP地址连接到任何链路上。与特定主机路由技术和数据链路层方案不同,移动IP还要解决安全性和可靠性问题,并与传输媒介无关。移动IP的可扩展性使其可以在整个互联网上应用。

如何通过反向 SSH 隧道访问 NAT 后面的 Linux 服务器

除了SSH端口转发外,另一个办法就是SSH反向隧道。SSH反向隧道这个概念其实很简单。为此,你需要在限制性家用网络外面有另一个主机,即所谓的“中继主机”(relay host),你可以从所在地方通过SSH连接到该主机。你可以使用带公共IP地址的虚拟专用服务器(VPS)实例来建立中继主机。然后要做的就是建立一条持久性SSH隧道,从你家用网络的服务器通向公共中继主机。有了这条隧道,你就可以从中继主机“连回”到家用服务器(这就是为什么它叫“反向”隧道)。无论你人在什么地方,或者你家用网络中的NAT或防火墙限制多严格,只要你可以连接到中继主机,就可以连接到家用服务器。\x0d\x0a在Linux上建立SSH反向隧道\x0d\x0a不妨看看我们如何可以建立并使用一条SSH反向隧道。我们假设下列设置。我们将建立一条从家用服务器(homeserver)到中继服务器(relayserver)的SSH反向隧道,那样我们就可以从另一台名为clientcomputer的计算机,通过中继服务器以SSH的方式连接到家用服务器。中继服务器的公共IP地址是1.1.1.1。\x0d\x0a在家用服务器上,打开通向中继服务器的SSH连接,如下所示。\x0d\x0ahomeserver~$ ssh-fN-R 10022:localhost:22 relayserver_user@1.1.1.1\x0d\x0a这里的端口10022是你可以选择的任何随意的端口号。只要确保该端口没有被中继服务器上的其他程序所使用就行。\x0d\x0a“-R 10022:localhost:22”选项定义了反向隧道。它通过中继服务器的端口1022,将流量转发到家用服务器的端口22。\x0d\x0a若使用“-fN”选项,一旦你成功验证了身份、登录到SSH服务器,SSH就会径直进入后台。如果你不想在远程SSH服务器上执行任何命令,只想转发端口,就像在本文的示例中,这个选项很有用。\x0d\x0a运行上述命令后,你将直接回到家用服务器的命令提示符。\x0d\x0a登录进入到中继服务器,核实127.0.0.1:10022绑定到sshd。如果是这样,那意味着反向隧道已正确建立起来。\x0d\x0arelayserver~$ sudo netstat-nap| grep 10022\x0d\x0atcp 0 0 127.0.0.1:10022 0.0.0.0:* LISTEN 8493/sshd\x0d\x0a现在可以从其他任何计算机(比如clientcomputer),登录进入到中继服务器。然后访问家用服务器,如下所示。\x0d\x0arelayserver~$ ssh-p 10022 homeserver_user@localhost\x0d\x0a需要注意的一个地方就是,你为localhost输入的SSH登录信息/密码应该适用于家用服务器,而不是适用于中继服务器,因为你是通过隧道的本地端点登录进入到家用服务器。所以别为中继服务器输入登录信息/密码。成功登录后,你就接入到了家用服务器。\x0d\x0a通过SSH反向隧道,直接连接到NAT后面的服务器\x0d\x0a虽然上述方法让你可以连接到NAT后面的家用服务器,但是你需要登录两次,先登录到中继服务器,然后登录到家用服务器。这是由于中继服务器上SSH隧道的端点绑定到回送地址(127.0.0.1)。\x0d\x0a但实际上,只要单次登录到中继服务器,就可以直接连接到NAT后面的家用服务器。为此,你需要让中继服务器上的sshd不仅可以从回送地址转发端口,还可以从外部主机转发端口。这可以通过在中继服务器上运行的sshd里面指定GatewayPorts选项来实现。\x0d\x0a打开中继服务器的/etc/ssh/sshd_conf,添加下面这一行。\x0d\x0arelayserver~$ vi/etc/ssh/sshd_conf\x0d\x0aGatewayPorts clientspecified\x0d\x0a重启sshd。\x0d\x0a基于Debian的系统:\x0d\x0arelayserver~$ sudo/etc/init.d/ssh restart\x0d\x0a基于红帽的系统:\x0d\x0arelayserver~$ sudo systemctl restart sshd\x0d\x0a现在不妨从家用服务器开始建立SSH反向隧道,如下所示。\x0d\x0ahomeserver~$ ssh-fN-R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1\x0d\x0a登录进入到中继服务器,用netstat命令核实SSH反向隧道已成功建立起来。\x0d\x0arelayserver~$ sudo netstat-nap| grep 10022\x0d\x0atcp 0 0 1.1.1.1:10022 0.0.0.0:* LISTEN 1538/sshd: dev\x0d\x0a不像之前的情况,隧道的端点现在是1.1.1.1:10022(中继服务器的公共IP地址),而不是127.0.0.1:10022。这意味着,可以从外部主机连接到隧道端点。\x0d\x0a现在可以从其他任何计算机(比如clientcomputer),输入下列命令,访问NAT后面的家用服务器。\x0d\x0aclientcomputer~$ ssh-p 10022 homeserver_user@1.1.1.1\x0d\x0a在上述命令中,虽然1.1.1.1是中继服务器的公共IP地址,但homeserver_user必须是与家用服务器关联的用户帐户。这是由于,你实际登录进入的主机是家用服务器,而不是中继服务器。后者只是将你的SSH流量中继转发到家用服务器而已。\x0d\x0a在Linux上建立持久性SSH反向隧道\x0d\x0a想必你已明白了如何建立一条SSH反向隧道,现在不妨让隧道具有“持久性”,那样隧道随时建立并运行起来(无论面对什么样的情况:暂时网络拥塞、SSH超时还是中继主机重启等)。毕竟,要是隧道没有始终建立起来,你也就无法可靠地连接到家用服务器。\x0d\x0a为了建立持久性隧道,我要使用一款名为autossh的工具。顾名思义,万一SSH会话由于任何原因而断开,这个程序让你可以自动重启SSH会话。所以,让SSH反向隧道保持持久连接很有用。\x0d\x0a第一步,不妨建立无需密码的SSH登录机制,从家用服务器登录到中继服务器。那样一来,autossh就能重启断开的SSH反向隧道,不需要用户干预。\x0d\x0a下一步,将autossh安装到发起隧道的家用服务器上。\x0d\x0a从家用服务器运行带下列变量的autossh,从而建立一条通向中继服务器的持久性SSH隧道。\x0d\x0ahomeserver~$ autossh-M 10900-fN-o"PubkeyAuthentication=yes"-o"StrictHostKeyChecking=false"-o"PasswordAuthentication=no"-o"ServerAliveInterval 60"-o"ServerAliveCountMax 3"-R 1.1.1.1:10022:localhost:22 relayserver_user@1.1.1.1\x0d\x0a“-M 10900”选项指定了中继服务器上的一个监控端口,将用来交换测试数据,以监控SSH会话。该端口不应该被中继服务器上的任何程序所使用。\x0d\x0a“-fN”选项传递给ssh命令,让SSH隧道可以在后台运行。\x0d\x0a“-o XXXX”选项指令ssh执行下列操作:\x0d\x0a•使用密钥验证,而不是密码验证。\x0d\x0a•自动接受(未知的)SSH主机密钥。\x0d\x0a•每60秒就交换持久连接(keep-alive)消息。\x0d\x0a•最多发送3个持久连接消息,而不接受任何响应。\x0d\x0a与SSH反向隧道有关的其余选项仍与之前一样。\x0d\x0a如果你希望SSH隧道一启动就自动建立起来,可以在/etc/rc.local中添加上述的autossh命令。

阅读剩余
THE END