Ssh
將 ssh 與特定的網路介面一起使用
我
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。