Назад | Перейти на главную страницу

Анонимизация OpenVPN Разрешить SSH-доступ к внутреннему серверу

Я использую анонимный VPN, но мне нужен SSH-доступ к внутреннему компьютеру.

Как мне получить доступ к своему внутреннему компьютеру через SSH? Когда я делаю SSH 98.123.45.6, время ожидания соединения истекло.

При поиске я нашел рекомендации либо настроить правила iptables, правила маршрутизации, либо добавить ListenAddress в sshd_config. Что из этого относится к моему случаю?

Вот мой маршрут:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.115.81.1     10.115.81.9     255.255.255.255 UGH   0      0        0 tun0
10.115.81.9     *               255.255.255.255 UH    0      0        0 tun0
50.1.2.3-sta    ddwrt           255.255.255.255 UGH   0      0        0 eth0
192.168.1.0     *               255.255.255.0   U     202    0        0 eth0
169.254.0.0     *               255.255.0.0     U     204    0        0 vboxnet0
loopback        *               255.0.0.0       U     0      0        0 lo
default         10.115.81.9     128.0.0.0       UG    0      0        0 tun0
128.0.0.0       10.115.81.9     128.0.0.0       UG    0      0        0 tun0
default         ddwrt           0.0.0.0         UG    202    0        0 eth0

Чтобы решить эту проблему, вам необходимо настроить обе iptables и правила маршрутизации. Конкретная проблема, с которой вы сталкиваетесь, заключается в том, что исходящие пакеты SSH маршрутизируются через ваш анонимный интерфейс туннеля VPN, а не через интерфейс Ethernet. Это происходит потому, что ваше программное обеспечение VPN настроило правило маршрутизации для отправки любого необработанного трафика через туннельный интерфейс. Подходит для анонимизации вашего сетевого трафика; плохо для установления SSH-соединений с вашим компьютером.

Есть несколько способов решить эту проблему, но я поделюсь с вами тем, который работал у меня в идентичной ситуации. Вот что нам нужно сделать:

  1. Создайте новую таблицу IP-правил для обработки не-VPN-трафика
  2. Добавьте IP-правило для поиска в нашей таблице без VPN любых пакетов, отмеченных определенной маской netfilter.
  3. Добавьте IP-маршрут, который направляет весь трафик в нашу таблицу без VPN, чтобы использовать ваш интерфейс Ethernet вместо туннеля.
  4. Добавьте правило iptables, чтобы отмечать весь трафик SSH с помощью нашей назначенной маски netfilter

Примечание: я работал с Raspbian, пока делал следующее, поэтому вы мощь необходимо немного настроить команды, чтобы они соответствовали вашему дистрибутиву.

Создание новой таблицы IP-правил

Начните с просмотра файла определения таблицы iproute2. Мы хотим убедиться, что не используем имя или номер каких-либо существующих таблиц правил.

cat /etc/iproute2/rt_tables

Скорее всего, вы увидите что-то подобное:

# reserved values
255      local 
254      main
253      default   
0        unspec
#
# local
#
#1      inr.ruhep

Выберите произвольный номер и имя для вашей новой таблицы правил - ничего, что не использовалось выше. Я буду использовать номер 201 и имя novpn для оставшейся части этого ответа.

Добавьте определение непосредственно в файл определения или отредактируйте его в текстовом редакторе по вашему выбору:

echo "201 novpn" >> /etc/iproute2/rt_tables

Добавьте новое IP-правило для поиска в таблице без VPN

Проверьте все существующие правила IP, которые имеют дело с масками netfilter:

ip rule show | grep fwmark

Если grep ничего не выдает, все в порядке. Если он печатает несколько строк, обратите внимание на шестнадцатеричное число справа от слова fwmark в каждой строке. Вам нужно будет выбрать номер, который в настоящее время не используется. Поскольку у меня не было существующих правил fwmark, я выбрал число 65.

ip rule add fwmark 65 table novpn

Это приводит к тому, что любые пакеты с маской netfilter 65 ищут наш новый novpn таблица с инструкциями по маршрутизации пакетов.

Направляйте весь трафик в нашей новой таблице на использование интерфейса Ethernet

ip route add default via YOUR.GATEWAY.IP.HERE dev eth0 table novpn

Здесь важно отметить dev eth0. Это заставляет весь трафик, проходящий через novpn таблица, чтобы использовать только аппаратный интерфейс Ethernet, а не интерфейс виртуального туннеля, создаваемый вашей VPN.

Сейчас самое время очистить кеш iproute, чтобы новые правила и маршруты вступили в силу немедленно:

ip route flush cache

Укажите правилу брандмауэра отмечать весь трафик SSH с помощью указанной маски сетевого фильтра.

iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 65

Здесь слишком много вариантов, чтобы я мог подробно их объяснить. Я настоятельно рекомендую вам прочитать страницу руководства для iptables, чтобы понять, что здесь происходит:

man iptables

Вкратце: мы добавляем правило вывода в таблицу mangle брандмауэра (для специализированной обработки пакетов), которая инструктирует его отмечать любые TCP-пакеты, исходящие из порта источника 22, с помощью нашей назначенной маски netfilter 65.

Что дальше?

На этом этапе вы должны быть готовы протестировать SSH. Если все пойдет хорошо, вы должны увидеть счастливое приглашение «Войти как».

В целях безопасности я рекомендую вам указать вашему брандмауэру отбрасывать любые входящие SSH-запросы из туннельного интерфейса:

iptables -A INPUT -i tun0 -p tcp -m tcp --dport 22 -j DROP

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