Networks
Как отключить виртуальную машину от внешней сети
bash
################################### INPUT ##########################################
# открываем ssh
iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT
# возможно не обязательная команда
iptables -I INPUT -i docker0 -j ACCEPT
# открывает интерфейс локального хоста. Так мы сможем достучаться до контейнеров из локальной сети удаленной машины
iptables -I INPUT -i lo -j ACCEPT
# открываем доступ к интерфейсу самих контейнеров. Название интерфейса можно посмотреть в ifconfig. Возможно это будет docker0. Чтобы точно узнать, нужно сравнить айпи из ifconfig с docker inspect в gateway
iptables -I INPUT -i br-ade02ab3f7cd -j ACCEPT
# добавляем диапазоны для подключения с VPN
iptables -I INPUT -s 10.0.0.0/8 -i eth0 -j ACCEPT
iptables -I INPUT -s 172.0.0.0/8 -i eth0 -j ACCEPT
iptables -I INPUT -s 192.0.0.0/8 -i eth0 -j ACCEPT
# выключаем все остальные соединения
iptables -P INPUT DROP
################################### OUTPUT ##########################################
# открываем ssh
iptables -I OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
# возможно не обязательная команда
iptables -I OUTPUT -o docker0 -j ACCEPT
# открывает интерфейс локального хоста.
iptables -I OUTPUT -o lo -j ACCEPT
# открываем доступ к интерфейсу самих контейнеров, как в INPUT
iptables -I OUTPUT -o br-ade02ab3f7cd -j ACCEPT
# выключаем все остальные соединения
# добавляем диапазоны для подключения с VPN
iptables -I OUTPUT -d 10.0.0.0/8 -o eth0 -j ACCEPT
iptables -I OUTPUT -d 172.0.0.0/8 -o eth0 -j ACCEPT
iptables -I OUTPUT -d 192.0.0.0/8 -o eth0 -j ACCEPT
iptables -P OUTPUT DROP
################################### DOCKER ##########################################
# Важно, что настройки DOCKER и DOCKER-ISOLATION-STAGE-X - нельзя изменять, поскольку они управляются самим докером,
# а так же, изменение их может повредить сеть докера
# поэтому изменения нужно проводить только в DOCKER-USER
# это специальные правила для изменения пользователем
# у DOCKER-USER есть строка с RETURN, ее нужно удалить
# обычно она на первой строчке в chain DOCKER-USER
# замените 1 на номер строчки, на котором находится правило с RETURN
iptables -D DOCKER-USER 1
# добавляем диапазоны для подключения с VPN
iptables -I DOCKER-USER -s 10.0.0.0/8 -i eth0 -j ACCEPT
iptables -I DOCKER-USER -s 172.0.0.0/8 -i eth0 -j ACCEPT
iptables -I DOCKER-USER -s 192.0.0.0/8 -i eth0 -j ACCEPT
# выключаем доступ к интернету для контейнеров. Это правило будет работать самым последним, чтобы не дропнуть другие коннекты
iptables -A DOCKER-USER -i eth0 -j DROP