2012-05-07 113 views
0

我有以下網絡:如何在兩個接口之間隧道連接Telnet連接?

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。

任何幫助將不勝感激。

回答

0

這聽起來像你正在尋找一個TCP 代理。代理接受一個端口上的連接,連接到另一個IP /端口,然後來回傳遞流量。

如果你有你的系統上的xinetd你已經有你需要的東西。服務的redirect指令會導致xinetd打開到另一個主機/端口的連接並充當代理。例如,請參閱this document

balance是另一個非常簡單的代理工具,可以滿足您的需求。這可能更容易作爲非root用戶運行,特別是因爲它完全在命令行上配置。

由於您的服務器上不是root,所以您需要在端口> 1024上運行這些端口,否則您應該全部設置。

+0

我會研究這個。有沒有可能你的_balance_鏈接不正確? – eepp

+0

哈,是的,Firefox吃了我的剪貼板。 – larsks

+0

我想我將不得不多次啓動'balance'然後如果我想讓我的多端口轉發工作?例如:'平衡12.15.0.2 3000 10.0.0.15:23',第二個'平衡12.5.0.2 3001 10.0.0.16:23'等等(其中12.15.0.2是eth0的地址)? – eepp