Назад | Перейти на главную страницу

Iptables настраивает виртуальную машину шлюза с 2 интерфейсами

У меня есть виртуальная машина, которая работает как шлюз от других виртуальных машин.

Конфигурация интерфейсов следующая

УБУНТУ:

  eth0:
    ip: 10.0.2.2
    netmask 255.255.255.255
    gateway 10.0.2.2

  eth1:
    ip: 192.168.1.1
    bcast: 192.168.1.255
    netmask: 255.255.255.0

Я хотел бы закрыть все порты и работать в Интернете только через шлюз.

Без правил он работает отлично, но с реальной конфигурацией брандмауэра iptables блокирует соединение.

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -A OUTPUT -o eth0 -p tcp --dport 80 -m state -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 80 -m state -j ACCEPT

iptables -A FORWARD -i eth1 -j ACCEPT 
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# ..... other rules for the others connected vm

Существует правило, разрешающее УСТАНОВЛЕННЫМ, СВЯЗАННЫМ соединениям проходить через?

В этом примере вы видите:

я цитирую:

Разрешение установленных сеансов

Мы можем разрешить установленным сессиям получать трафик:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT

The above rule has no spaces either side of the comma in ESTABLISHED,RELATED 

Если строка выше не работает, возможно, вы используете кастрированный VPS, провайдер которого не предоставил расширение, и в этом случае в качестве последнего средства можно использовать более низкую версию:

sudo iptables -A INPUT -m state --state УСТАНОВЛЕНО, СВЯЗАННО -j ПРИНЯТЬ

Источник: Ubuntu вики

РЕДАКТИРОВАТЬ:

Я вижу, что вы забыли разрешить DNS в своем наборе правил?