- Как понять, что именно “смешивается” (хост и гостевая)
- Правильная модель: “раздать” гостевой только локальную часть
- Шаг 1. Выясните имена интерфейсов и подсети
- Шаг 2. Настройте, чтобы “default route” была только у интернет-интерфейса
- Шаг 3. Настройте виртуальную машину: ей нужен только интерфейс локальной сети
- Шаг 4. Убедитесь, что гостевой не получает доступ к WAN через хост
- Куда смотреть в NetworkManager: чтобы не было “двух шлюзов”
- Мини-шпаргалка по маршрутизации: “одна сеть - один шлюз”
- Как не запутаться при настройке двух сегментов (чек-лист)
- Про “две карты интернет” (когда обе с интернетом, но нужно разделение)
- Итоговая схема “как настроить” под вашу цель
Если на одном компьютере две сетевые карты, то обычно всё “само” начинает смешиваться: и локалка, и интернет оказываются доступны там, где вы их не планировали. Особенно часто это всплывает с виртуальной машиной: в гостевой ОС появляется интернет, хотя вам нужно, чтобы гостевая шла только в локальную сеть.
Ниже - рабочая схема настройки для Linux Mint (и вообще для Linux), когда:
- хост ходит в интернет через одну карта
- локальная сеть доступна через вторую карту
- виртуальная машина получает доступ только в локалку (интернет “режется” или не прокидывается)
Как понять, что именно “смешивается” (хост и гостевая)
Есть два разных случая:
| Ситуация | Где появляется интернет | Почему так происходит |
|---|---|---|
| Интернет появляется в гостевой | В виртуальной машине | Виртуалке дали интерфейс, который имеет маршрут к WAN, или включили NAT/проброс так, что трафик уходит наружу |
| Интернет доступен на хосте и в локалке одновременно | На хосте | Маршруты/правила позволяют ходить по умолчанию в “не ту” сеть |
В вашем кейсе из конкурентов с форума типичный вариант: в хосте остаётся интернет, в гостевой подключили только локальную карту/сегмент, и интернет пропадает. Это как раз правильное направление.
Правильная модель: “раздать” гостевой только локальную часть
Самый простой и надёжный путь такой:
- На хосте оставляете интернет через одну сетевой карта.
- В виртуальной машине используете только вторую сетевой карту (или только локальный виртуальный bridge, который соответствует локальной сети).
- В NM (NetworkManager) на хосте не держите “локальную” карту так, чтобы через неё был дефолтный маршрут наружу.
Эта логика хорошо совпадает с решением из примера: “инет на хосте, локалка в гостевой”.
Шаг 1. Выясните имена интерфейсов и подсети
На хосте выполните:
ip -br a
ip route
Запомните:
- имя интерфейса в интернет-сегменте (например eth0, enp3s0)
- имя интерфейса в локальном сегменте (например eth1, enp5s0)
- какая строка default сейчас стоит (это ключ к тому, куда уходит трафик по умолчанию)
Шаг 2. Настройте, чтобы “default route” была только у интернет-интерфейса
Если у локальной сети тоже появляется default, то гости часто получают интернет “по инерции”.
Проверьте:
ip route | sed -n '1,20p'
Обычно должно быть что-то вроде:
- default via <шлюз-интернета> dev <интернет-интерфейс>
Если видите второй default через локальный интерфейс - его надо убрать или сделать так, чтобы локальный интерфейс не принимал дефолт.
Вариант через NetworkManager (часто самый удобный)
Если у вас Mint с NetworkManager, можно задать “маршруты” политикой интерфейса (через GUI или параметры соединения). Идея такая:
- интернет-соединение - “есть gateway”
- локальное соединение - “gateway не использовать” (или “метрика выше”, но лучше без gateway)
Если GUI не даёт быстро привести к нужному виду, проще временно убрать default вручную, чтобы подтвердить гипотезу.
Временная проверка (без правок конфигов)
sudo ip route del default dev <локальный_интерфейс>
Если после этого гостевая/локальная часть перестала ходить наружу - вы на правильном пути. Потом закрепите это настройкой NM.
Шаг 3. Настройте виртуальную машину: ей нужен только интерфейс локальной сети
Зависит от типа сети в виртуализации:
Если у вас bridge/NAT/virtual network
Нужно, чтобы гостевая была в такой виртуальной сети, которая соответствует локальной сети, но не имеет маршрута наружу.
На практике:
- для гостевой выбираете “связь с локальной частью” (bridge, который привязан к локальному интерфейсу хоста)
- не выбираете bridge/режим, который использует интернет-интерфейс хоста как NAT
Если гостевой интерфейс подключён к тому же мосту, что и интернет
Тогда интернет в гостевой появится почти гарантированно.
На уровне здравого смысла: гостевой сетевой адаптер должен “видеть” локальный сегмент, а не WAN.
Шаг 4. Убедитесь, что гостевой не получает доступ к WAN через хост
Дополнительно проверьте, что хост реально не маршрутизирует локальную сеть в интернет.
На хосте посмотрите NAT/iptables (если есть):
sudo iptables -t nat -S
sudo iptables -S
Если включено маскирование для локальной сети наружу - интернет в гостевой вернётся даже при правильном подключении интерфейса.
В таком случае нужен один из подходов:
- убрать NAT между локальной сеть и WAN
- или строго ограничить правилами, чтобы гостевая не имела egress наружу
Куда смотреть в NetworkManager: чтобы не было “двух шлюзов”
Самое частое: обе сетевые карта получают шлюз, и линукс пытается решить, что “главное”. Тогда маршруты плавают.
Проверьте метрики и шлюз:
ip route
nmcli -p device status
nmcli -p connection show
Цель простая:
- дефолт должен вести в интернет-интерфейс
- локальный интерфейс должен участвовать только в локальном обмене
Мини-шпаргалка по маршрутизации: “одна сеть - один шлюз”
Вот базовая логика (схема маршрутов):
| Интерфейс | Назначение | Нужен default route? | Что должен видеть |
|---|---|---|---|
| Интернет-интерфейс | доступ наружу | да | внешний интернет |
| Локальный интерфейс | работа внутри локальной сеть | нет | устройства локальной подсети |
Если локальный интерфейс получает default - вы получаете “интернет везде”.
Как не запутаться при настройке двух сегментов (чек-лист)
Перед финальной проверкой сделайте по пунктам:
| Проверка | Команда/действие | Что должно быть |
|---|---|---|
| На хосте есть только один default | ip route |
default только через интернет-интерфейс |
| Локальная сеть отвечает | ping по локальным IP |
ответы идут в пределах локалки |
| В гостевой видна локалка | ping на хост/устройства локалки | успех |
| В гостевой нет интернета | ping/apt на внешний ресурс | таймаут/нет маршрута |
| NAT для локалки наружу отключен (если вы его не планировали) | iptables -t nat -S |
нет MASQUERADE для локального интерфейса |
Про “две карты интернет” (когда обе с интернетом, но нужно разделение)
Иногда интерфейсы оба “живые” и у каждого свой шлюз в разные подсети. Тогда задача решается маршрутизацией и правилами:
- обычный трафик наружу - через один интерфейс
- трафик к нужным подсетям - через второй
- остальное - по вашему policy
В Ubuntu/Debian-стиле это делается ip rule и отдельными таблицами маршрутизации, но в Linux Mint на практике чаще проще добиться нужного поведения через NetworkManager: убрать gateway у локального интерфейса и правильно разнести bridges для виртуальной машины.
Итоговая схема “как настроить” под вашу цель
- На хосте оставляете “default route” только для интернет-интерфейса.
- Локальную сеть подключаете так, чтобы у неё не было gateway/дефолта.
- В виртуальной машине используете только локальный сегмент (bridge/адаптер привязан к локальному интерфейсу хоста).
- Если всё равно “протекает” наружу - проверяете NAT/iptables и убираете маршрут/маскарадинг для локальной сеть.
Так вы получаете чистое разделение: хост - в интернет, виртуальная машина - только в локальную сеть, без “самопроизвольного” выхода наружу.