1

Я пытаюсь настроить старый ПК с linux (CentOS) в качестве точки доступа к VPN у меня в другом доме. У меня есть два интерфейса Ethernet, поэтому я хочу использовать один для подключения к Интернету через маршрутизатор, подключения к VPN и затем использовать это подключение VPN по моей второй сети Ethernet. IP на втором устройстве должен быть назначен DHCP.

Я читал много уроков / постов и смог поделиться своим обычным интернет-соединением с отключенным VPN. Однако, как только я запускаю VPN, независимо от того, каковы мои правила iptables / маршрутов, я застреваю без интернета на моем втором устройстве. Я не знаю, что я делаю неправильно. Может ли кто-нибудь помочь?

Вот мои конфигурации: - enp2s0: это связано с моим основным маршрутизатором. - enp0s29f7u1: это будет связано со вторым устройством

enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP                                                                                           group default qlen 1000
    link/ether bc:ee:7b:19:89:68 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.26/24 brd 192.168.1.255 scope global noprefixroute enp2s0
       valid_lft forever preferred_lft forever
    inet6 fe80::c25c:2c9d:4777:79fc/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
enp0s29f7u1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast stat                                                                                          e UP group default qlen 1000
    link/ether 00:e0:4c:69:35:d0 brd ff:ff:ff:ff:ff:ff
    inet 10.8.0.5/24 brd 10.8.0.255 scope global noprefixroute enp0s29f7u1
       valid_lft forever preferred_lft forever
    inet6 fe80::2e0:4cff:fe69:35d0/64 scope link
       valid_lft forever preferred_lft forever

Как только я подключаюсь к своему VPN, появляется другой интерфейс, tun0:

tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::2d75:64c0:6c21:c9d9/64 scope link flags 800
       valid_lft forever preferred_lft forever

Мой /etc/dhcp/dhcpd.conf имеет следующие параметры:

subnet 10.8.0.0 netmask 255.255.255.0 {
  range 10.8.0.10 10.8.0.15;
  option routers 10.8.0.5;
  option domain-name-servers 8.8.8.8, 8.8.4.4;
}

Второе устройство получает 10.8.0.11 в качестве ip, так что я думаю, что оно работает нормально.

Я добавил следующие правила, используя iptables:

iptables -t nat -I POSTROUTING 1 -o tun0 -j MASQUERADE
iptables -I FORWARD 1 -i tun0 -o enp0s29f7u1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD 1 -i enp0s29f7u1 -o tun0 -j ACCEPT

Дополнительная информация:

  • У меня действительно включена пересылка ip4:/sbin/sysctl net.ipv4.ip_forward возвращает net.ipv4.ip_forward = 1

  • Я могу получить доступ к Интернету с IP-адреса с моего сервера VPN в другом доме, как и ожидалось. Однако я могу сделать это только с компьютера, на котором я настраиваю эту конфигурацию, а не с устройства, подключенного через enp0s29f7u1 .

  • Это маршруты до / после запуска vpn.

ДО

ip route
default via 192.168.1.1 dev enp2s0 proto static metric 101
10.8.0.0/24 dev enp0s29f7u1 proto kernel scope link src 10.8.0.5 metric 100

ПОСЛЕ

IP-маршрут

0.0.0.0/1 via 10.8.0.1 dev tun0
default via 192.168.1.1 dev enp2s0 proto static metric 101
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
10.8.0.0/24 dev enp0s29f7u1 proto kernel scope link src 10.8.0.5 metric 100
xx.xx.xx.xx via 192.168.1.1 dev enp2s0
128.0.0.0/1 via 10.8.0.1 dev tun0
192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.26 metric 101

192.168.1.0/24 dev enp2s0 proto kernel scope link src 192.168.1.26 metric 101

Я заменил свой публичный ip VPN-сервера на xx.xx.xx.xx

Что мне здесь не хватает?

РЕДАКТИРОВАТЬ: Из отчаяния, я пытался соединить интерфейсы, даже если я знал, что это не было хорошей идеей. Это тоже не сработало.

1 ответ1

0

У вас есть много правильных вещей, так что поздравляю с этим далеко. Несколько вещей выглядят неправильно для меня.

Ваш маршрут по умолчанию в tun0 неверен: 0.0.0.0/1 пропускает только половину интернета в tun0. Вам нужна другая половина. Попробуйте добавить 128.0.0.0/1. В качестве альтернативы используйте «default» или 0.0.0.0/0, чтобы получить обе половинки за один раз, но затем убедитесь, что вы используете более низкую метрику, которая «по умолчанию через 192.168.1.1». После этого смотрите мой последний абзац. Вы можете представить другую проблему.

Еще одна вещь, которая меня беспокоит, это то, что вы используете 10.8.0.0/24 как для подсети tun, так и для подсети LAN. Вы, вероятно, хотите, чтобы это были разные подсети. Это также проявляется в виде двух дублирующих маршрутов в вашей таблице маршрутизации для 10.8.0.0/24. Попробуйте перенести enp0s29f7u1 в следующую подсеть, 10.8.1.5/24, и сделайте то же самое с вашим сервером dhcp.

subnet 10.8.1.0 netmask 255.255.255.0 {
  range 10.8.1.10 10.8.1.15;
  option routers 10.8.1.5;
  option domain-name-servers 8.8.8.8, 8.8.4.4;
}

Помимо этого конфигурация выглядит хорошо. Есть еще одна проверка здравомыслия. Убедитесь, что вы не душите подключение вашего VPN к Интернету. Вам все еще нужен маршрут, который имеет приоритет над 0.0.0.0/0, чтобы tun не пытался использовать себя для доступа к VPN-серверу. В вашей таблице должен быть маршрут, более конкретный, чем 0.0.0.0/0. Я считаю, что у вас уже есть этот маршрут, но это распространенная ошибка.

xx.xx.xx.xx via 192.168.1.1 dev enp2s0

Чтобы убедиться в этом, убедитесь, что ваши счетчики Rx на интерфейсе tun увеличиваются после установления туннеля.

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