1

Возможно ли и как поделиться OpenVPN (в настоящее время Anonine) -соединением с указанными IP-адресами в локальной сети? Локальная локальная сеть состоит из компьютеров под управлением ОС Windows и Linux и устройств Android.

Текущая настройка, сервер с дистрибутивом Ubuntu Server:

  • eth0: публичный ip (dhcp, скажем, 112.112.112.112), общий для локальной сети с iptables
  • eth1: локальная локальная сеть (192.168.1.1)
  • tap0: OpenVPN (Anonine DHCP 221.221.221.221) с опцией конфигурации route-nopull

В данный момент я делюсь публичным IP-адресом для локальной сети с помощью iptables:

iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -o eth0 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Чего я хотел бы добиться - это подключить интернет-соединение eth0 к локальной сети с IP-адресами 192.168.1.2 - 192.168.1.19, и они отказались использовать OpenVPN -соединение tap0.

Затем я хотел бы поделиться OpenVPN-соединением с ip-адресами, превышающими 192.168.1.19, и они отказались использовать eth0 любой ценой.

Я буду вручную добавлять серверы имен на каждом клиенте в локальной сети.

- ПОСЛЕ ЧАСОВ ПОПЫТКИ -

Таблица маршрутов, когда route-nopull используется с OpenVPN:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         88.115.14.1     0.0.0.0         UG    0      0        0 eth0
88.115.14.0     *               255.255.224.0   U     0      0        0 eth0
localnet        *               255.255.255.0   U     0      0        0 eth1

И эта маршрутизация используется, когда OpenVPN добавляет маршруты:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         46.246.18.101   128.0.0.0       UG    0      0        0 tap0
0.0.0.0         88.115.14.1     0.0.0.0         UG    0      0        0 eth0
46.246.18.100   0.0.0.0         255.255.255.128 U     0      0        0 tap0
80.67.8.213     88.115.14.1     255.255.255.255 UGH   0      0        0 eth0
88.115.14.0     0.0.0.0         255.255.224.0   U     0      0        0 eth0
128.0.0.0       46.246.18.129   128.0.0.0       UG    0      0        0 tap0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

Вот что я использовал для предоставления публичного IP (WAN) локальной сети:

iptables -A FORWARD -o eth0 -i eth1 -m iprange --src-range 192.168.1.2-192.168.1.19 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m iprange --src-range 192.168.1.2-192.168.1.19 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -m iprange --src-range 192.168.1.2-192.168.1.19 -o eth0 -j MASQUERADE

Это для того, чтобы попытаться поделиться OpenVPN для локальной сети

iptables -A FORWARD -o tap0 -i eth1 -m iprange --src-range 192.168.1.20-192.168.1.254 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m iprange --src-range 192.168.1.20-192.168.1.254 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -m iprange --src-range 192.168.1.20-192.168.1.254 -o tap0 -j MASQUERADE

Приведенная выше iptables работает для части общего доступа eth0, когда для OpenVPN не используется no-route, но она не работает для tap0. Если я разрешаю маршруты по умолчанию для OpenVPN, то он работает для tap0, но не для eth0.

Теперь вопрос в том, как мне нужно изменить таблицы маршрутизации на сервере Ubuntu, чтобы это работало? Или мне нужно изменить таблицы маршрутизации для клиентов?

1 ответ1

0

Да, это не сложно, просто какая-то работа. Вы должны будете настроить свой Ubuntu PC как маршрутизатор, по всему Интернету есть миллиард руководств.

Есть несколько хитростей:

1) не устанавливайте сервер DHCP/dnsmasq, в этом нет необходимости: он уже есть в вашей сети.

2) большинство гидов скажут вам:

у вас есть два интерфейса Ethernet, eth0 подключен к WAN, eth1 подключен к LAN

Это правильно, но для маршрутизации других ПК через VPN вы должны заменить tap0/tun0 (в зависимости от того, что вы используете) на eth0, интерфейс в глобальной сети.

Примечание: вы можете достичь той же функциональности даже с одной сетевой картой (я говорил выше, что вам нужно два интерфейса, а не две карты), но если у вас есть только одна карта, вам нужно будет научиться использовать и настраивать vifs = Virtual Interfaces , В этом случае у вас будет ПК, соединяющийся с вами через интерфейс eth0: 1, и ваш компьютер перенаправит это сообщение на интерфейс tap0. Это прекрасно работает, не волнуйтесь, это просто уменьшает вашу пропускную способность в два раза в часы пик.

3) Вам придется изменить IP-адрес маршрутизатора по умолчанию на всех компьютерах, для которых вы хотите, чтобы это работало, один за другим. Если вы сделаете это через маршрутизатор, IP-адрес Ubuntu будет также передан на ПК, для которых вы не хотите запускать эту службу.

4) вы можете легко заблокировать некоторые устройства, используя iptables, чтобы отказаться от соединений с определенных IP-адресов.

Это некоторый объем работы, и его нелегко масштабировать. Лучшее решение - получить маршрутизатор с программным обеспечением DD-WRT/OpenWRT/Tomato (вы можете купить несколько моделей с предварительно установленным DD-WRT или самостоятельно обновить существующую), настроить VLAN и предоставить Клиент OpenVPN сервис только для членов VLAN1.

Редактировать:

исходя из того, что вы мне сказали, вы можете поделиться своим VPN-соединением, изменив два ваших правила iptables (оставьте два других как есть) следующим образом:

 iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -o tap0 -m conntrack --ctstate NEW -j ACCEPT
 iptables -t nat -A POSTROUTING -o tap0 -j MASQUERADE

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