Маршрутизация Linux и HMA

Мои настройки следующие:
У меня есть доступ ssh к удаленной машине, работающей под управлением последней версии Ubuntu Server edition, и я должен запустить на ней программное обеспечение "через" HideMyAss VPN (потому что IP-адрес этой машины должен быть подделан, когда программное обеспечение работает). Но, конечно, я хочу, чтобы иметь возможность по-прежнему получить доступ к машине через его "оригинальный" IP.

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

Это вообще разрешимо, и если да, то как?
Спасибо!

29
задан m4573r
16.12.2022 23:44 Количество просмотров материала 2553
Распечатать страницу

2 ответа

если вы хотите, чтобы ваше конкретное программное обеспечение использовало VPN-соединение, вы можете использовать сетевые пространства имен.

в принципе, команда ip netns add vpn создаст другое пространство имен для сетевых устройств, таблиц маршрутизации, правил брандмауэра и т. д., Так что это похоже на запуск двух сетевых стеков.

сетевое устройство может быть только в одном пространстве имен, поэтому вам понадобится виртуальное устройство, действующее как мост между двумя пространствами имен.

это именно то, что виртуальный сетевые интерфейсы предназначены для:

ip link add veth0 type veth peer name veth1

все, что входит в veth0, выйдет из veth1 и так далее. Теперь достаточно переместить один из виртуальных интерфейсов в другое сетевое пространство имен:

ip link set veth0 netns vpn

теперь у вас ситуация, похожая на эту топологию сети:

                   .----------.              .------.
[intertubes] ------|   Host   |--------------|  vpn |
               eth0`----------`veth1    veth0`------`

вы можете применить любой метод, который вы хотите поделиться подключение к интернету. Либо сделайте маскарад (если vpn поддерживает пересечение NAT), маршрутизацию / мостовое соединение (вам понадобится другой IP-адрес или серьезные конфигурации) или любой другой метод, который вам нравится.

когда вы хотите "доступ"vpn, run ip netns exec vpn bash и вы в конечном итоге в vpn пространство имен. Вы увидите, что это пространство имен имеет только veth0 сетевой интерфейс, а также ненастроенный lo интерфейс, который вы можете настроить с помощью ip addr add 127.0.0.1/8 dev lo && ip link set lo up. Теперь просто настройте свой veth0 интерфейс, так что вы можете подключиться к интернету, а затем запустить VPN, чтобы он мог перенастроить сеть, чтобы пойти через VPN. Вы увидите, что основное пространство имен не будет использовать VPN, в то время как vpn пространства имен.

3
отвечен BatchyX 2022-12-18 07:32

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

одно простое и простое решение-указать серверу, чтобы он достиг вашего IP-адреса через eth0, установив маршрут:

    ip route add your_ip_address via the_server's_gateway

и надеясь, что сценарий VPN не коснется его.

если вы также хотите разрешить другим хозяевам доступ к исходному адресу сервера, то есть, если вы также хотите, чтобы ваш сервер отвечал на его исходный IP-адрес и IP-адрес VPN, вам нужно будет изменить, как VPN изменяет ваш маршрут, или, по крайней мере, знать, как он изменяет их, чтобы обойти то, что он делает.

в основном, то, что вы хотите-это правила маршрутизации. У вас будет две таблицы маршрутизации: одна будет использовать VPN, а другая не будет его использовать.

если сценарий VPN будет изменять только main таблица, после этого вы можно добавить другую таблицу маршрутизации для исходного IP-адреса.

так что в основном, перед запуском VPN, вы дублируете main содержимое в другую таблицу, например table 2 (2-произвольное число, см./etc/iproute2 / rt_tables для определения псевдонима имени):

ip route add (network)/(prefixlen) dev eth0 src (address) table 2
ip route add default via (gateway) dev eth0 src (address) table 2

теперь добавьте правило, чтобы использовать эту таблицу, если ваш сервер доступен по его исходному IP-адресу из eth0 интерфейс:

ip rule add to (address) iif eth0 table 2

затем вы запускаете VPN сценарий.

теоретически, вы должны бежать ip rule add перед добавлением маршрута по умолчанию к вашей второй таблице, потому что в противном случае ядро отклонит это правило, сказав, что оно не может направить к шлюзу. но в вашем случае он будет просто отлично работать как main уже маршрут к шлюзу.

0
отвечен BatchyX 2022-12-18 09:49

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх