- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 UDP 数据报中的数据传输到外部位置的客户端到我本地局域网中的 pc。但我的网络是通过 ADSL 调制解调器发送到一台装有 Slackware 的电脑,这台电脑将包重定向到其他电脑。我正在使用 socat 重定向 UDP:
socat -v udp-listen:1935,fork,reuseaddr udp:192.168.0.40:37000
在 LAN 中连接正常,但外部 IP 不起作用。有人帮忙吗?
最佳答案
我不认为 socat
是罪魁祸首,但是考虑使用 stone
而不是 socat
,因为使用了 fork ()
对于每个接收到的数据包有点奇怪。 Stone 在你的情况下是这样的(我认为):
stone -n -d -d -d -d 192.168.0.40:37000/udp 1935/udp
现在为什么外部 IP 可能不起作用。可悲的是,您的文字并没有说明您的设置,所以我不得不猜测:
这取决于您的防火墙/调制解调器/路由器是否能够转发 UDP 数据包。通常,如果你从内部发起 UDP 请求,路由器会打开一个 NAT 连接,这通常意味着,不仅数据包的源 IP 发生变化,而且源端口也会发生变化。由于 UDP 是无连接的,如果没有数据传输,UDP NAT 连接通常会很快超时,比如 5 分钟后。
如果必须在相反的方向(从Internet 到Intranet)打开UDP,路由器通常会丢弃所有来自Internet 的UDP 数据包,因为它不知道将它们转发到哪里。路由器不能随便选择一些任意机器,这将是一个安全漏洞。所以在“Internet connecting to a machine behind the router”中你必须打开路由器上的UDP端口,让它转发到正确的机器上。在这种情况下,从您的内部机器发送的数据包将获得其源 IP 和源端口被重写,Internet 上的机器始终会将数据包视为来自您的路由器。因此,除了路由器中的附加规则外,这种情况与传出情况相同。
请注意,有几种不同的方法可以制作 NAT(对称等),也有几种方法可以打开路由器上的端口(Config、UPnP 等),所以总是会在其中戳一些洞取决于你的硬件能力。这一切都无法在这里得到解答。
还有一些其他可能出错的想法:
一些 UDP 协议(protocol)对负载中的 IP 地址进行编码。在那种情况下,仅仅转发数据包是不够的,您还必须更改有效负载以更正交换的 IP 地址,以使所有机器能够一起通信。不管怎样,这样的 UDP 协议(protocol)设计得很糟糕,因为你永远不应该假设任意两台机器可以直接相互对话,所以所有好的协议(protocol)都应该支持简单的代理。
某些 ISP 会出于任意原因过滤某些 UDP 端口。如果您在从 Internet 与 DSL 通话时遇到问题,请尝试使用直接连接到不同 ISP 的两台外部计算机。如果这些可以通过 UDP 通信,请检查您是否可以从您的 Intranet 与其中一台外部机器通信。如果这仍然有效,这意味着您也可以向后交谈,因为通常 UDP 不是定向协议(protocol),但如果涉及一些 NAT,您必须以某种方式确保通信端口保持打开状态。
<移动互联网计划通常不支持 P2P。这可能意味着,那些计划根本不支持互联网,因为IP,顾名思义,就是P2P。 ISP 真正想用“无 P2P”表达的是(我的猜测),即不支持从 Internet 到移动设备的连接。在这种情况下,您始终必须从移动设备发起连接,因此您不能使用推送方法(互联网到手机),移动设备始终必须拉取(来自互联网的数据)。一些宽带/有线电视提供商可能也会这样做。如果您的 ISP 将 10.x.y.z 范围内的 IP 分发给您,您通常可以看到这一点。
可能还有另一个技巧可以使连接正常工作:
请您的 ISP 获取一些 IPv6。也许使用 6to4 .使用 IPv6,您可以完全消除 NAT,然后您的本地 LAN 可以直接互连到 IPv6 上的 Internet。请务必在 IPv6 接口(interface)上的 Intranet 主机上激活防火墙/iptables,否则您可能会很快看到入侵者。
HTH
关于udp - 用于重定向 UDP 的 SOCAT 不起作用!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5968226/
在我的服务器上使用 Socat 我有当前命令: socat -u tcp-l:7767,fork system:/app/getmsg.sh 所有 getmsgh.sh 所做的是: read MESS
外部数据提供者与我们的其中一台服务器建立 tcp 连接。 我想使用 socat 来“多路复用”传入的数据,以便多个程序可以接收从外部数据提供者发送的数据。 socat -u TCP4-LISTEN:4
我正在使用 socat 命令在我的嵌入式 linux 设备上创建一个 tty 接口(interface),例如: socat pty,link=/dev/ttyS9 TCP:10.0.10.1:999
我一直在尝试使用socat通过虚假的HTTP答复对正在侦听的套接字的每个连接进行响应。我无法正常工作。可能是因为我使用的是Socat的Cygwin版本?我不知道。 问题的一部分是我不希望将第二个参数写
一段时间后,我终于让 socat 以与 putty 相同的方式运行,使用: stty -F /dev/ttyS2 115200 cs8 ixoff socat $(tty),raw,echo=0,es
我在我的 ubuntu 笔记本上创建了两个虚拟串行端口。 -> sudo socat/dev/ttyUSB7/dev/ttyUSB8 现在我想删除串行端口以及它们之间的连接。 我找不到执行此操作的命令
我要模拟 3 个不同的应用程序,每个都连接到不同的串行调制解调器 (rs232)。我希望每个应用程序都通过在“虚拟”串行线上写入来与其他应用程序通信我尝试配置 socat 应用程序,但现在我只能使用以
我正在运行这样的隧道: socat TCP-LISTEN:9090,fork TCP:192.168.1.3:9090 我想运行一个脚本来执行带有通过隧道的字符串的代码。 脚本不改变字符串,只独立处理
我使用带有 OpenWRT 的 TP-Link 路由器 TL-WR710N 作为 IPv4 到 IPv6 的转换器/网关,使用以下 socat 命令: socat TCP4-LISTEN:80,for
我使用以下代码接收连接: socat TCP-LISTEN:4000,fork EXEC:./myscrpit" 我的脚本中需要一个发件人的 IP 地址,但是 SOCAT_PEERADDR 没有设置,
我正在编写 JUnit 测试来测试我的应用程序。该应用程序是用 Java 编写的,并使用 purejavacomm 库。为了测试串行解析器,我想设置一个虚拟串行端口,以便测试可以与解析器通信。除了简单
我在 kubernetes 的一个端口上运行 pyspark。我正在尝试转发到我的本地机器。执行 python 文件时出现此错误。 Forwarding from 127.0.0.1:7077 ->
我正在使用 socat 版本 1.7.3.2 从 VLAN 以太网设备创建字符设备以进行通信。我使用以下命令创 build 备: socat INTERFACE:wwan0.vlan_dev1,typ
我想用 socat 创建一个端口转发器,以便通过单个 openssl channel 重定向多个分支连接。我可以在不使用任何 tun 或 vpn 的情况下在 socat 中执行此操作吗? 到目前为止,
如何用socat测试远程端口是否可达? 通过 netcat 我们可以 nc -zv 192.168.1.15 22 如何使用 socat 做到这一点? 最佳答案 由于 OP 请求等效于 -z,因此以下
我正在使用 Windows 的 socat 作为客户端通过 SSH 隧道 DNS,它可以完美地工作,直到 ssh 连接终止或暂时不可用 - 当这种情况发生时 socat Windows 客户端终止并需
目标是使用串行接口(interface)连接到嵌入式设备。到目前为止,我使用过: stty -F /dev/ttyS2 115200 cs8 ixoff socat readline,history=
此命令(串行端口重定向器)接受 TCP:11313 上的单个连接: socat PTY,link=/dev/ttyV1,echo=0,raw,unlink-close=0 TCP-LISTEN:113
我有一个开放端口的服务器,每秒接收 50 到 1000 条消息。我所说的消息是指发送单行文本。 本质上,我们希望将这些消息记录在一个文件中,该文件将每小时(或 x 分钟)处理一次。 我已经创建了一个在
我只想要一个进程打开 socat 创建的 PTY 设备。 我使用以下内容创建 my_ser设备,但它可以被多个进程读/写。 socat -t 0 INTERFACE:my_nw,type=2 PTY,
我是一名优秀的程序员,十分优秀!