Поделиться VPN-соединением через Ethernet

452
Wrykoulaka

Я пытаюсь настроить старый ПК с 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
Andy

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

Ваш маршрут по умолчанию в 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 увеличиваются после установления туннеля.

Спасибо @Анди, это сработало как шарм :) Wrykoulaka 6 лет назад 0

Похожие вопросы