У меня есть хост-машина, на которой работает Virtualbox, и одна гостевая виртуальная машина. Допустим, у хоста есть интерфейс br0 с IP 1.2.3.4
и гостевой иметь eth0 с IP 1.2.3.5
.
Гость использует 1.2.3.5
в качестве общедоступного IP (мостовой интерфейс, через br0 на хосте). Я хочу, чтобы у него был доступ Интернет, но хотите полностью заблокировать все попытки доступа к нему извне. Он ничего не обслуживает, он может быть полностью заблокирован вне Интернета, если не тот факт, что ему нужно время от времени загружать что-то или два .. .
Как сделать это на хосте, не влияя на хост? Не на гостевой, а на хосте . Я хочу, чтобы хост был доступен из внешнего мира, из Интернета. Но гость должен только получать пакеты, связанные с подключениями, установленными гостем. Никаких попыток входа в систему по ssh, ничего не инициировано извне (я знаю, я могу использовать другие инструменты для защиты гостя, например sshd_config на гостевой системе, и я использую их, но я хочу также использовать iptables).
Я попытался сначала заблокировать все, что связано с гостем, а затем проделал свой путь до исключения СВЯЗАННЫХ
и УСТАНОВЛЕННЫХ
, но даже если я добавлю правила DROP с 1.2.3.5 в качестве источника и назначения для всех цепочек на хосте ( INPUT
, FORWARD
, OUTPUT
), Я все еще могу пинговать 1.2.3.5
из внешнего мира. Что я делаю неправильно? Да, я добавил эти правила в начало цепочек ( -I
). iptables ведут себя по-разному, когда я делаю это на хосте, а трафик предназначен для виртуальной машины / гостя? Или это из-за того, что я использую мост br0?
Так что я даже не могу отбросить все, что приходит с и на 1.2.3.5
(IP-адрес гостевой виртуальной машины), хотя tcpdump на хосте показывает 1.2.3.5
в качестве источника и назначения, когда я запускаю его для перехвата пакетов ICMP, пока я пингую 1.2.3.5 из внешнего мира.
Хотя вы можете управлять трафиком, проходящим через мост, я не уверен, что вы можете отслеживать соединения (СВЯЗАННЫЕ
/УСТАНОВЛЕННЫЕ
).
Местом для этого будет цепочка FORWARD
.
Что дает вам sysctl -a|grep -E "bridge-nf-call-ip.*tables"
? Если вы установите, например, net.bridge.bridge-nf-call-iptables
на 1
и выполните iptables -P FORWARD DROP
, гость должен больше нет интернета. Вы можете взять это оттуда и посмотреть, сможете ли вы больше.