WireGuard - это современный протокол виртуальной частной сети (VPN), разработанный для обеспечения безопасной и эффективной связи между различными устройствами или сетями. Принцип работы WireGuard базируется на обмене ключами шифрования и создании туннеля между устройствами.
1) Чтобы настроить маршрутизацию между двумя локальными сетями через VPN с использованием WireGuard, вам понадобится настроить сервер и клиента WireGuard. На сервере вы должны настроить маскарадинг (NAT) и маршрутизацию, чтобы перенаправить весь трафик от клиента через VPN. Таким образом, доступ к серверу будет возможен только через VPN. Клиенту также нужно определить маршрут по умолчанию через VPN, чтобы весь его трафик был направлен через туннель WireGuard.
2) Для настройки маршрутизации в WireGuard с учетом конкретного IP-адреса вы можете использовать политики маршрутизации с помощью таблиц маршрутизации Linux. На сервере WireGuard вы можете создать дополнительную таблицу маршрутизации с соответствующей меткой и определить правило маршрутизации для этого IP-адреса через VPN. Например, вы можете настроить маршрут для IP-адреса 192.168.1.123 следующим образом:
ip rule add from 192.168.1.123 lookup <номер таблицы>
ip route add default via <IP-адрес VPN-шлюза> table <номер таблицы>
3) Чтобы интегрировать работу с фаерволлом в WireGuard, вы можете использовать iptables или nftables для настройки правил фильтрации и маскарадинга. На сервере WireGuard вы можете настроить фаерволл для разрешения только трафика, связанного с VPN, а остальной трафик блокировать. Например, вы можете добавить правило iptables, чтобы разрешить только входящий и исходящий трафик по порту WireGuard (по умолчанию 51820):
iptables -A INPUT -p udp --dport 51820 -j ACCEPT
iptables -A OUTPUT -p udp --sport 51820 -j ACCEPT
iptables -A FORWARD -i wg0 -j ACCEPT
iptables -A FORWARD -o wg0 -j ACCEPT
iptables -A INPUT -i wg0 -j ACCEPT
iptables -A OUTPUT -o wg0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -j DROP
Обратите внимание, что приведенные команды являются примерами и могут потребовать дополнительной настройки в зависимости от вашей конкретной сетевой конфигурации и требований.