Virt-manager Трафик виртуальной машины Windows 11 не может быть преобразован через NAT из-за прозрачного прокси-сервера Linux

Ответить
Anonymous
 Virt-manager Трафик виртуальной машины Windows 11 не может быть преобразован через NAT из-за прозрачного прокси-сервера

Сообщение Anonymous »

Я использую виртуальную машину Windows 11 в своей хост-системе Debian, используя

Код: Выделить всё

virt-manager
(QEMU/KVM)[/b].
Мой хост Debian использует прозрачный прокси, настроенный с помощью Xray и

Код: Выделить всё

nftables
[/b] для всего исходящего трафика. Виртуальная машина подключена с использованием сети NAT по умолчанию, предоставляемой libvirt.
Проблема, с которой я столкнулся, заключается в том, что сетевой трафик виртуальной машины, похоже, не может быть должным образом преобразован в NAT и/или маршрутизирован через настройку прозрачного прокси-сервера хоста. На основании предварительной оценки (от ИИ) правила прозрачного прокси могут мешать механизму NAT по умолчанию для пакетов виртуальной машины.
Мне нужен способ обеспечить трафик виртуальной машины:
  • Правильно NAT с помощью libvirt (или аналогичного механизма).
  • Затем успешно перенаправляется и обрабатывается прозрачным прокси-сервером Xray перед тем, как покинуть хост.
Правильно ли мое предположение, что причиной является прозрачный прокси-сервер, и если да, то как я могу его изменить мои nftables или маршрутизация для размещения трафика виртуальной машины? Или проблема в чем-то другом (например, связана с libvirt NAT и его взаимодействием с перехватчиками предварительной маршрутизации)?
Файлы конфигурации прозрачного прокси
Вот соответствующие файлы для настройки моего прозрачного прокси:

[code]transparent_start.sh[/code]

Код: Выделить всё

#!/usr/bin/bash

# Stop previous instance first
/usr/local/etc/xray/transparent_stop.sh

# Set policy route v4
/usr/sbin/ip rule add fwmark 1 table 100
/usr/sbin/ip route add local 0.0.0.0/0 dev lo table 100

# Set policy route v6
/usr/sbin/ip -6 rule add fwmark 1 table 106
/usr/sbin/ip -6 route add local ::/0 dev lo table 106

# Set nftables rules
/usr/sbin/nft -f /usr/local/etc/xray/transparent_rules.nft

[code]transparent_stop.sh[/code]

Код: Выделить всё

#!/usr/bin/bash

# Remove policy route v4
/usr/sbin/ip rule del fwmark 1 table 100
/usr/sbin/ip route del local 0.0.0.0/0 dev lo table 100

# Remove policy route v6
/usr/sbin/ip -6 rule del fwmark 1 table 106
/usr/sbin/ip -6 route del local ::/0 dev lo table 106

# Destroy nftables table
/usr/sbin/nft destroy table inet xray

[code]transparent_rules.nft[/code]

Код: Выделить всё

#!/usr/sbin/nft -f

add table inet xray {
chain prerouting {
type filter hook prerouting priority filter; policy accept;
# Exclusions
ip daddr { 127.0.0.0/8, 224.0.0.0/4, 255.255.255.255 } return
meta l4proto tcp ip daddr 192.168.0.0/16 return
ip daddr 192.168.0.0/16 udp dport != 53 return
ip6 daddr { ::1, fe80::/64 } return
meta l4proto tcp ip6 daddr 2409:8a55:612:cb0::/64 return
ip6 daddr 2409:8a55:612:cb0::/64 udp dport != 53 return

# Skip marked packets
meta mark 0x000000ff return

# TPROXY redirection to Xray on port 23939 (IPv4 and IPv6)
meta l4proto { tcp, udp } meta mark set 0x00000001 tproxy ip to 127.0.0.1:23939 accept
meta l4proto { tcp, udp } meta mark set 0x00000001 tproxy ip6 to [::1]:23939 accept
}

chain output {
type route hook output priority filter; policy accept;
# Exclusions
ip daddr { 127.0.0.0/8, 224.0.0.0/4, 255.255.255.255 } return
meta l4proto tcp ip daddr 192.168.0.0/16 return
ip daddr 192.168.0.0/16 udp dport != 53 return
ip6 daddr { ::1, fe80::/64 } return
meta l4proto tcp ip6 daddr 2409:8a55:612:cb0::/64 return
ip6 daddr 2409:8a55:612:cb0::/64 udp dport != 53 return

# Skip marked packets
meta mark 0x000000ff return

# Mark local traffic that should be proxied
meta l4proto { tcp, udp } meta mark set 0x00000001 accept
}

chain divert {
type filter hook prerouting priority mangle; policy accept;
# Mark packets for TPROXY based on socket transparent option
meta l4proto tcp socket transparent 1 meta mark set 0x00000001 accept
}
}
Проблема, скорее всего, связана с тем, что NAT libvirt (который обычно использует перехватчик POSTROUTING для SNAT) взаимодействует с правилами предварительной маршрутизации TPROXY/перенаправления.
Любые рекомендации о том, как правильно интегрировать NAT libvirt с настройкой прозрачного прокси-сервера TPROXY, будут очень признательны.>

Подробнее здесь: https://stackoverflow.com/questions/798 ... rent-proxy
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»