SSH 터널 장치를 통해 ping할 수 없습니다.

SSH 터널 장치를 통해 ping할 수 없습니다.

NAT 및 필터링을 우회하기 위해 SSH VPN(포트 443을 통해)을 만들려고 합니다. 나는 사용하고있다이것지도 시간. 운영 체제는 모두 데비안 테스트를 거쳤습니다.

양쪽 끝에 터널 장치를 만들고 주소를 할당합니다.

ssh 명령(머신 B의 루트로):ssh -w 0:0 MACHINE_A_PUBLIC_IP -p 443

루트용 쉘 열기

서버(머신 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

왜 핑을 보낼 수 없나요?

확실한 문제 해결 단계를 놓쳤습니까?

내 뒤에 있는 필터가 아닐까?

편집하다:

머신 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서버의 출력은 동일하며 각각 자신의 인터페이스를 핑할 수 있습니다(머신 B는 10.0.0.200을 핑할 수 있음)(머신 A는 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로 종료할 수 있습니다.

관련 정보