Подскажите, куда копать.
Создано 3 виртуалки: Wireguard Server
, Client A
и Client B
.
Wireguard Server:
[root@nixos:~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:56:00:xx:xx brd ff:ff:ff:ff:ff:ff
inet6 2a01:4f8:xx:xx::5/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:xx:xx/64 scope link
valid_lft forever preferred_lft forever
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 1
link/none
inet6 fc00::5/128 scope global
valid_lft forever preferred_lft forever
[root@nixos:~]# ip -6 route
2a01:4f8:xx:xx::/64 dev enp0s3 proto kernel metric 256 pref medium
fc00::5 dev wg0 proto kernel metric 256 pref medium
fe80::/64 dev enp0s3 proto kernel metric 256 pref medium
default via fe80::1 dev enp0s3 metric 1024 pref medium
[root@nixos:~]# wg
interface: wg0
public key: AAA
private key: (hidden)
listening port: 50005
peer: BBB
allowed ips: fc00::10/128
peer: CCC
allowed ips: fc00::15/128
[root@nixos:~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:81:xx:xx brd ff:ff:ff:ff:ff:ff
inet6 2a01:4f8:xx:xx::10/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:xx:xx/64 scope link
valid_lft forever preferred_lft forever
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 1
link/none
inet6 fc00::10/128 scope global
valid_lft forever preferred_lft forever
[root@nixos:~]# ip -6 route
2a01:4f8:xx:xx::/64 dev enp0s3 proto kernel metric 256 pref medium
fc00::10 dev wg0 proto kernel metric 256 pref medium
fe80::/64 dev enp0s3 proto kernel metric 256 pref medium
default dev wg0 metric 1024 pref medium
[root@nixos:~]# wg
interface: wg0
public key: BBB
private key: (hidden)
listening port: 50010
peer: AAA
endpoint: [2a01:4f8:xx:xx::5]:50005
allowed ips: ::/0
transfer: 0 B received, 5.78 KiB sent
Client B:
[root@nixos:~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:b1:xx:xx brd ff:ff:ff:ff:ff:ff
inet6 2a01:4f8:xx:xx::15/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:xx:xx/64 scope link
valid_lft forever preferred_lft forever
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 1
link/none
inet6 fc00::15/128 scope global
valid_lft forever preferred_lft forever
[root@nixos:~]# ip -6 route
2a01:4f8:xx:xx::/64 dev enp0s3 proto kernel metric 256 pref medium
fc00::15 dev wg0 proto kernel metric 256 pref medium
fe80::/64 dev enp0s3 proto kernel metric 256 pref medium
default dev wg0 metric 1024 pref medium
[root@nixos:~]# wg
interface: wg0
public key: CCC
private key: (hidden)
listening port: 50015
peer: AAA
endpoint: [2a01:4f8:xx:xx::5]:50005
allowed ips: ::/0
transfer: 0 B received, 2.89 KiB sent
Привила nftables у всех идентичные.
table ip6 filter {
chain input {
type filter hook input priority 0;
icmpv6 type { echo-reply, echo-request, nd-neighbor-solicit, nd-neighbor-advert} nftrace set 1 accept
tcp dport ssh nftrace set 1 accept
tcp sport ssh nftrace set 1 accept
nftrace set 1 drop
}
chain output {
type filter hook output priority 0;
icmpv6 type { echo-reply, nd-neighbor-advert, echo-request, nd-neighbor-solicit} nftrace set 1 accept
tcp sport ssh nftrace set 1 accept
tcp dport ssh nftrace set 1 accept
nftrace set 1 drop
}
chain forward {
type filter hook forward priority 0;
nftrace set 1 drop
}
}
"net.ipv6.conf.all.forwarding" = 1
По IPv6 все 3 виртуалки пингуются между собой и подключаются по SSH.
Но вот заставить Client A
и Client B
пинговать друг друга и сервер по fc00::
никак не получается.
Оба клиента пытаются подключиться к серверу, что видно в выхлопе wg
, но пакеты не уходят за пределы виртуалок.
Нужно правильно прописать роуты, но я уже запутался.
Если я правильно понимаю, то с помощью ip -6 route add default dev wg
пакеты направляем в wireguard интерфейс (wg0), где пакеты шифруются.
Дальше нужно отправить зашифрованные пакеты на wireguard server. Т.е. нужен роут, который будет направлять пакеты из wg0 в 2a01:4f8:xx:xx::5 который у нас ходит в интернет через шлюз fe80::1?.
Максимум, чего получилось добиться - получение пакетов.
Т.е. ping -c 1 fc00::10
с fc00::5
приводил к тому, что пакеты icmp приходили на fc00::10
, но icmp reply не было. Только входящий icmp request.
Что опять же говорит о том, что не хватает роутов. Верно?
В общем прошу объяснить. Заранее спасибо.