使用 tsocks 时相同的目标 IP 地址

使用 tsocks 时相同的目标 IP 地址

我需要使用 tsocks(通过 ssh 隧道建立 ssh 连接以到达给定的机器),但有一个问题。有两台服务器具有相同的 IP 地址(我需要通过 ssh 隧道访问)。因此,这种情况的配置如下所示:

cat /etc/tsocks.conf
path {
    reaches = 10.1.1.2/255.255.255.255
    server = 127.0.0.1
    server_port = 3000
}

path {
    reaches = 10.1.1.2/255.255.255.255
    server = 127.0.0.1
    server_port = 2000
}

我该如何解决这个问题?

答案1

您需要两个tsocks.conf,每个 SOCKS 服务器一个,然后将它们用作:

TSOCKS_CONF_FILE=~/.tsocks-A.conf tsocks some-cmd 10.1.1.2

TSOCKS_CONF_FILE=~/.tsocks-B.conf tsocks some-cmd 10.1.1.2

或者,如果 SOCKS 服务器支持 SOCKS4A 或 SOCKS5,则可以使用dante'socksify代替tsocks并使用主机名(如果它们在远程端具有不同的主机名)(并根据 中的主机名或域名指定要使用的 SOCKS 服务器dante.conf)。

答案2

首先,您可以通过 SSH 配置文件完成所有操作。如果您只是通过 SSH 连接到终端计算机,则尤其如此。请参阅SSH 多跳配置。通过正确建立 SSH 配置,您只需分配目标名称并键入ssh serverassh serverb,而不必设置 SSH 隧道然后键入tsocks ssh servera

tsocks确实无法区分你想要什么。一种方法是设置两个配置文件并发出命令来交换每个网络的配置

例如:

$ chmod +x /usr/local/bin/tsocksa.sh

$ cat /usr/local/bin/tsocksa.sh
#!/bin/bash  
#
#Swaps for Network A
#See /etc/tsocs.conf.main and /etc/tsocks.conf.dest_a
#
sudo cat /etc/tsocks.conf{.main,.dest_a} > /etc/tsocks.conf

$ chmod +x /usr/local/bin/tsockss.sh

$ cat /usr/local/bin/tsockss.sh  
#!/bin/bash  
#
#Swaps for Network S
#See /etc/tsocks.conf.main and /etc/tsocks.conf.dest_s
#
sudo cat /etc/tsocks.conf{.main,.dest_s} > /etc/tsocks.conf

现在您可以将网络交换特定命令放入/etc/tsocks.conf.dest_n并将通用网络放入/etc/tsocks.conf.master

您还可以对相同的命令使用 Bash 别名,或者进一步将 Bash 脚本简化为可以在 bashrc 中获取的函数。

相关内容