Я пытаюсь заставить свои 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
но при этом теряется доступ ко всему, что связано с переключателем.
Тебе не нужно up vconfig...
заявления в enp2s0f1
раздел interfaces
файл. Интерфейсы Vlan будут созданы при вызове соответствующих интерфейсов автоматически.
Для лучшего контроля используйте ACCEPT/DROP all
вместо DROP
/ACCEPT all
.
В вашем случае правила будут такими:
# 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
tcpdump
.