При работе над текущим проектом потребовалось реализовать довольно хитрую маршрутизацию для пользователей в сеть закрытую VipNet-ом. И чтобы не забыть эту эпическую историю напишу небольшую инструкцию как это было реализовано.
На этапе установки RedOS устанавливаем статический адрес для сервера который будет выступать маршрутизатором на сети VipNet.

Проверяем, что настройки применились корректно.

Приступаем к базовой установке сервера.

Копируем VipNet Linux client для RedOS.
Устанавливаем клиент.
# rpm -i ./vipnetclient-gui_gost_x86-64_5.1.4-8917.rpm
Запускаем графическую оболочку.

Добавляем ключ и вводим пароль ключа.

VipNet подключен.
Настраиваем NAT для входящего трафика, но сначала определимся с адресацией.
# tcpdump -i ens18 -n icmp
Результат.
08:51:13.910753 IP 10.88.14.100 > 10.88.14.106: ICMP echo request, id 1, seq 1, length 64
08:51:13.910802 IP 10.88.14.106 > 10.88.14.100: ICMP echo reply, id 1, seq 1, length 64
08:51:14.910011 IP 10.88.14.100 > 10.88.14.106: ICMP echo request, id 1, seq 2, length 64
Настраиваем сервис для маскардинга трафика /etc/systemd/system/nat-2-vipnet.service.
[Unit]
Description=NAT network for VipNet
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/iptables -t nat -A POSTROUTING -s 10.88.14.0/24 -o tun0 -j MASQUERADE
[Install]
WantedBy=multi-user.target
Активируем и запускаем.
# systemctl enable nat-2-vipnet.service
# systemctl start nat-2-vipnet.service
Проверяем правило.
# iptables -L -n -v -t nat
# Warning: iptables-legacy tables present, use iptables-legacy to see them
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE 0 -- * ens18 10.88.14.0/24 0.0.0.0/0
Не забываем активировать маршрутизацию в /etc/sysctl.conf.
net.ipv4.ip_forward=1
Проверим, что роутинг активен.
# cat /proc/sys/net/ipv4/ip_forward
Тестируем связь до хоста с сервера с VipNet.
# ping 10.14.115.241
PING 10.14.115.241 (10.14.115.241) 56(84) bytes of data.
64 bytes from 10.14.115.241: icmp_seq=1 ttl=63 time=69.8 ms
64 bytes from 10.14.115.241: icmp_seq=2 ttl=63 time=70.1 ms
^C
--- 10.14.115.241 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 69.760/69.907/70.055/0.147 ms
На любом сервере в этой подсети пропишем маршрут через хост в VipNet до сети за VipNet.
# route add -net 10.14.115.0/24 gw 10.88.14.106
Проверяем, что мы можем работать через этот маршрут.
# ping 10.14.115.241
PING 10.14.115.241 (10.14.115.241) 56(84) bytes of data.
64 bytes from 10.14.115.241: icmp_seq=1 ttl=62 time=70.9 ms
64 bytes from 10.14.115.241: icmp_seq=2 ttl=62 time=70.4 ms
64 bytes from 10.14.115.241: icmp_seq=3 ttl=62 time=70.7 ms
^C
— 10.14.115.241 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 70.414/70.671/70.884/0.194 ms
Настраиваем автоматический вход в систему для автозапуска VipNet (Администрирование -> менеджер пользователей Mate).

Оключаем скринсэйвер (Параметры -> Хранитель экрана).

Добавляем VipNet в автозапуск (Параметры -> Запуск приложений).

Прописываем на роутере скриптом маршруты до нужных сетей /usr/local/bin/ext_routes.sh.
#!/bin/sh
route add -net 10.14.0.0/16 gw 10.88.14.106
exit 0
Сервис автоприменения маршрутов аналогично сервису для NAT /etc/systemd/system/ext-route.service.
[Unit]
Description=Ext Routes
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/ext_routes.sh
[Install]
WantedBy=multi-user.target
Активируем и запускаем.
# systemctl daemon-reload
# systemctl start ext-route.service
# systemctl enable ext-route.service
Добавляем статические маршруты для SoftEther VPN.





