Назад | Перейти на главную страницу

Подключение статических IP-адресов VPN к почтовому серверу в динамической локальной сети через соединение IPv6 OpenVPN?

Да, я знаю. Ух!

У меня небольшой офис, и мы пытаемся сократить расходы на сеть.

Из-за требований аудита клиентов у нас есть собственный почтовый сервер, и мы хотели бы, чтобы он оставался таким. Для этого нам понадобится два статических IP-адреса. До сих пор у нас был «бизнес-план StaticIP» с нашим интернет-провайдером для нашей офисной сети. Обслуживание было менее чем отличным.

Я хочу переключить офисное соединение на самый дешевый / самый быстрый динамический план, который я могу найти; много вариантов. Но это означает отказ от наших статических IP-адресов для почтового сервера.

У нас также есть небольшой VPS в облаке для простого веб-сайта. У него недостаточно ресурсов для размещения нашего почтового сервера, но ЕСТЬ 2 статических IP-адреса.

Я хотел бы создать «туннель», который использует статические IP-адреса VPS в качестве нашего общедоступного IP-адреса для нашего почтового сервера и подключается к фактическому почтовому серверу - теперь в нашей локальной сети с NAT за динамическим IPv4.

После БОЛЬШОГО чтения я думаю о том, чтобы сделать это, используя OpenVPN для подключения почтового сервера офиса с помощью локального клиента OpenVPN к серверу OpenVPN, работающему на VPS - по всему «статическому» IPv6, который предоставляется туннельный брокер (HE.net) и является независимый нашего интернет-провайдера.

Мне удалось настроить туннель IPv6. И сервер и клиент OpenVPN. Я даже могу установить связь между ними по IPv6

На этом этапе я застрял - я полностью потерялся в маршрутизации (я думаю!), Необходимой для получения внешних IPv4-адресов на VPS для разговора и прослушивания внутренних IPv4-адресов, которые почтовый сервер слушает через ссылка IPv6.

