Linux:隧道传入连接

Linux:隧道传入连接

设置:PC(Ubuntu 11.10,有 sudo),Mac电视(OS X 10.7.2,有 sudo),智能设备年代(几乎无法配置)。

年代可以看到在本地网络上,但看不到电视电视可以互相看到。

有一个程序可以监听电视在港口如果有人连接到该程序但不使用它的专有协议或在连接时不说任何话,该程序就会关闭,并且必须手动重新启动。

年代必须连接到电视在港口并与程序对话。实际 IP年代连接到是可配置的。

我知道我必须设置某种中继, 港口电视, 港口,但目前我还不知道该怎么做。欢迎提供提示。

临时解决方案(例如,使用一些花哨的密钥运行 ssh)比“永久”解决方案(如配置 iptables 等)更可取,因为这是一个临时问题。

答案1

在“I”上设置远程反向 ssh 隧道,将其自身的“N”端口重定向到“T”上的“N”端口。这样,机器 S 就可以通过“I”连接到“T”。

如果“N”是端口 8080,那么在“I”上你可以手动将其设置为

ssh -R 8080:IpofT:8080 localhost

如果需要,您可以添加 -N、-f、-n 和 -v。请参阅 ssh 手册页。

可能存在一些安全问题。例如,如果端口“N”是较低范围的端口,您需要 root 权限,则 sudo 即可。

此外,默认情况下,许多 ubuntu 服务器不允许外部 ip 重定向。可以通过配置 /etc/ssh/ssh.conf 并设置来切换

GatewayPorts yes

要自动登录,您可以将机器“I”上的自己的 ssh 密钥添加到“I”上的 authorized_keys2 文件中(当您通过 localhost 登录时)。您还可以设置 cronjobs 来测试 ssh 作业是否正在运行,以及终止/重新启动它。

或者,您可以进行设置,以便机器“T”登录到机器“I”并将流量隧道传输到自身(尽管不熟悉 osx 上的 ssh 工具集)

     ssh -R 8080:localhost:8080 username@IPofI

更多信息Ubuntu 上的端口转发/隧道

答案2

好的,我没注意到你不喜欢使用 iptables。安装后socat,你可以像这样创建端口转发器

        "LOCAL/LISTEN"   PORT        "TARGET" DEST : PORT
sudo socat TCP4-LISTEN:N,reuseaddr,fork   TCP4:T:N

喜欢

sudo socat TCP4-LISTEN:888,reuseaddr,fork TCP4:1.2.3.4:888

请参阅 socat 手册页以了解更多信息

这是执行端口目标 NAT(网络地址转换)的 iptables 方法。

# allow forwarding
sysctl -w net.ipv4.ip_forward=1

# forward port 888 to host 1.2.3.4:888 
iptables -I PREROUTING -t nat -p tcp  --dport 888 -j DNAT --to 1.2.3.4:888

# most likely you'll need this to get routing back to your device to work.
# try without this first.
iptables -I POSTROUTING -t nat -j MASQUERADE

这是一个“更安全”的版本,你可以定义允许连接/转发的网络

# forward port 888 to host 1.2.3.4:888 allowd from net 2.2.2.0/24
iptables -I PREROUTING -t nat -p tcp -s 2.2.2.0/24  --dport 888 -j DNAT --to 1.2.3.4:888
iptables -I POSTROUTING -t nat -s 2.2.2.0/24 -j MASQUERADE

答案3

看起来就这么简单:

用户@I$ ssh -LI:N:T:N 用户@T

相关内容