Arch Linux VPN + L2TP: соединение установлено, интернет работает, но нет доступа к внутренней сети

Arch Linux VPN + L2TP: соединение установлено, интернет работает, но нет доступа к внутренней сети

Я настроил VPN согласноэтотинструкция (у меня Linux), все нормально, соединение устанавливается, IP-адрес меняется с моего на USA, но ресурсы, которые должны быть доступны по VPN, по-прежнему недоступны.

Настраивал то же самое подключение по той же инструкции, но только для Windows 10 - все работает и ресурсы доступны. На Linux трафик к этим ресурсам не идет через VPN сервер, но я так и не смог разобраться как это исправить, т.к. я в этом не силен. Информация о моей системе:

$ cat /etc/*release
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://www.archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
LOGO=archlinux

Я предполагаю, что трафик обходит VPN-сервер и проходит через шлюз по умолчанию.

Вот что показывает nslookup

$nslookup confluence.internal.mycompany.com
Server:    8.8.8.8
Address:  8.8.8.8#53

Я думаю, имеет смысл попробоватьМаршрутизация, но я не силен в сетевом администрировании и не знаю, как определить правильный подмножественный адрес. Например, aaa.internal.mycompany.com, bbb.internal.mycompany.com, ccc.internal.mycompany.com и т. д. Я хочу направить трафик на aaa,bbb,ccc через VPN, как это сделать?

Вот также информация tcpdump, которая может быть полезна:

13:57:39.163855 IP 172.16.203.173.41032 > 8.8.8.8.53: 44676+ A? confluence.internal.mycompnay.com. (50)

00:06:11.353064 IP 172.16.203.173.39547 > 8.8.4.4.53: 13730+ A? confluence.internal.mycompany.com. (50)
00:06:11.484299 IP 172.217.1.46.443 > 172.16.203.173.35770: Flags [P.], seq 1:40, ack 39, win 269, options [nop,nop,TS val 1580986377 ecr 1105408237], length 39
00:06:11.484400 IP 172.16.203.173.35770 > 172.217.1.46.443: Flags [.], ack 40, win 502, options [nop,nop,TS val 1105408387 ecr 1580986377], length 0
00:06:11.525396 IP 8.8.4.4.53 > 172.16.203.173.39547: 13730 NXDomain 0/1/0 (113)
00:06:11.525562 IP 172.16.203.173.39547 > 8.8.4.4.53: 32697+ AAAA? confluence.internal.mycompany.com. (50)
00:06:11.697698 IP 8.8.4.4.53 > 172.16.203.173.39547: 32697 NXDomain 0/1/0 (113)
00:06:11.698212 IP 172.16.203.173.48215 > 8.8.8.8.53: 13821+ A? confluence.internal.mycompany.com. (50)
00:06:11.698276 IP 172.16.203.173.48215 > 8.8.8.8.53: 19952+ AAAA? confluence.internal.mycompany.com. (50)
00:06:11.859694 IP 8.8.8.8.53 > 172.16.203.173.48215: 13821 NXDomain 0/1/0 (113)
00:06:11.872141 IP 8.8.8.8.53 > 172.16.203.173.48215: 19952 NXDomain 0/1/0 (113)
00:06:11.873004 IP 172.16.203.173.49336 > 8.8.8.8.53: 36616+ A? confluence.internal.mycompany.com. (50)
00:06:12.034300 IP 8.8.8.8.53 > 172.16.203.173.49336: 36616 NXDomain 0/1/0 (113)
00:06:12.034472 IP 172.16.203.173.49336 > 8.8.8.8.53: 34317+ AAAA? confluence.internal.mycompany.com. (50)
00:06:12.195798 IP 172.16.203.173.33819 > 8.8.8.8.53: 61396+ A? translate.google.com. (38)
00:06:12.197393 IP 172.16.203.173.49098 > 216.58.192.206.443: Flags [P.], seq 2343637690:2343638004, ack 443265426, win 11148, options [nop,nop,TS val 2103047503 ecr 1587334695], length 314
00:06:12.209082 IP 8.8.8.8.53 > 172.16.203.173.49336: 34317 NXDomain 0/1/0 (113)
00:06:12.209542 IP 172.16.203.173.54539 > 8.8.8.8.53: 62574+ A? confluence.internal.mycompany.com. (50)
00:06:12.209658 IP 172.16.203.173.54539 > 8.8.8.8.53: 56421+ AAAA? confluence.internal.mycompany.com. (50)
00:06:12.334328 IP 172.16.203.173.56738 > 172.217.6.2.443: Flags [P.], seq 1835541891:1835541930, ack 3334813663, win 502, options [nop,nop,TS val 324800469 ecr 1444482233], length 39
00:06:12.334456 IP 172.16.203.173.56978 > 216.58.192.130.443: Flags [P.], seq 712232265:712232304, ack 2284899148, win 502, options [nop,nop,TS val 1560658341 ecr 3970133710], length 39
00:06:12.334525 IP 172.16.203.173.56994 > 172.217.4.37.443: Flags [P.], seq 175676537:175676576, ack 336787689, win 24353, options [nop,nop,TS val 525175697 ecr 3037756038], length 39
00:06:12.334592 IP 172.16.203.173.45234 > 172.217.8.195.443: Flags [P.], seq 840900759:840900798, ack 624615808, win 1323, options [nop,nop,TS val 2439520764 ecr 528658266], length 39
00:06:12.348814 IP 216.58.192.206.443 > 172.16.203.173.49098: Flags [.], ack 314, win 1050, options [nop,nop,TS val 1587377915 ecr 2103047503], length 0
00:06:12.358256 IP 8.8.8.8.53 > 172.16.203.173.33819: 61396 2/0/0 CNAME www3.l.google.com., A 216.58.192.206 (75)
00:06:12.358483 IP 172.16.203.173.39682 > 8.8.8.8.53: 10206+ AAAA? translate.google.com. (38)
00:06:12.370884 IP 8.8.8.8.53 > 172.16.203.173.54539: 56421 NXDomain 0/1/0 (113)
00:06:12.382054 IP 8.8.8.8.53 > 172.16.203.173.54539: 62574 NXDomain 0/1/0 (113)

Я прав, что это не правильно? Трафик не должен идти через DNS гугла, верно?

Вот что netstat -rс выключенным vpn:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    600    0        0 wlp2s0
192.168.0.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp2s0

с включенным vpn:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     500    0        0 ppp0
0.0.0.0         192.168.0.1     0.0.0.0         UG    600    0        0 wlp2s0
192.0.2.1       0.0.0.0         255.255.255.255 UH    500    0        0 ppp0
192.168.0.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp2s0
192.168.0.1     0.0.0.0         255.255.255.255 UH    600    0        0 wlp2s0
208.100.17.99   192.168.0.1     255.255.255.255 UGH   600    0        0 wlp2s0

Я пыталсяэтотно не удалось: я потерял подключение к интернету

Вот мои настройки VPN в сетевом менеджере:

введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь

Как мне устранить неполадки?

решение1

Я хочу направить трафик на aaa,bbb,ccc через VPN. Как это сделать?

Я предполагаю, что это локальные адреса (как вы утверждаете в заголовке), например 192.168.0.2. Пакеты на этот адрес не проходят через туннельный интерфейс, потому что у вас есть более конкретный маршрут, чем маршрут по умолчанию, указывающий на wlp2s0:

192.168.0.1     0.0.0.0         255.255.255.255 UH    600    0        0 wlp2s0

При статической маршрутизации более конкретные маршруты всегда «выигрывают». Чтобы решить эту проблему, можно сделать следующее:

  1. Удалить текущий маршрут с помощьюip route delete 192.168.0.1
  2. Добавьте новый маршрут к этому префиксу (который адресует хосты aaa,bbb,cc) с интерфейсом ( dev), указывающим на интерфейс туннеля. Например: ip route add 192.168.0.1/24 via $IP_OF_TUNNELGATEWAY dev ppp0

решение2

Наконец, я решил свою проблему. Это долгая история. Основная причина — неправильная конфигурация DNS, в результате которой внутренние (за VPN-сервером) адреса не могли быть правильно разрешены. Предположение, почему это произошло, следующее. Каждый раз, когда я подключаюсь к VPN, происходит следующая цепочка событий:

  1. -> сетевой менеджер

    ->strongswanппп0

    -> dhclient ppp0 (172.16.203.173, 192.0.2.1, dns1=xyz11, dns2=xyz12) -> resolvconf

    ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc fq_codel state UNKNOWN group default qlen 3 link/ppp inet 172.16.203.173 peer 192.0.2.1/32 scope global ppp0 valid_lft forever preferred_lft forever

    -> dns1=xyz11, dns2=xyz12 в /etc/resolv.conf

DNS-адреса были взяты из конфигурации VPN-подключения (см. скриншот выше).

  1. Новый маршрут default via ppp0 metric 500был добавлен в таблицу маршрутизации. Его приоритет меньше приоритета по умолчанию enp3s0, 0.0.0.0 192.168.0.1 0.0.0.0 UG 100 0 0 enp3s0в результате чего трафик не проходит через ppp0.первая проблема

  2. /etc/resolv.conf, содержащий dns1 и dns2, в какой-то момент времени переопределяется сетевым менеджером на DNS-серверы Google по умолчанию 8.8.8.8 и 8.8.4.4.второй выпуск

Чтобы исправить вторую проблему, я установилdnsmasqкоторый служит прокси и обрабатывает dns самостоятельно. Мне пришлось удалить, pacman -R openresolv netctlкоторый изменился /etc/resolv.confи не содержит единственный адрес dnsmasq:

# Generated by NetworkManager
search internal.mycompany.com
nameserver 127.0.0.1
options edns0 trust-ad

чтобы указать сетевому менеджеру использовать dnsmarq, я также добавил эту строку в /etc/NetworkManager/conf.d/dns.conf:

[main]
dns=dnsmasq

Чтобы исправить первую проблему в NetworkManager, я добавил более конкретный маршрут, имеющий более высокий приоритет, чем маршрут enp3s0 по умолчанию:

10.Y.X.Z    192.0.2.1       255.255.255.255 UGH   500    0        0 ppp0

Вот и все. Весь трафик к внутренним ресурсам идет через VPN, остальной трафик идет как и прежде.

Также я запретил любую перезапись /etc/resolve.conf

chattr +i /etc/resolv.conf ((to protect the file from write))

chattr -i /etc/resolv.conf ((для снятия защиты, режим по умолчанию)) - для отката

Надеюсь, это будет кому-то полезно.

Связанный контент