Очень простое решение:
1. используйте OpenVPN 2.3 или больше (в настоящее время, последнее с 2.3 альфами) для сервера + клиенты
2. используйте параметр конфигурации OpenVPN ниже
3. не используйте ничто больше (никакой ipfilter, никакие приемы)
На стороне сервера необходимо вручную распределить адреса VPN (так нет server
опция, необходимо использовать ifconfig
или ifconfig-push
) :
# /etc/openvpn/server.conf
ifconfig 10.99.99.1 10.99.99.2
route 10.99.99.0 255.255.255.0
push "route 10.99.99.0 255.255.255.0"
push "client-nat dnat 10.99.99.11 255.255.255.255 10.10.111.11"
push "client-nat dnat 10.99.99.12 255.255.255.255 10.10.112.12"
push "client-nat dnat 10.99.99.13 255.255.255.255 10.10.113.13"
route
и push route
и client-nat
строки требуются, если Вы хотите связаться непосредственно между маршрутизаторами (ping 10.99.99.1
от удаленного сайта до VPN). Еще можно отбросить их.
.
.
Теперь необходимо выбрать адрес виртуальной сети. Я сохранил то же, которое Вы использовали в своем примере: 10.10.0.0/16
Вы позволяете направлять для этого:
# /etc/openvpn/server.conf
route 10.10.0.0 255.255.0.0
push "route 10.10.0.0 255.255.0.0"
.
.
Необходимо теперь дать клиенту команду использовать 1:1 NAT:
# /etc/openvpn/ccd/client_11
ifconfig-push 10.99.99.11 10.99.99.1
push "client-nat snat 10.99.99.11 255.255.255.255 10.10.111.11"
push "client-nat snat 192.168.0.0 255.255.255.0 10.10.11.0"
push "client-nat dnat 10.10.10.0 255.255.255.0 192.168.0.0"
iroute 10.10.11.0 255.255.255.0
iroute 10.10.111.0 255.255.255.0
Первая строка установила адрес удаленного маршрутизатора. Остерегайтесь о драйвере Windows, требующем специальных адресов.
Вторые и последние строки позволяют удаленному маршрутизатору связываться от 10.99.99.x интерфейс.
Третьи и четвертые строки делают источник и место назначения 1:1 NAT
Пятая строка говорит OpenVPN, что сделать с соответствующими пакетами.
Этот метод позволяет соединять сайты с идентичным (или не) адреса локальной сети без любого затененного хоста.
Я думаю, что Вы ограничены изменением его в новомодном файле конфигурации, как так:
# Ubuntu upstart file at /etc/init/mongodb.conf
limit nofile 20000 20000
kill timeout 300 # wait 300s between SIGTERM and SIGKILL.
pre-start script
mkdir -p /var/lib/mongodb/
mkdir -p /var/log/mongodb/
end script
start on runlevel [2345]
stop on runlevel [06]
script
ENABLE_MONGODB="yes"
if [ -f /etc/default/mongodb ]; then . /etc/default/mongodb; fi
if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --exec /usr/bin/mongod -- --config /etc/my-mongodb.conf; fi
end script
В вышеупомянутом я изменил путь в этой строке:
if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon \
--start --quiet --chuid mongodb --exec /usr/bin/mongod -- \
--config /etc/my-mongodb.conf; fi