-
Чтобы этого не произошло, достаточно настроить Kill Switch.
В конфиг клиента добавляем пару строк. Покажу на примере iptables в линукс:
[Interface]Address = 10.8.0.2/32PrivateKey = CLIENT_PRIVATE_KEYDNS = 193.138.218.74PostUp = iptables -I OUTPUT ! -o %i -m mark ! —mark $(wg show %i fwmark) -m addrtype ! —dst-type LOCAL -j REJECT && ip6tables -I OUTPUT ! -o %i -m mark ! —mark $(wg show %i fwmark) -m addrtype ! —dst-type LOCAL -j REJECTPreDown = iptables -D OUTPUT ! -o %i -m mark ! —mark $(wg show %i fwmark) -m addrtype ! —dst-type LOCAL -j REJECT && ip6tables -D OUTPUT ! -o %i -m mark ! —mark $(wg show %i fwmark) -m addrtype ! —dst-type LOCAL -j REJECT[Peer]PublicKey = SERVER_PUBLIC_KEYEndpoint = SERVER_REAL_IP:51820AllowedIPs = 0.0.0.0/0PersistentKeepalive = 21—————————————-CONF—————————————-Примечания к конфигу:— DNS — для примера указан non-logged DNS-сервер Mullvad. Лучшим решением будет указание собственного DNS.— PostUp и PostDown — вот тут настраиваем KillSwitch— CLIENT_PRIVATE_KEY и SERVER_PUBLIC_KEY — мы опять же, подставляем ключи, сгенерированные ранее,— SERVER_REAL_IP — прописываем IP адрес нашего сервера, на котором установлен WireGuard
В Google Play НЕОБХОДИМО НАЙТИ и установить WireGuard:
Далее сгенерировать QR код из файла конфига client.conf
:
qrencode -t ansiutf8 <client.conf
В приложении для Android нажать + далее Создать из QR-кода , подключиться:
Проверить (если есть например termux) наличие нужного адаптера (в моем случае tun0):
ip -cal tun0
Проверяем внешний IP:
curl https://ipinfo.io/ip
Подключение с клиента
Здесь все просто, можно запустить как службу:
systemctl перезапустить wg-quick @ client
Можно средствами wg
:
Потому что в офисной сетке нашей например UDP вообще зарезан. А вот OpenVPN по TCP на 443-й порт прекрасно работает.
Результат:
клиент wg-quick up [#] IP-ссылка добавить устройство защиты типа клиента [#] wg setconf client / dev / fd / 63 [#] IP-адрес добавить 10.0.0.2/24 dev client [#] IP link set mtu 65456 up dev client [#] wg установить клиент fwmark 51820 [#] ip -6 route add :: / 0 dev client table 51820 [#] ip -6 rule add not fwmark 51820 table 51820 [#] ip -6 правило добавить таблицу main suppress_prefixlength 0 [#] ip -4 route add 0.0.0.0/0 dev client table 51820 [#] ip -4 rule add not fwmark 51820 table 51820 [#] ip -4 правило добавления таблицы main suppress_prefixlength 0
Просмотр текущего состояния можно посмотреть командой wg
:
Источник: https://sysadmin.pm/wireguard/
У WireGuard есть одна большая проблема — если по какой-то причине отваливается сервер, то клиент всё равно пытается посылать трафик в несуществующий тоннель. Для мобилки это даже хорошо — мы уверены в том, что наше соединение защищено. Но если я использую WireGuard для подключения удалённой точки, то даже3если на этой точке есть интернет, но нет коннекта с WireGuard сервером (например, инстанс на DO попал в чёрный список), то эта точка остаётся без связи вообще до тех пор, пока не подключится снова к WireGuard или кто-то там далеко на точке не остановить wireguard клиента.
Вы пробовали делать настройки, чтобы default gateway поднимался только после установления соединения?