无法通过 ssh 隧道设备 ping 通

无法通过 ssh 隧道设备 ping 通

我正在尝试创建一个 ssh VPN(通过端口 443)来绕过 NAT 和过滤。我在用教程。操作系统是双方的 Debian 测试。

两端创建隧道设备,并分配地址。

ssh 命令(以机器 B 上的 root 身份):ssh -w 0:0 MACHINE_A_PUBLIC_IP -p 443

为root打开一个shell

在服务器(机器A)上,PermitTunnel设置为yes,并cat /proc/sys/net/ipv4/ip_forward返回1

机器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

结果:

机器A:

36: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none 
    inet 10.0.0.100 peer 10.0.0.200/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::9210:8322:2382:e696/64 scope link flags 800 
       valid_lft forever preferred_lft forever

机器B:

32: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none 
    inet 10.0.0.200 peer 10.0.0.100/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::bd70:5f4d:c8f5:aa2c/64 scope link flags 800 
       valid_lft forever preferred_lft forever

为什么我无法发送 ping?

我是否错过了明显的故障排除步骤?

难道是我背后的过滤器?

编辑:

在机器 A(服务器)上ip route

default via 192.168.1.1 dev eth1 proto static metric 100 
10.0.0.200 dev tun0 proto kernel scope link src 10.0.0.100 
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.126 metric 100 
192.168.100.0/24 dev virbr1 proto kernel scope link src 192.168.100.1 linkdown 
192.168.105.0/24 dev virbr4 proto kernel scope link src 192.168.105.1 linkdown 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 
239.0.0.0/8 dev lo scope link 

在机器 B(客户端)上ip route

default via 192.168.1.1 dev wlp3s0 proto static metric 600 
10.0.0.100 dev tun0 proto kernel scope link src 10.0.0.200 
169.254.0.0/16 dev wlp3s0 scope link metric 1000 
192.168.1.0/24 dev wlp3s0 proto kernel scope link src 192.168.1.136 metric 600

在机器 B(客户端)上ping 10.0.0.100

PING 10.0.0.100 (10.0.0.100) 56(84) bytes of data.
^C
--- 10.0.0.100 ping statistics ---
10 packets transmitted, 0 received, 100% packet loss, time 9000ms

ping服务器上的输出是相同的,他们每个人都可以 ping 自己的接口(机器 B 可以 ping 10.0.0.200),(机器 A 可以 ping 10.0.0.100)

答案1

在客户端 ssh_config 中:

Tunnel point-to-point

在服务器 sshd_config 中:

PermitTunnel point-to-point

然后在客户端一根线建立连接:

ssh \
  -o PermitLocalCommand=yes \
  -o LocalCommand="sudo ifconfig tun5 192.168.42.2 pointopoint 192.168.42.1 netmask 255.255.255.0" \
  -o ServerAliveInterval=60 \
  -w 5:5 [email protected] \
  'sudo ifconfig tun5 192.168.42.1 pointopoint 192.168.42.2 netmask 255.255.255.0; echo tun5 ready'

您可以使用 ctr-c 终止。

相关内容