我正在运行 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 或主机名,则可以执行以下操作
- 使用反向隧道打开 ssh(最好使用带密钥的 ssh 连接来实现系统自动化)
- 建立隧道后,将主机名条目添加到 /etc/hosts 文件中,但将其指向 127.0.0.1
- 当隧道关闭时,从 /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