ARP Proxy второй IP-адрес VPS для маршрутизации через Wireguard

Я настроил прокси-сервер ARP на моем VPS. С помощью этой настройки я могу маршрутизировать входящий трафик на второй IP-адрес моего VPS через WireGuard. Это должно позволить моему Raspberry Pi дома использовать второй общедоступный IP-адрес.

Я получил такую ​​работу. Входящие эхо-запросы пересылаются через туннель WireGuard на Pi. Но затем Pi пытается ответить на пинг через eth0.Есть ли способ исправить это, чтобы он отправлял ответные пакеты также через интерфейс WireGuard?

Чтобы показать эту проблему (оба на Raspberry Pi)

Интерфейс WireGuard:

    # tcpdump -i wg_pub
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on wg_pub, link-type RAW (Raw IP), capture size 262144 bytes
    01:35:02.796522 IP <Public ip of ping PC> > <Second VPS IP>: ICMP echo request, id 14, seq 1, length 64
    01:35:03.795359 IP <Public ip of ping PC> > <Second VPS IP>: ICMP echo request, id 14, seq 2, length 64
    01:35:04.810613 IP <Public ip of ping PC> > <Second VPS IP>: ICMP echo request, id 14, seq 3, length 64

Интерфейс Ethernet:

    # tcpdump -i eth0 icmp
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    01:37:11.477589 IP <Second VPS IP> > <Public ip of ping PC>: ICMP echo reply, id 14, seq 128, length 64
    01:37:12.491045 IP <Second VPS IP> > <Public ip of ping PC>: ICMP echo reply, id 14, seq 129, length 64
    01:37:13.505965 IP <Second VPS IP> > <Public ip of ping PC>: ICMP echo reply, id 14, seq 130, length 64

I хотел бы предотвратить использование частной подсети в туннеле WireGuard.

Один из способов, которым я добился этой работы, заключался в добавлении статического маршрута

ip route add <First VPS IP>/32 dev eth0

и последующей перезаписи маршрута по умолчанию

ip route add 0.0.0.0/0 dev wg_pub

. Но это имеет недостаток, заключающийся в маршрутизации всего Интернет-трафика через VPS.

0
задан 21 July 2021 в 19:13
1 ответ

Я думаю, вы сможете сделать это с помощью маршрутизации политики. Установите маршрут по умолчанию для новой таблицы маршрутизации (123, например), чтобы использовать ваш интерфейс WireGuard (wg_pub):

ip route add default dev wg_pub table 123

А затем добавьте правило политики для использования этой новой таблицы для всех пакетов, источником которых является IP вашего второго VPS (скажем, это 192. 0.2.2, например):

ip rule add from 192.0.2.2 table 123 priority 456

Приоритет (456) может быть любым, важно только, если у вас есть несколько подходящих правил (список через ip rule list).

0
ответ дан 28 July 2021 в 14:34

Теги

Похожие вопросы