Tsocks

使用 tsocks 時相同的目標 IP 地址

  • November 5, 2012

我需要使用 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
}

我該如何解決這個問題?

您需要兩個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’ssocksify而不是,tsocks如果它們在遠端端具有不同的主機名,則使用主機名(並根據 中的主機名或域名指定要使用的 SOCKS 伺服器dante.conf)。

首先,您可以通過 SSH 配置文件完成所有操作。如果您只是通過 SSH 連接到終端機器,則尤其如此。請參閱SSH 多跳配置。使用適當建立的 SSH 配置,您可以只分配目標名稱並鍵入ssh serveraor ssh 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 中獲取的函式。

引用自:https://unix.stackexchange.com/questions/53869