1

У меня есть настройка VPN, которая выглядит так:

########### internet  ############## internet  ############   LAN   ############
# macbook # --------> # VPN server #----------># PC A     # -------># PC B     #
#10.8.0.6 #           # 10.8.0.1   #           # 10.8.0.7 #         # 192.168..#
###########           ##############           ############         ############

и теперь я хочу получить доступ к ПК B в локальной сети ПК A (A находится в сети VPN) с моим macbook, я могу получить доступ к ПК A с моим macbook, так что VPN работает, мне просто нужен какой-то способ для маршрутизации трафика из MacBook через ПК A (я думаю), чтобы добраться до ПК B в локальной сети ПК A, я не могу добавить ПК B в сеть VPN, потому что у меня нет (физического) доступа к нему. (я надеюсь, что это не слишком запутанно), как я могу это сделать? VPN-сервер и ПК A работают под управлением Debian,

Любой совет очень ценится :), и извините за мой плохой английский

2 ответа2

0

Ваша настройка не полностью определена. Я делаю это предположение:

  • PC A уже находится в VPN и в подсети 192.168 .. Таким образом, PC A может нормально добраться до PC B

Точные адреса PC A и PC B в локальной подсети, к сожалению, не указаны.


Поскольку у вас нет контроля над PC B вы должны создать переадресацию портов на PC A для каждого порта, к которому вы хотите получить доступ на ПК B.

В Debian вы должны перенаправлять порты, используя iptables . У меня есть аналогичная настройка с машиной opensuse, которая пересылает RDP на PC B через VPN. Это будет на PC A .

pc_b=192.168...
macbook=10.8.0.6

case "$1" in
'start')
        iptables -F FORWARD
        iptables -t nat -F
        iptables -P FORWARD DROP
        echo 1 > /proc/sys/net/ipv4/ip_forward

        iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

        # VPN FORWARD of the RDP port (3389)
        iptables -A FORWARD -p tcp -s $pc_b --sport 3389 -d $macbook -j ACCEPT
        iptables -A FORWARD -p icmp -s $pc_b -d $macbook -j ACCEPT
        iptables -A FORWARD -p tcp -d $pc_b --dport 3389 -s $macbook -j ACCEPT

        iptables -A FORWARD -j REJECT

        # RDP from VPN
        iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 3389 \
                -j DNAT --to-destination $pc_b
        ;;
'stop')
        iptables -F FORWARD
        iptables -t nat -F
        iptables -P FORWARD ACCEPT
        echo 0 > /proc/sys/net/ipv4/ip_forward
        ;;
'status')
        iptables -t nat -L PREROUTING
        ;;
esac

Этот сценарий принимает start , stop и status и может использоваться в rc.d как сценарий уровня запуска на PC A tun0 - это интерфейс VPN.

Это запретит любой трафик между 192.168.. и VPN, за исключением явно открытых портов (3389 в этом примере). Вам не нужно запрещать все другие переадресации, но я бы порекомендовал это.

Это также перенаправит доступ к 10.8.0.7:3389 на 192.168..:3389 .


Если вы не хотите использовать переадресацию портов, вам нужно как-то изменить маршрутизацию на PC B Если у вас нет доступа к PC B , вам необходимо направить трафик от шлюза по умолчанию PC B к VPN. Одна возможность состоит в том, чтобы направить трафик для VPN от шлюза по умолчанию к PC A .

Это работает только в том случае, если вы используете другую подсеть в местоположении macbook, чем та, которая используется между PC A и PC B Если вы используете какой-либо тип маршрутизатора с вашим macbook, у вас, вероятно, также есть подсеть 192.168 ...

Для этой настройки вы не используете предыдущий скрипт.

Тебе еще нужно

echo 1 > /proc/sys/net/ipv4/ip_forward

(так же, как sysctl -w net.ipv4.ipforward=1)

Настройка маршрутизации зависит от операционной системы на шлюзе по умолчанию и вашего macbook. В целом это работает так:

На MacBook (маршрут к PC B):

route add 192.168.. gw 10.8.0.7

Это работает только в том случае, если для MacBook нет локальной подсети 192.168!

На шлюзе по умолчанию PC B (маршрут к VPN через PC A):

route add 10.8.0.6 gw 192.168..

Конечно, поскольку внутренние адреса подсетей PC A и PC B не задаются этим вопросом, я также не могу дать точную информацию о маршрутизации.

0

Если вы можете изменить сеть на ПК A, то вы можете назначить ей несколько IP-адресов. Оставьте один в диапазоне 10.0.0.x, чтобы вы могли поддерживать связь с ПК A через VPN-сервер. Добавьте второй IP к сетевой карте в диапазоне 192.168.xx.

Вероятно, вам потребуется добавить маршрут на ПК A, чтобы указать, что он должен использовать этот IP/ интерфейс для связи с ПК B. Либо через route add -net для всей сети 192.168.xx, либо route add -host 192.168.a.b. netmask foo.bar.baz.foo (и т. д.) для одного конкретного хоста.

Теперь вы сможете общаться с ПК А на ПК Б.

Если вам разрешено включать маршрутизацию на ПК A, то вы также можете настроить ее так, чтобы вы могли обращаться к ПК B напрямую с вашего MacBook или VPN-сервера.

Вы можете проверить это с помощью cat /proc/sys/net/ipv4/ip_forward или включить его с помощью sysctl -w net.ipv4.ip_forward=1


Кроме того, первым internet между MacBook и VPN-сервером, вероятно, должна быть LAN . Маршрутизация диапазонов 10.xxx в интернет довольно нетрадиционна. :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .