如何进行端口地址转换以连接到本地转发的反向端口

如何进行端口地址转换以连接到本地转发的反向端口

我正在运行 4 个 splunk 索引器,并且必须在端口 9997 上连接到它。除了可以在 127.0.0.1:8971 连接到的反向 ssh 端口转发之外,我没有直接视线或任何路由到这些 splunk 服务器的方式。 、127.0.0.1:8972、127.0.0.1:8973 和 127.0.0.1:8974。

我怎样才能欺骗我的linux机器(sles 11 SP4)思考:

  • 1.2.3.1:9997 -> 127.0.0.1:8971
  • 1.2.3.2:9997 -> 127.0.0.1:8972
  • 1.2.3.3:9997 -> 127.0.0.1:8973
  • 1.2.3.4:9997 -> 127.0.0.1:8974

我有一个输出规则

   51  3060 DNAT       tcp  --  *      *       0.0.0.0/0            1.2.3.4       tcp dpt:9997 to:127.0.0.1:8971

这有效,但我得到的回应是垃圾

14:37:23.425219 IP 192.168.58.10.55403 > 127.0.0.1.8971: S 2063729062:2063729062(0) win 14600 <mss 1460,sackOK,timestamp 1532158690 0,nop,wscale 5>
14:37:23.425243 IP 127.0.0.1.8971 > 192.168.58.10.55403: S 2663988489:2663988489(0) ack 2063729063 win 32768 <mss 16396,sackOK,timestamp        1532158690 1532158690,nop,wscale 5> 
14:37:23.425249 IP 192.168.58.10.55403 > 127.0.0.1.8971: R 2063729063:2063729063(0) win 0

并且不会像我直接连接到端口转发那样完成套接字

14:38:33.822640 IP 127.0.0.1.34731 > 127.0.0.1.8971: S 2794569169:2794569169(0) win 32792 <mss 16396,sackOK,timestamp 1532176289 0,nop,wscale 5>
14:38:33.822649 IP 127.0.0.1.8971 > 127.0.0.1.34731: S 1241947612:1241947612(0) ack 2794569170 win 32768 <mss 16396,sackOK,timestamp 1532176289 1532176289,nop,wscale 5>
14:38:33.822655 IP 127.0.0.1.34731 > 127.0.0.1.8971: . ack 1 win 1025 <nop,nop,timestamp 1532176289 1532176289>
14:38:33.822991 IP 127.0.0.1.34731 > 127.0.0.1.8971: F 1:1(0) ack 1 win 1025 <nop,nop,timestamp 1532176289 1532176289>
14:38:33.825172 IP 127.0.0.1.8971 > 127.0.0.1.34731: . ack 2 win 1024 <nop,nop,timestamp 1532176290 1532176289>
14:38:33.835115 IP 127.0.0.1.8971 > 127.0.0.1.34731: F 1:1(0) ack 2 win 1024 <nop,nop,timestamp 1532176292 1532176289>
14:38:33.835138 IP 127.0.0.1.34731 > 127.0.0.1.8971: . ack 2 win 1025 <nop,nop,timestamp 1532176292 1532176292>

答案1

如果您可以使用 dns 或主机名,则可以执行以下操作

  1. 使用反向隧道打开 ssh(最好使用带密钥的 ssh 连接来实现系统自动化)
  2. 建立隧道后,将主机名条目添加到 /etc/hosts 文件中,但将其指向 127.0.0.1
  3. 当隧道关闭时,从 /etc/hosts 文件中删除这些条目。

第 1 步非常简单,有很多示例。
第 2 步和第 3 步并不那么简单,但也很简单

在较高级别上,使用 cron 触发脚本,查看 netstat 的输出以确定是否有活动的反向连接,然后使用 sed 或 awk 重写主机文件以指向正确的地址。

如果主机名实际上不可行,则可以重新定义远程隧道设置以使用 127.0.0.x 而不是 1 并分散端口。

就像是

ssh credentials -NT -R 1.2.3.1:9997:127.0.0.2:9997 

相关内容