LINUX.ORG.RU

Настройка маршрутов wireguard клиента для выхода через шлюз

 ,


0

2

На волне роста популярности молодежного wireguard пробую его настроить на удаленном шлюзе для выхода через него как через openvpn. Топология звезда (пока один клиент, но будут другие). В итоге я хочу выходить через шлюз в интернет и взаимодействовать с другими клиентами подсети 10.88.0.0/24.

Конфиг шлюза

[Interface]
Address = 10.88.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = приватный-ключ-сервера

[Peer]
PublicKey = публичный-ключ-клиента
AllowedIPs = 10.88.0.3/32

Конфиг клиента

[Interface]
Address = 10.88.0.3/32
PrivateKey = приватный-ключ-клиента
DNS = 8.8.8.8,1.1.1.1

[Peer]
PublicKey = публичный-ключ-сервера
AllowedIPs = 0.0.0.0/0
Endpoint = внешний-айпи-сервера:51820

В nftables на сервере

chain prerouting {
  type nat hook prerouting priority 0;
}
chain postrouting {
  type nat hook postrouting priority srcnat; policy accept;
  iifname "wg0" oifname "ens3" ip saddr 10.88.0.0/24 masquerade
}

ens3 - основной интерфейс шлюза.

Форвардинг на сервере

cat /proc/sys/net/ipv4/ip_forward
1

sysctl -a | grep ipv4.conf.all.forw
net.ipv4.conf.all.forwarding = 1

Стандартные маршруты клиента после подключения к шлюзу

default via 192.168.7.1 dev enp1s0 proto dhcp metric 20100 
ип-сети-провайдера dev enp1s0 scope link metric 1000 
192.168.7.0/24 dev enp1s0 proto kernel scope link src 192.168.7.9 metric 100 

Маршруты клиента с моими правками (взял тоже, что пушилось от openvpn шлюза, но изменил интерфейс и адреса)

default via 10.88.0.1 dev wg0 proto static metric 50 
default via 192.168.7.1 dev enp1s0 proto dhcp metric 20100 
10.88.0.0/24 dev wg0 proto kernel scope link src 10.88.0.3 metric 50 
внешний-айпи-сервера via 192.168.7.1 dev enp1s0 proto static metric 100 
ип-сети-провайдера dev enp1s0 scope link metric 1000 
192.168.7.0/24 dev enp1s0 proto kernel scope link src 192.168.7.9 metric 100

Стандартные маршруты на сервере

default via шлюз-сервера dev ens3 proto dhcp src внешний-айпи-сервера metric 100 
10.88.0.0/24 dev wg0 proto kernel scope link src 10.88.0.1 
подсеть-сервера dev ens3 proto kernel scope link src внешний-айпи-сервера 
ип-провайдера via шлюз-сервера dev ens3 proto dhcp src внешний-айпи-сервера metric 100

Сервер по внутреннему адресу 10.88.0.1 пингуется. Все, что за пределами внутренней сети не пингуется. Трасировка доходит только до шлюза, а дальше звездочки до упора. В варианте с моими правками маршрутов сервер пингуется, но трасса не уходит дальше локалхоста. По wg на шлюзе траффик идет, но, видимо, только внутренний до шлюза.

Что поправить чтобы заработало?

Куда все сетевые специалисты делись? Неужто они все под анонимусами, а я их заблокировал в теме xD

kardjoe
() автор топика
Последнее исправление: kardjoe (всего исправлений: 1)

попробуй у клиента конфиг поменять на Address = 10.88.0.3/24

alclark
()

Может маску одинаковую поставить?сервер и клиент

ishagel
()

nftables на сервере разрешает forwarding?

table inet filter {
chain forward {
        type filter hook forward priority 0; policy drop;
        ct state { related, established } accept
        ct state invalid drop
        iifname "wg0" accept
}
}
kmeaw ★★★
()
Последнее исправление: kmeaw (всего исправлений: 1)

Вряд ли это поможет, но что будет, если на клиенте в default dev wg0 убрать via 10.88.0.1?

Что показывает tcpdump -nvi wg0 host 1.1.1.1 на сервере, если на клиенте запустить ping 1.1.1.1? А tcpdump -nvi ens3 host 1.1.1.1 ?

Есть ли что-нибудь нестандартное в ip rule на клиенте и/или сервере?

kmeaw ★★★
()
Ответ на: комментарий от kmeaw

Я завтра сброшу всю диаг инфу. На этом компе нет ключа от ssh.

kardjoe
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.