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

Правила iptables, пересылка между двумя интерфейсами

У меня есть некоторые трудности с настройкой брандмауэра сервера ubuntu ... моя ситуация такова:

eth0 -> интернет

eth1 -> lan1

eth2 -> lan2

Я хочу, чтобы клиенты из lan1 не могли общаться с клиентами из lan2, за исключением некоторых конкретных сервисов. Например. Я хочу, чтобы клиенты в lan1 могли подключаться по ssh к клиенту в lan2, но только это. Любое другое общение запрещено.

Итак, я добавляю эти правила в iptables:

#Block all traffic between lan, but permit traffic to internet
iptables -I FORWARD -i eth1 -o ! eth0 -j DROP
iptables -I FORWARD -i eth2 -o ! eth0 -j DROP
# Accept ssh traffic from lan1 to client 192.168.20.2 in lan2
iptables -A FORWARD -i eth1 -o eth2 -p tcp --dport 22 -d 192.168.20.2 -j ACCEPT

Это не сработало. Выполнение iptables -L FORWARD -v я вижу:

    Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    33   144 DROP       all  --  eth1 !eth0   anywhere             anywhere
    0     0 DROP       all  --  eth2 !eth0   anywhere             anywhere
23630   20M ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  eth1   any     anywhere             anywhere
  175  9957 ACCEPT     all  --  eth1 any     anywhere             anywhere
  107  6420 ACCEPT     all  --  eth2 any     anywhere             anywhere
    0     0 ACCEPT     all  --  pptp+  any     anywhere             anywhere
    0     0 ACCEPT     all  --  tun+   any     anywhere             anywhere
    0     0 ACCEPT     tcp  --  eth1 eth2  anywhere             server2.lan tcp dpt:ssh

Все пакеты отбрасываются, и количество пакетов для последнего правила равно 0 ...

Как мне изменить мою конфигурацию? Спасибо.

С уважением, Марко

Ваши DROP-запросы находятся в начале цепочки (и будут обработаны в первую очередь). Вы хотите поместить DROP после правила, которое разрешает доступ по SSH для использования правила SSH.

Примерно так должно работать:

#Accept ssh traffic from lan1 to client 192.168.20.2 in lan2
iptables -A FORWARD -i eth1 -o eth2 -p tcp --dport 22 -d 192.168.20.2 -j ACCEPT

#Block all traffic between lan, but permit traffic to internet
iptables -A FORWARD -i eth1 -o ! eth0 -j DROP
iptables -A FORWARD -i eth2 -o ! eth0 -j DROP

(используйте -A, чтобы добавить эти правила в конец цепочки)