У меня есть сервер с 2 реальными NIC и 1 виртуальным NIC (tun0), созданным OpenVPN.

eth0 is LAN - IP 192.168.2.1
eth1 is Internet - IP is public internet IP
tun0 is created by openvpn

Мне нужно, чтобы клиенты, которые подключаются к VPN-серверу через eth1, также получали доступ к сети eth0, например. сможет подключиться к 192.168.2.21

Раньше это работало до тех пор, пока я не перезагрузил сервер и информация о маршрутизации не была восстановлена:/ Я настроил это пару лет назад и забыл, как я это сделал.

Таблица маршрутизации теперь выглядит так:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         public gw       0.0.0.0         UG    0      0        0 eth1
public ip       *               255.255.255.0   U     0      0        0 eth1
192.168.2.0     *               255.255.255.0   U     0      0        0 eth0
192.168.8.0     192.168.8.2     255.255.255.0   UG    0      0        0 tun0
192.168.8.2     *               255.255.255.255 UH    0      0        0 tun0

Когда я запускаю OpenVPN, он пытается добавить маршрут

Tue Oct 11 19:29:58 2016 /sbin/ip route add 192.168.2.0/24 via 192.168.8.2
RTNETLINK answers: File exists
Tue Oct 11 19:29:58 2016 ERROR: Linux route add command failed: external program exited with error status: 2

Это, однако, кажется невозможным, потому что оно уже существует. Когда я удаляю этот маршрут, openVPN успешно добавляется, но сервер больше не может подключиться к сети 192.168.2.0/24.

Как я могу заставить это работать?

РЕДАКТИРОВАТЬ: да, у меня включена пересылка IPv4 и IPv6

2 ответа2

0

Сначала необходимые маршруты:

  • VPN-клиентам нужен маршрут до 192.168.2.0/24 через ваш VPN-шлюз (предположительно на 192.168.8.1 внутри виртуальной сети)
  • Устройствам в 192.168.2.0/24 необходим маршрут к 192.168.8.0/24 - поскольку ваш VPN-сервер находится на шлюзе по умолчанию, дополнительная настройка не требуется.

Затем конфигурация. Специфика зависит от топологии (net30/p2p или подсети), но в целом это так:

topology net30    
server 192.168.8.0 255.255.255.0

push "route 192.168.2.0 255.255.255.0"

Я опустил все несоответствующие (но тем не менее обязательные) варианты здесь. Однако обратите внимание, что route передается только клиентам. Он не должен быть установлен на сервере.

Поскольку клиент получает все необходимые настройки посредством push, никакой специальной настройки не требуется.

0

вам потребуется установить ip_forward в sysctl и строку accept в таблице FORWARD в iptables (в любом случае часто по умолчанию используется ACCEPT)

http://www.ducea.com/2006/08/01/how-to-enable-ip-forwarding-in-linux/

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