У меня есть две машины Linux, подключенные к VPN-туннелю:
VPN Client <-------> VPN Server
10.74.1.10/24 10.74.1.1/24
У каждого есть сетевые адаптеры для подключения к собственной сети:
---------> VPN Client <-------------------> VPN Server <------
10.37.0.205/24 10.74.1.10/24 10.74.1.1/24 10.74.0.1/24
И, конечно же, в каждой сети у меня разные компьютеры Linux (Linux A, Linux B и т. Д.):
Linux A <----> VPN Client <-----> VPN Server <----> Linux B
Из VPN Client
, Я могу пинговать VPN Server
и компьютеры как Linux B
.
Хотя из Linux A
, Я могу пинговать оба VPN Client
машинные интерфейсы (10.32.0.205
и 10.74.1.10
), оказывается Я не могу пинговать VPN Server
с адресом 10.74.1.1
или к любому компьютеру в сети B.
Я пытался добавить новый маршрут на Linux A
, но я получаю это:
$ sudo ip route add 10.74.1.1 via 10.74.1.10 dev eth0
RTNETLINK answers: Network is unreachable
$ sudo ip route add 10.74.1.1 via 10.37.0.205 dev eth0
RTNETLINK answers: Network is unreachable
Как я могу заставить это работать? Может что-то настроить на VPN Client
?
РЕДАКТИРОВАТЬ:
Таблица маршрутов на VPN Client
это:
default via 10.37.0.1 dev eth0
10.37.0.0/24 dev eth0 proto kernel scope link src 10.37.0.205
10.74.0.0/16 via 10.74.1.9 dev tun0
10.74.1.0/24 via 10.74.1.9 dev tun0
10.74.1.9 dev tun0 proto kernel scope link src 10.74.1.10
128.0.0.0/1 via 10.74.1.9 dev tun0
Таблица маршрутов на Linux A
:
default via 10.37.1.1 dev eth0
10.37.1.0/24 dev eth0 proto kernel scope link src 10.37.1.217
Также я активировал переадресацию IP на VPN Client
$ sudo sysctl -w net.ipv4.conf.all.forwarding=1
РЕДАКТИРОВАТЬ 2:
Пакетная фильтрация включена VPN Client
:
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Какой тип VPN вы используете?
Похоже на ваш VPN Client
должен ли трафик NAT от Linux A
на ваш VPN Server
& Linux B
. И / или: ваш Linux B
нет пути обратно к вашему VPN Client
.
Если вы добавляете маршрут, то следующий переход должен быть локальным для ссылки. Linux A
может напрямую подключаться только к адресам 10.37.1.0/24. Но
ip route add 10.74.1.1 via 10.74.1.10 dev eth0
говорит: отправить пакет на 10.74.1.1 на локальный хост 10.74.1.10. Поскольку 10.74.1.10 не является локальным для ссылки (или: не настроен как таковой), вы получаете сообщение об ошибке Network is unreachable
.
Следующим шагом должен быть локальный адрес VPN Client
:
ip route add 10.74.1.1 via 10.37.0.205 dev eth0
Я изо всех сил пытался найти простое решение проблемы, похожей на эту, и обнаружил, что sshuttle является самым простым, по крайней мере, временным решением, как это было для меня.
Одна машина linux имеет доступ к VPN, а с sshuttle, запущенным на другой машине, я получил доступ к этой VPN.
Кроме того, маршрутизацию можно легко отфильтровать, используя блок cidr в качестве последнего параметра. Это повысило удобство использования второй машины, поскольку не все вызовы поступают на машину с поддержкой VPN.
sshuttle --dns -r user@192.168.86.100 10.208.0.0/16
Ссылка на сайт: https://github.com/sshuttle/sshuttle
Установка необходима только на клиенте. SSH-доступ к машине с поддержкой VPN - это все, что для этого требуется.