Ssh

將 ssh 與特定的網路介面一起使用

  • February 22, 2022

openconnect用來連接到vpn。輸入我的憑據後,我得到這個:

POST https://domain.name/...
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 30
Connected tun0 as xxx.xxx.xxx.xxx, using SSL
Established DTLS connection

執行ifconfig顯示我有一個tun0具有特定 IP 地址的新網路介面。

問題:如何ssh僅使用網路介面tun0,以便可以訪問該專用網路上的電腦?

編輯:

我的網路配置 ( route -n) 似乎是這樣的:

172.16.194.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.16.25.0     0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eth0

決定 TCP 數據包應該通過哪個介面的不是 ssh 客戶端,而是核心。簡而言之,SSH 要求核心打開到某個 IP 地址的連接,核心通過查詢路由表來決定使用哪個介面。

(以下假設您使用的是 GNU/Linux;一般概念對於所有 Unices 都是相同的,但是要執行的命令的細節和輸出格式的方式可能會有所不同。)

您可以使用route -n和/或 ip route show命令顯示核心路由表 。

OpenConnect 應該已經為tun0介面添加了一行;與該線路匹配的任何地址的連接都將通過該介面進行路由。例如,route -n在我的筆記型電腦上執行,我得到以下輸出:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.30.0.1       0.0.0.0         UG    0      0        0 eth0
10.30.0.0       0.0.0.0         255.255.255.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

這意味著到 192.168.122.0/24 (即根據CIDR 表示法的地址 192.168.122.0 到 192.168.122.255 )網路中的主機的連接將通過介面路由virbr0;那些到 169.254.0.0/16 和 10.30.0.0/24 的將通過eth0,其他任何東西(0.0.0.0 線)將通過 eth0 路由到網關主機10.30.0.1。

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