Networking 将本地端口从Raspbian路由到另一台机器(端口隧道)

Networking 将本地端口从Raspbian路由到另一台机器(端口隧道),networking,raspbian,Networking,Raspbian,我想将Raspberry with Raspbian上端口5555上的传入tcp通信路由到同一本地网络中的另一台机器和端口,并使其持久化以重新启动 上下文 目标是,如果我在本地主机上访问5555上的服务,它将在远程计算机上加载不同的端口。最终目标是将端口53(DNS)转发到另一台机器(非53端口),但与此同时,我正在使用http进行测试:https://localhost:5555,它应该加载https://192.168.250.250:9999其中192.168.250.250是本地网络中的

我想将Raspberry with Raspbian上端口5555上的传入tcp通信路由到同一本地网络中的另一台机器和端口,并使其持久化以重新启动

上下文 目标是,如果我在本地主机上访问5555上的服务,它将在远程计算机上加载不同的端口。最终目标是将端口53(DNS)转发到另一台机器(非53端口),但与此同时,我正在使用http进行测试:
https://localhost:5555
,它应该加载
https://192.168.250.250:9999
其中192.168.250.250是本地网络中的远程计算机(所有本地网络均可访问,
ping 192.168.250.250
works)

我试过的 像这样的网络有很多资源。大多数依赖于路由器上的IP转发,这在我的情况下不起作用,因为我试图重定向本地主机中主机内的端口,直接访问机器。其他端口隧道都使用以下方法:

iptables
sudo iptables-t nat-A预路由-p tcp-sport 5555-j DNAT-到目的地192.168.250.250-dport 9999

这不起作用。我尝试了一些变化,包括:

sudo iptables-t nat-A预路由-p tcp-sport 5555-j DNAT-到目的地192.168.250.250:9999

这不起作用,尽管有注册规则:

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  anywhere             anywhere             tcp spt:5555 dpt:9999 to:192.168.250.250

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  
我还安装了
iptables persistent
,使其持久化,但它一开始并没有重定向

我还尝试了命令的一种变体,因为我认为我可能误解了“源”端口是目标:

sudo iptables-t nat-A预路由-p tcp-j DNAT-到目的地192.168.250.250:9999-dport 5555

在任何这些更改之后,我始终运行:

sudo dpkg-reconfigure iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent restart
为了确保规则被永久应用。我还尝试在重新启动时加载配置。尽管如此,这还是没有向前推进,永久的一面在这个阶段是不清楚的,是次要的

索卡特
socat-tcp-listen:5555,reuseaddr,fork-tcp:192.168.250.250:9999

这工作正常。但是,它不是持久性的。只要我控制终端,它就会停止重定向

数控
sudo nc-l-p 5555-c'nc 192.168.250.250 9999'
sudo nc-l-p5555192.168.250.2509999


两者都不起作用。第一个会抛出错误(-c不存在)。后者不会做任何事情。

up tables解决方案应该可以工作。但是,您必须检查ipv4转发并启用它(大多数linux发行版将此设置为未启用/允许),这可能是您的问题

检查这个

$ cat /proc/sys/net/ipv4/ip_forward
0
0表示不允许ip_转发,内核将不执行此操作

或者

$ echo 1> /proc/sys/net/ipv4/ip_forward
或者使用sysctl

$ sysctl -w net.ipv4.ip_forward = 1

非常感谢,Danail。你的转发被禁用是对的。第一个命令需要在1后面留一个空格,并且使用双根,这可能会让人困惑,除非先指示
sudo su-
。在第二个命令中,你在
=
符号周围有一个额外的空格。如果你能为其他人编辑,那就太好了:)尽管如此,一旦改变为1,它仍然不前进:(我昨晚使用了一个移动设备,所以格式化不是很好。总之,有一些事情你必须考虑——当流量达到192.168250.250时会发生什么?这个流量会通过这台机器返回(你设置IPTABLE)吗?或者它会使用它的默认网关(路由回源)。此外,请检查并确保所有接口的转发都已启用。在192.168.250.250上启动tcpdump,查看是否有流量到达。不必担心格式,我很感激。我认为这是一个很好的响应,因此我建议修复,以便更好地用于未来。没错,端口转发似乎正在工作。tcdump“到目的地”上的IP范围(请求的设备和转发的设备)的路由看起来都很好机器。但是,我猜IP路由与此有关。我想我会将您的答案标记为有效,因为它解决了端口重定向问题,并打开一个新的答案,以解决响应无法返回的问题。谢谢。我仍然鼓励更改格式,以便其他经验不足的人不会与此冲突变化:)谢谢!我正在考虑我的命令是否确实不正确,应该是
sudo iptables-t nat-A PREROUTING-p tcp-j DNAT-到目的地192.168.250.250:9999--dport 5555
哦,是的。。。我现在只看到这个-
tcp-spt:5555
这是错误的。使用上面的命令并确保您在sportYes上不匹配。现在处理这个问题,它就工作了,只是没有收到响应。创建了一个新问题来跟进: