假设我们的网络拓扑如下图所示,B能够直连A,B想要直连与A同一子网的其它机器。
1.在A上执行
#打开IP转发
$ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
2.修改A的/etc/ssh/sshd_config文件,允许root登入,允许隧道转发
PermitRootLogin yes
PermitTunnel yes
3.在B上执行
#通过A创建SSH隧道
$ sudo ssh -NTCf -w 0:0 1.2.3.4
如果没有错误发生的话,在A和B上执行
$ ip addr show tun0
会有如下字段
tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1510 qdisc pfifo_fast state UNKNOWN qlen 500
link/none
4.创建点对点通信链路
在A上执行
ip link set tun0 up
ip addr add 10.0.0.100/32 peer 10.0.0.200 dev tun0
在B上执行
ip link set tun0 up
ip addr add 10.0.0.200/32 peer 10.0.0.100 dev tun0
此时AB已经能够通过虚拟IP互相ping通了
5.添加路由
在B上执行
route add -net 192.168.1.0/24 gw 10.0.0.100
此时B能够直连与A机器同一子网的其它机器了。