Добрый день.
Имеется сервер1 на арче с интерфейсами:
enp1s0 (WAN, 192.168.100.3)
enp2s0 (LAN, 10.128.10.0/24)
wg-client (10.0.0.3, подключен к серверу2,10.0.0.1 на VPS)
Настроен роутинг всего трафика через wg-client: «default via 10.0.0.1 dev wg-client», а также «AllowedIPs = 0.0.0.0/0» в конфиге wireguard. Форвардинг ipv4, разумеется, включен.
iptables:
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i enp2s0 -o enp1s0 -j ACCEPT
-A FORWARD -i enp2s0 -o wg-client -j ACCEPT
-A POSTROUTING -o enp1s0 -j MASQUERADE
-A POSTROUTING -o wg-client -j MASQUERADE
ip route:
default via 10.0.0.1 dev wg-client
10.0.0.0/24 dev wg-client scope link src 10.0.0.3
10.128.10.0/24 dev enp2s0 proto kernel scope link src 10.128.10.1
[vps wan ip] via 192.168.100.1 dev enp1s0 proto static onlink
192.168.100.0/24 dev enp1s0 proto dhcp scope link src 192.168.100.3 metric 202
192.168.100.1 dev enp1s0 proto dhcp scope link src 192.168.100.3 metric 1024
ip address:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 40:62:31:01:70:77 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.3/24 brd 192.168.100.255 scope global dynamic enp1s0
valid_lft 7532sec preferred_lft 5732sec
inet6 fe80::2f5f:c023:d7a4:b157/64 scope link
valid_lft forever preferred_lft forever
inet6 fe80::4262:31ff:fe01:7077/64 scope link
valid_lft forever preferred_lft forever
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 40:62:31:01:70:78 brd ff:ff:ff:ff:ff:ff
inet 10.128.10.1/24 brd 10.128.10.255 scope global enp2s0
valid_lft forever preferred_lft forever
inet6 fe80::89c6:fa37:e3e1:1850/64 scope link
valid_lft forever preferred_lft forever
4: wlp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 30:3a:64:b9:43:30 brd ff:ff:ff:ff:ff:ff
5: wg-client: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1360 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.0.0.3/32 scope global wg-client
valid_lft forever preferred_lft forever
wireguard на VPS:
[Interface]
Address = 10.0.0.1/24
MTU = 1360
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
ListenPort = 51820
PrivateKey = privatekey
[Peer]
PublicKey = publickey
AllowedIPs = 10.0.0.3/32
wireguard на сервере1:
[Interface]
PrivateKey = privatekey
Address = 10.0.0.3/32
MTU = 1360
PostUp = ip route add default via 10.0.0.1 dev wg-client
[Peer]
PublicKey = publickey
AllowedIPs = 0.0.0.0/0
Endpoint = [vps wan ip]:51820
PersistentKeepalive = 25
Всё замечательно работает, кроме одной досадной мелочи - сервер1 недоступен из LAN по адресу 10.0.0.3.
При этом он доступен по адресам LAN 10.128.10.1 и WAN 192.168.100.3. И даже 10.0.0.1 пингуется из локалки.
До wireguard таким же образом был настроен softether, и его интерфейс был доступен.
Объясню для чего это вообще нужно — чтобы можно было по одному адресу (10.0.0.3) получить доступ к ресурсам сервера1 и из LAN, и из любого другого места, подключившись по wireguard к серверу2.