【问题标题】:How can I tunnel Telnet connections between two interfaces?如何在两个接口之间建立 Telnet 连接?
【发布时间】:2012-05-16 08:35:59
【问题描述】:

我有以下网络:

PC1 --|¯¯¯¯¯¯¯¯¯|                            |¯¯¯¯¯¯¯¯¯|-- board2
PC2 --| gateway |-- (eth0) [server] (eth1) --| gateway |
PC3 --|_________|                            |_________|-- board1

如您所见,服务器(运行 Linux)有 2 个接口,因此 PC 和嵌入式板卡不在同一个子网中。

我想开发一个简单的应用程序(或使用现有的应用程序),将来自eth0(使用特定端口)的 Telnet 连接通过eth1 隧道连接到板。

在服务器上没有 root 权限,但我有一个普通的 Unix 帐户。我不希望 PC 真正“登录”到服务器;我只是想让他们通过它来连接到电路板。服务器已安装 Python、PHP 和 Perl。

我想支持多个连接。端口号可用于将连接转发到正确的板(假设我有 10 个板,然后隧道侦听端口 3000 到 3009)。

我可以想象一个简单的 Web 应用程序来做到这一点,但我想要一个本地 Telnet 连接,它支持 CTRL+C 和所有这些东西,并允许您使用 PC 上的任何终端仿真器(即 PuTTY 或另一个),运行 Windows。

任何帮助将不胜感激。

【问题讨论】:

    标签: linux networking network-programming telnet tunnel


    【解决方案1】:

    听起来您正在寻找 TCP 代理。代理接受一个端口上的连接,连接到另一个 ip/端口,然后来回传递流量。

    如果您的系统上有xinetd,那么您已经拥有了您需要的东西。服务的redirect 指令使xinetd 打开到另一个主机/端口的连接并充当代理。示例见this document

    balance 是另一个非常简单的代理工具,可以满足您的需求。这可能更容易以非root 用户身份运行,尤其是因为它完全是在命令行上配置的。

    由于您的服务器上不是 root,因此您需要在 > 1024 的端口上运行这些,否则您应该一切就绪。

    【讨论】:

    • 我会调查的。是否有可能您的 balance 链接不正确?
    • 哈,是的,Firefox 吃掉了我的剪贴板。
    • 我想我必须多次启动balance,然后如果我想让我的多端口转发工作?比如:balance 12.15.0.2 3000 10.0.0.15:23,第二个balance 12.5.0.2 3001 10.0.0.16:23等等(其中12.15.0.2是eth0的地址)?
    • 是的。您可以使用 supervisor 之类的东西来合理地管理多个进程。可能还有其他代理解决方案,只需要一个命令和一个配置文件来处理多个代理。
    • 代理通常只会在侦听端口上收到连接时才会启动到远程系统的连接。如果此时远程端口不可用,您的连接尝试将失败......这几乎是没有代理会发生的情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 2017-06-24
    相关资源
    最近更新 更多