Вот как мы это сделали.
Мы настроили GRE-туннель между А.А.А.А.
и B.B.B.B.
(интерфейс gre1
на обоих серверах) с внутренними IP-адресами туннеля точка-точка 10.0.0.1
и 10.0.0.2
(соответственно). Обратите внимание, что нет необходимости в шифровании, потому что пакеты в туннеле будут просто развернуты и отправлены через Интернет как есть.
Далее нам нужно настроить B.B.B.B.
включить NAT
на его внешнем интерфейсе eth0
. Это делается через брандмауэр
. Затем мы должны добавить пользовательское правило в брандмауэр
чтобы не блокировать входящие пакеты GRE. Мы ставим gre1
интерфейс в доверенный
зоне, поэтому все пакеты, поступающие внутрь туннеля, разрешены и будут обработаны NAT.
В домашней сети мы уже были настроены через брандмауэр
в качестве NAT-маршрутизатора, поэтому оставалось только (а) создать другую сторону туннеля GRE и (б) заставить Linux перенаправлять 192.168.1.17
Исходящий трафик в туннель. Этот последний шаг является немного сложной частью.
Подробности ниже...
Настройка включена B.B.B.B.
(Удаленный сервер)
Добавить интерфейс gre1
:
# /etc/sysconfig/сеть/ifcfg-gre1
STARTMODE='при загрузке'
BOOTPROTO='статический'
ТУННЕЛЬ='gre'
TUNNEL_LOCAL_IPADDR='B.B.B.B'
TUNNEL_REMOTE_IPADDR='А.А.А.А'
IPADDR='10.0.0.2'
REMOTE_IPADDR='10.0.0.1'
TUNNEL_TTL='64'
ЗОНА=доверенная
Добавьте маршрут к домашней сети и удаленной стороне P2P-соединения через gre1
:
# /etc/sysconfig/сеть/ifroute-gre1
# Параметры интерфейса сетевой маски шлюза назначения
192.168.1.0/24 - - -
10.0.0.1 - - -
Настроить брандмауэр
с помощью брандмауэр yast2
- Поставить интерфейс
eth0
в зоне внешний
- Поставить интерфейс
gre1
в зоне доверенный
- Добавить пользовательское правило брандмауэра в зону
внешний
разрешение входящих GRE-пакетов от А.А.А.А.
- Добавьте кастомные правила брандмауэра, чтобы зажать TCP MSS на оба
внешний
и доверенный
зоны (требуется брандмауэр >= 1.0.0
)
Файлы зоны в /etc/брандмауэр/зоны
:
# /etc/firewalld/zones/external.xml
<зона>
<short>Внешний</short>
<имя службы="ssh"/>
...
<маскарад/>
<правило семейства="ipv4">
<исходный адрес="А.А.А.А."/>
<принять/>
</правило>
<правило>
<tcp-mss-clamp value="1420"/><!-- требуется firewalld >= 1.0.0 -->
</правило>
<имя интерфейса="eth0"/>
</зона>
# /etc/firewalld/zones/trusted.xml
<целевая зона="ПРИНЯТЬ">
<short>Надежный</short>
<description>Все сетевые подключения разрешены.</description>
<правило>
<tcp-mss-clamp value="1420"/><!-- требуется firewalld >= 1.0.0 -->
</правило>
<имя интерфейса="gre1"/>
</зона>
Настройка включена А.А.А.А.
(Сервер домашней сети)
Это предполагает, что А.А.А.А.
уже настроен на NAT 192.168.1.0/24
сеть и т. д.
Добавить интерфейс gre1
:
# /etc/sysconfig/сеть/ifcfg-gre1
STARTMODE='при загрузке'
BOOTPROTO='статический'
ТУННЕЛЬ='gre'
TUNNEL_LOCAL_IPADDR='А.А.А.А'
TUNNEL_REMOTE_IPADDR='B.B.B.B'
IPADDR='10.0.0.1'
REMOTE_IPADDR='10.0.0.2'
TUNNEL_TTL='64'
ЗОНА='доверенная'
Добавить маршрут к удаленной стороне P2P-соединения через gre1
:
# /etc/sysconfig/сеть/ifroute-gre1
# Параметры интерфейса сетевой маски шлюза назначения
10.0.0.2 - - -
Настроить брандмауэр
с помощью брандмауэр yast2
:
- Поставить интерфейс
gre1
в зоне доверенный
- Интерфейс
eth0
уже должен быть в зоне внешний
Активация перенаправления
Это последняя «сложная часть», которая вызывает 192.168.1.17
исходящий трафик будет перенаправлен через туннель GRE.
Чтобы включить перенаправление, запустите эти команды на А.А.А.А.
:
$ ip route очистить таблицу 10
$ ip route добавить таблицу 10 по умолчанию через 10.0.0.2 dev gre1
$ ip rule add from 192.168.1.17 таблица 10 приоритет 10
Чтобы отменить приведенные выше команды:
$ ip rule del from 192.168.1.17 таблица 10 приоритет 10
$ ip route очистить таблицу 10