не удается пинговать через SSH туннель устройство

Вопрос или проблема

Я пытаюсь создать ssh VPN (через порт 443), чтобы обойти NAT и фильтрацию. Я использую этот учебник. Операционная система – Debian testing на обеих сторонах.

Туннельные устройства созданы на обеих сторонах, и адреса назначены.

Команда ssh (как root на машине B): ssh -w 0:0 MACHINE_A_PUBLIC_IP -p 443

Открывается оболочка для root

На сервере (машина 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)

В клиенте 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'

Вы можете завершить с помощью ctrl-c.

Ответ или решение

Когда вы настраиваете SSH-туннель для маршрутизации трафика между двумя устройствами, и не можете пинговать одно устройство с другого, существует несколько ключевых аспектов, которые следует проверить. Рассмотрим вашу конфигурацию более подробно и выявим возможные проблемы.

1. Проверка конфигурации туннелирования SSH

SSH команда:

ssh -w 0:0 MACHINE_A_PUBLIC_IP -p 443

Ваша команда запрашивает создание туннеля между machine A и machine B. Убедитесь, что на обоих устройствах корректно настроены конфигурации SSH:

  • На сервере, в sshd_config, у вас должно быть:
    PermitTunnel yes
  • На клиенте, в ssh_config, у вас должно быть:
    Tunnel point-to-point

2. Настройка устройства TUN

Рассмотрим ваши настройки интерфейсов TUN на обоих устройствах:

На machine A:

ip link set tun0 up
ip addr add 10.0.0.100/32 peer 10.0.0.200 dev tun0

На machine B:

ip link set tun0 up
ip addr add 10.0.0.200/32 peer 10.0.0.100 dev tun0

Убедитесь, что интерфейсы TUN активированы и правильно настроены.

3. Состояние маршрутизации

Проверим маршруты на обоих устройствах.

На machine A:

ip route

Должно быть видно, что трафик для 10.0.0.200 идет через tun0.

На machine B:

ip route

Точно так же должно быть указано, что трафик для 10.0.0.100 отправляется через tun0.

4. Настройка прокси и NAT

Проблемы с маршрутизацией и фильтрацией могут возникнуть из-за NAT либо с учетом специфических правил с файрволлом (например, iptables):

  • Проверьте настройки iptables на обоих устройствах. Возможно, правила блокируют ICMP (что отвечает за пинг).
iptables -L -v -n

Убедитесь, что у вас есть разрешение для ICMP-трафика.

5. Проверка сетевого соединения

Вы можете выполнить несколько тестов для диагностики связи:

  • Проверьте, можете ли вы пинговать локальные адреса:

    • ping 10.0.0.100 с machine B.
    • ping 10.0.0.200 с machine A.
  • Если вы можете пинговать эти адреса, значит, туннель работает, и проблема может заключаться в фильтрации ICMP.

6. Логи и состояние соединения

Проверьте журналы SSH на стороне сервера (/var/log/auth.log или /var/log/secure) на наличие ошибок или предупреждений, связанных с туннелем или сетевыми соединениями. Это может помочь идентифицировать скрытые проблемы.

7. Проверка фильтрации

Если вы действительно за NAT или имеете фильтрующий прокси, вам следует проверить настройки там. Возможно, некоторые типы трафика (например, ICMP) блокируются. Попробуйте временно отключить NAT или фильтры для тестирования.

Заключение

Подводя итог, для решения проблемы с пингом между двумя устройствами через SSH-туннель необходимо:

  1. Проверить настройки SSH и параметры конфигурации туннелей.
  2. Убедиться в правильности настройки маршрутов.
  3. Проверить настройки файрволла и NAT.
  4. Анализировать логи для обнаружения возможных ошибок.

Следуя этим шагам, вы сможете диагностировать и устранить проблему с соединением между вашими машинами.

Оцените материал
Добавить комментарий

Капча загружается...