Да, я знаю. Ух!
У меня небольшой офис, и мы пытаемся сократить расходы на сеть.
Из-за требований аудита клиентов у нас есть собственный почтовый сервер, и мы хотели бы, чтобы он оставался таким. Для этого нам понадобится два статических 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 без переадресации портов, вам придется сделать что-то вроде следующего, чтобы передать трафик:
Предполагая, что общедоступные 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 в офис.