Я нашел кучу статей в Интернете, но все они, кажется, говорят «просто установите соединение OpenVPN между клиентом и сервером», не вдаваясь в подробности вообще - это я все равно могу понять :-( - а затем ничего не говорите о выполнении сопоставления адресов и входящего и исходящего трафика.

Также есть брандмауэр как на VPS, так и на офисном маршрутизаторе. Я даже не начал думать о том, что мне нужно открыть для трафика IMAP и SMTP через VPN ...

Может ли кто-нибудь поделиться документом или помочь с подробным описанием того, что здесь делать и как?

Для справки, моя схема сети:

------------------------------------
| VPS Server                       |
|    eth0:                         |
|       IPv4 = 172.16.10.100       |
|       IPv6 = 2100:...:0444::100  |
|    tun1:                         |
|       IPv6 = 2199:...:1          |
------------------------------------
      |              |
      |              |
      |       ---------------------------------
      |       |    eth1:                      |
      |       |       IPv4 = 172.16.10.63     |
      |       |       IPv6 = 2100:...:0444:2  |
      |       |                               |
      |       | Server-side Gateway           |
      |       |                               |
      |       |    eth0: (PUBLIC IPs)         |
      |       |       IPv4 = x.y.z.63         |
      |       |       IPv6 = 2100:...:0444:1  |
      |       ---------------------------------
      |              |
      |              |
      |       ----------------
     VPN      | Internet/WAN |
      |       ----------------
      |              |
      |              |
      |       ---------------------------------
      |       |    eth0:                      |
      |       |       IPv4 = a.b.c.24         |
      |       |       IPv6 = 2600:...:0123:1  |
      |       |                               |
      |       | Client-side Gateway           |
      |       |                               |
      |       |    eth1:                      |
      |       |       IPv4 = 192.168.1.24     |
      |       |       IPv6 = 2600:...:0123:2  |
      |       ---------------------------------
      |              |                             ------------------------------------
      |              |-----------------------------|  MailServer                      |
      |              |                             |     eth0:                        |
      |              |                             |        IPv4 = 192.168.1.199      |
      |              |                             |        IPv6 = 2600:...:0123:199  |
      |              |                             ------------------------------------
------------------------------------
| Client                           |
|    eth0:                         |
|       IPv4 = 192.168.1.100       |
|       IPv6 = 2600:...:0123:100   |
|    tun1:                         |
|       IPv6 = 2699:...:1          |
------------------------------------

и конкретная цель - направить трафик сообщений из Интернета / глобальной сети на мои «ОБЩИЕ IP-адреса» на VPS.

IPv4 = x.y.z.63         port 25
IPv6 = 2100:...:0444:1  port 25

немедленно перенаправляться НА слушающий "MailServer", и,

трафик ОТ MailServer должен быть правильно перенаправлен НА «ОБЩИЕ IP-адреса», как представляется, исходящий с этих внешних IP-адресов.

Мне удалось получить часть идеи, работающей, следуя примерам, которые я нашел в Интернете и в кулинарной книге OpenVPN, но как только я добавил туннель IPv6, мне пока не удалось получить маршруты клиентов, нажмите маршруты и т. д. все настроены таким образом, что потоки трафика.

Вы должны иметь возможность отказаться от VPN и перейти напрямую через IPv6 от VPS к почтовому серверу, если вы запускаете TCP-прокси на VPS-сервере.

Socat подойдет для Linux:

socat -d -d -lmlocal2 \
TCP4-LISTEN:25,bind=myaddr1,su=nobody,fork,reuseaddr \
TCP6:mail.domain.local:80,bind=myaddr2

Или netsh в окнах:

netsh interface portproxy add v4tov6 listenport=25 connectaddress=mail.domain.local connectport=25 protocol=tcp

Либо перенаправляет соединения, сделанные с IPv4-адреса VPS-сервера, на IPv6-адрес почтового сервера.

Это также будет иметь дополнительное преимущество в виде пропуска VPS, если у отправителя есть доступ IPv6.


Если вы одержимы использованием OpenVPN без переадресации портов, вам придется сделать что-то вроде следующего, чтобы передать трафик:

  • Настроить IPv6-доступ к пограничным хостам
  • Настройка туннеля p2p v4 через Интернет IPv6
  • Настройте маршрутизацию, чтобы весь трафик с почтового сервера проходил через туннель.
  • Настройте NAT для преобразования вторичного адреса v4 в частный адрес v4 почтового сервера

Предполагая, что общедоступные IPv4-адреса 1.2.3.2 и 1.2.3.3 со шлюзом 1.2.3.1. Предполагая общедоступные IPv6-адреса [2001: abcd: 1 ::] для сайта VPS Предполагая общедоступные IPv6-адреса [2001: abcd: 2 ::] для клиентского сайта Предполагая IPv4-адреса туннелей 10.1.100.1 для границы VPS и 10.1 .100.2 для клиентского края

Примечание: это несколько псевдокод, но он довольно близок к конфигурации cisco. У меня нет под рукой эквивалентных конфигураций iptables и OpenVPN, но их легко перевести.

Шлюз VPS:

! gateway acts as a router
ip routing
ipv6 unicast-routing

! interfaces
interface outside
  ip address 1.2.3.2 255.255.255.248
interface inside
  ip address 172.16.10.63 255.255.255.0
  ipv6 address 2001:abcd:1:1::1 /64
interface tunnel6
  ipv6 address 2001:abcd:1::1
  tunnel source 1.2.3.2

! Routing table:
! send traffic for the client net via the openvpn p2p link
ip route 192.168.1.0 255.255.255.0 172.16.10.100
ip route 0.0.0.0 0.0.0.0 1.2.3.1
ipv6 route ::0/0 2001:abcd:1::2

! NAT Table:
! nat the mailserver
static (outside,inside) 1.2.3.4 192.168.1.199 netmask 255.255.255.255

VPS-сервер:

! vps server acts as a v4 router
ip routing

! interfaces
interface inside
  ip address 172.16.10.100
  ipv6 address 2001:abcd:1:1::100 /64

interface tun0
  tunnel source 2001:abcd:1:1::100
  tunnel destination 2001:abcd:2:1::100
  ip address 10.1.100.1 255.255.255.252

! Routing table:
ip route 192.168.1.0 255.255.255.0 10.1.100.2
ip route 0.0.0.0 0.0.0.0 172.16.10.63
ipv6 route ::0/0 2001:abcd:1:1::1

Клиентский роутер:

! gateway acts as a router
ip routing
ipv6 unicast-routing

! interfaces
interface outside
  ip address from dhcp
interface inside
  ip address 192.168.1.24 255.255.255.0
  ipv6 address 2001:abcd:2:1::1 /64
interface tunnel6
  ipv6 address 2001:abcd:2::1

! routing
ip route 172.16.10.0 255.255.255.0 192.168.1.100
ipv6 route ::0/0 2001:abcd:2::2

Клиентский край:

! client edge acts as a v4 router
ip routing

interface inside
  ip address 192.168.1.100 255.255.255.0
  ipv6 address 2001:abcd:2:1::100 /64
interface tunnel0
  tunnel source 2001:abcd:2:1::100 
  tunnel destination 2001:abcd:1:1::100
  ip address 10.1.100.2 255.255.255.252

ip route 172.16.10.0 255.255.255.0 10.1.100.1

! use pbr to send internet traffic from the mailserver over the vpn
access-list 1 permit 192.168.1.199
route-map pbr-mailserver-vpn permit 10
  match ip address 1
  set ip default next-hop 10.1.100.1
route-map pbr-mailserver-vpn permit 20
  set ip default next-hop 192.168.1.24

Почтовый сервер:

interface inside
  ip address 192.168.1.199 255.255.255.0

! since our default traffic must be natted to the secondary VPS IP, forward over 
! client edge to vpn
ip route 0.0.0.0 0.0.0.0 192.168.1.100

Примечание: Если ваши граничные маршрутизаторы поддерживают GRE или другой протокол инкапсулирующего туннеля, вы можете пропустить серверы и выполнить туннелирование на маршрутизаторах. Однако имейте в виду, что клиентский маршрутизатор должен иметь возможность выполнять маршрутизацию политики на основе адреса источника, чтобы возвращать трафик с почтового сервера обратно через туннель.

Я еще раз подчеркну, что это дает небольшое преимущество по сравнению с перенаправлением портов с v4 на v6 и увеличивает сложность до смехотворного уровня. Это также приведет к возникновению трудных для отслеживания проблем, таких как асимметричные маршруты, NAT и несколько уровней туннелей (что снизит MTU примерно на 400 байт).

Почему бы вам не разрешить офисному серверу выполнять входящую почту (SMTP) только по IPv6 и использовать VPS в качестве запасного варианта с двойным стеком? Отправители, поддерживающие IPv6, могут отправлять прямо на офисный сервер, а другие могут отправлять на VPS, который затем ретранслирует их по IPv6 в офис.