我有一个本地网络,其中包含一台名为black
Ubuntu 16 服务器的计算机和一台树莓派。树莓派有两张网卡。一张面向这个本地网络,另一张通过路由器连接到我的 ISP。 black
有一个面向这个网络的接口。树莓派运行一个开箱即用的 ssh 服务器。
我想使用 sshuttle(或类似的其他程序)来提供black
互联网连接。
这是在调用 sshuttle 之前运行的:
username@black:~$ cat /etc/network/interfaces
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
auto enp2s0
iface enp2s0 inet static
address 192.168.0.11
netmask 255.255.255.0
username@black:~$ ip route
192.168.0.0/24 dev enp2s0 proto kernel scope link src 192.168.0.11
username@black:~$ ping 8.8.8.8
connect: Network is unreachable
然后我像这样运行 sshuttle:
username@black:~$ sshuttle -r [email protected] 0.0.0.0/0
[email protected]'s password:
-c:3: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
client: Connected.
然后在另一个终端中运行以下命令:
username@black:~$ ip route
192.168.0.0/24 dev enp2s0 proto kernel scope link src 192.168.0.11
username@black:~$ ping 8.8.8.8
connect: Network is unreachable
我该如何实现此功能,以便一旦连接到 sshuttle,就可以向本地网络之外的 IP 发送 ping?出于各种原因,它必须是 ssh 隧道,但除了 sshuttle 之外还有其他东西吗?
答案1
来自 sshuttle 文档:
您向其中一个代理 IP 地址发起的任何 TCP 会话都将被 sshuttle 捕获,并通过 ssh 会话发送到 sshuttle 的远程副本,然后 sshuttle 将在该端重新生成连接,并通过 ssh 来回传输数据。
它看起来本质上与本机 SOCKS5 服务器执行相同的操作,ssh -D
只是它对本地机器来说是透明的,因此客户端不需要支持使用代理服务器。
但是,我看不到它支持代理 UDP 或 ICMP。