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

vlans и iptables (debian)

Я пытаюсь заставить свои VLAN и iptables работать правильно.

enp2s0f0 = WAN

enp2s0f1.4 = Сеть администратора

Я пытаюсь разрешить сети администратора подключаться к любому устройству, подключенному к VLAN, а другие VLAN могут подключаться только внутри своей VLAN.

Ниже мои текущие iptables:

# Generated by iptables-save v1.6.0 on Wed Jun 19 11:00:52 2019
*filter
:INPUT ACCEPT [145:12267]
:FORWARD ACCEPT [570:105932]
:OUTPUT ACCEPT [730:148524]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i enp2s0f0 -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 20,21,22,80,443,139,445,8181,4343,8883,60000:65535 -j ACCEPT
-A INPUT -i enp2s0f0 -p udp -m conntrack --ctstate NEW -m udp -m multiport --dports 123,137,138,5353,5678,1194 -j ACCEPT
-A INPUT -i enp2s0f0 -j DROP
-A FORWARD -i enp2s0f1.2 -o enp2s0f1.3 -j DROP
-A FORWARD -i enp2s0f1.2 -o enp2s0f1.4 -j DROP
-A FORWARD -i enp2s0f1.3 -o enp2s0f1.2 -j DROP
-A FORWARD -i enp2s0f1.3 -o enp2s0f1.4 -j DROP
COMMIT
# Completed on Wed Jun 19 11:00:52 2019
# Generated by iptables-save v1.6.0 on Wed Jun 19 11:00:52 2019
*raw
:PREROUTING ACCEPT [1367:271510]
:OUTPUT ACCEPT [736:149313]
-A PREROUTING -p tcp -m tcp --dport 21 -j CT --helper ftp
COMMIT

# Completed on Wed Jun 19 11:00:52 2019
# Generated by iptables-save v1.6.0 on Wed Jun 19 11:00:52 2019
*nat
:PREROUTING ACCEPT [56:3871]
:INPUT ACCEPT [40:2935]
:OUTPUT ACCEPT [45:14318]
:POSTROUTING ACCEPT [52:14303]
-A POSTROUTING -o enp2s0f0 -j MASQUERADE
COMMIT
# Completed on Wed Jun 19 11:00:52 2019

Ниже мои сетевые интерфейсы

# Include additional interface stanzas.
source-directory interfaces.d

# The loopback network interface
auto lo
iface lo inet loopback
pre-up iptables-restore < /etc/iptables.rules

# enp2s0f0 network interface
allow-hotplug enp2s0f0
iface enp2s0f0 inet dhcp

# server connections
# enp2s0f1 network interface
allow-hotplug enp2s0f1
iface enp2s0f1 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    network 10.0.0.0
    broadcoast 10.0.0.255
    up vconfig add enp2s0f1 2
    up vconfig add enp2s0f1 3
    up vconfig add enp2s0f1 4

# guest network
# enp2s0f1.2 network interface
auto enp2s0f1.2
iface enp2s0f1.2 inet static
    address 10.0.10.1
    netmask 255.255.255.0
    network 10.0.10.0
    broadcast 10.0.10.255

# home network
# enp2s0f1.3 network interface
auto  enp2s0f1.3
iface enp2s0f1.3 inet static
    address 10.0.20.1
    netmask 255.255.255.0
    network 10.0.20.0
    broadcast 10.0.20.255

# business network
# enp2s0f1.4 network interface
auto enp2s0f1.4
iface enp2s0f1.4 inet static
    address 10.0.30.1
    netmask 255.255.255.0
    network 10.0.30.0
    broadcast 10.0.30.255

Я также запускаю DNS-сервер, который подключен к enp2s0f1 через управляемый коммутатор. У меня dnsmasq автоматически устанавливает IP-адрес DNS-сервера через настройки dhcp. Все виртуальные локальные сети должны иметь возможность связываться со всем, что подключено к коммутатору.

Я попытался iptables -P FORWARD DROP но при этом теряется доступ ко всему, что связано с переключателем.

  1. Тебе не нужно up vconfig... заявления в enp2s0f1 раздел interfaces файл. Интерфейсы Vlan будут созданы при вызове соответствующих интерфейсов автоматически.

  2. Для лучшего контроля используйте ACCEPT/DROP all вместо DROP/ACCEPT all.

  3. В вашем случае правила будут такими:

# allow replies and port forwarding
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED,DNAT -j ACCEPT

# allow access to WAN and to DNS from all interfaces (if your debian host is gateway)
iptables -A FORWARD -i enp2s0f1+ -o enp4s0f0 -j ACCEPT
iptables -A FORWARD -i enp2s0f1+ -o enp4s0f1 -j ACCEPT

# allow access to admin vlan from all vlans
iptables -A FORWARD -o enp2s0f1.4 -j ACCEPT
iptables -A FORWARD -i enp2s0f1.4 -j ACCEPT

# log and drop other connections
iptables -A FORWARD -m conntrack --ctstate NEW,INVALID,UNTRACKED -j NFLOG
# you can just set FORWARD policy to DROP
iptables -A FORWARD -j DROP
  1. Для устранения неполадок проверьте счетчики правил и используйте tcpdump.