~ список маршрутов

~ список маршрутов

За последний месяц я не могу решить эту проблему, я создаю разные правила iptables, включаю и отключаю модули в ядре, но результаты те же, и даже больше пакетов отбрасываются iptables. Это приводит к тому, что пользователи получают задержку в 3/5 секунд при попытке доступа к разным общим папкам с 192.168.1.0/24 по 192.168.3.0/28 на виртуальной машине.

Я вижу это в логах:

14 фев 13:53:02 ns129115 ядро: [12426815.202643] IPTables-OUTPUT-Dropped: IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.231 LEN=104 TOS=0x10 PREC=0x00 TTL=64 ID=61932 DF PROTO=TCP SPT=22115 DPT=49225 WINDOW=384 RES=0x00 ACK PSH URGP=0
14 фев 13:53:02 ns129115 ядро: [12426815.393379] IPTables-OUTPUT-Dropped: IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.231 LEN=40 TOS=0x10 PREC=0x00 TTL=64 ID=61933 DF PROTO=TCP SPT=22115 DPT=49225 WINDOW=384 RES=0x00 ACK URGP=0
14 фев 13:53:02 ns129115 ядро: [12426815.834944] IPTables-OUTPUT-Dropped: IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.231 LEN=40 TOS=0x10 PREC=0x00 TTL=64 ID=61934 DF PROTO=TCP SPT=22115 DPT=49225 WINDOW=384 RES=0x00 ACK URGP=0
14 фев 13:53:02 ns129115 ядро: [12426815.835219] IPTables-OUTPUT-Dropped: IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.231 LEN=136 TOS=0x10 PREC=0x00 TTL=64 ID=61935 DF PROTO=TCP SPT=22115 DPT=49225 WINDOW=384 RES=0x00 ACK PSH URGP=0
14 фев 13:53:19 ns129115 ядро: [12426832.829664] IPTables-FWD-Dropped: IN=br0 OUT=br0 PHYSIN=vnet0 PHYSOUT=eth2 MAC=70:85:c2:4f:14:c1:00:16:3e:ea:18:01:08:00 SRC=192.168.1.156 DST=192.168.1.125 LEN=319 TOS=0x00 PREC=0x00 TTL=128 ID=16660 DF PROTO=TCP SPT=49169 DPT=54820 WINDOW=256 RES=0x00 ACK PSH URGP=0
14 фев 13:53:39 ns129115 ядро: [12426852.496117] IPTables-OUTPUT-Dropped: IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.231 LEN=104 TOS=0x10 PREC=0x00 TTL=64 ID=29023 DF PROTO=TCP SPT=22115 DPT=52214 WINDOW=263 RES=0x00 ACK PSH URGP=0
14 фев 13:53:49 ns129115 ядро: [12426862.856776] IPTables-FWD-Dropped: IN=br0 OUT=br0 PHYSIN=eth2 PHYSOUT=vnet0 MAC=00:16:3e:ea:18:01:90:2b:34:b0:20:a4:08:00 SRC=192.168.1.237 DST=192.168.1.156 LEN=40 TOS=0x00 PREC=0x00 TTL=128 ID=1644 DF PROTO=TCP SPT=49244 DPT=49169 WINDOW=1879 RES=0x00 ACK URGP=0
14 фев 13:53:50 ns129115 ядро: [12426863.288983] IPTables-OUTPUT-Dropped: IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.231 LEN=104 TOS=0x10 PREC=0x00 TTL=64 ID=29069 DF PROTO=TCP SPT=22115 DPT=52214 WINDOW=263 RES=0x00 ACK PSH URGP=0
14 фев 13:54:19 ns129115 ядро: [12426892.906806] IPTables-FWD-Dropped: IN=br0 OUT=br0 PHYSIN=eth2 PHYSOUT=vnet0 MAC=00:16:3e:ea:18:01:74:d4:35:6a:18:7a:08:00 SRC=192.168.1.199 DST=192.168.1.156 LEN=248 TOS=0x00 PREC=0x00 TTL=128 ID=13244 DF PROTO=TCP SPT=49678 DPT=49169 WINDOW=256 RES=0x00 ACK PSH URGP=0
14 фев 13:54:42 ns129115 ядро: [12426915.939242] IPTables-OUTPUT-Dropped: IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.231 LEN=136 TOS=0x10 PREC=0x00 TTL=64 ID=61969 DF PROTO=TCP SPT=22115 DPT=49225 WINDOW=384 RES=0x00 ACK PSH URGP=0

Сервер Debian с iptables и 2 мостами

  • BR0 — это мост с доступом в Интернет к шлюзу 192.168.1.1, и все пользователи находятся в этой сети.
  • VIRBR10, 2-й мост, vm1 подключен к этому мосту с IP 192.168.3.12 (192.168.3.0/28) и имеет nat с iptables наружу, проходящим через br0

Здесь »» Сетевой график со шлюзом и гипервизором

Вот моя таблица маршрутов

~ список маршрутов

Таблица маршрутизации IP ядра
Шлюз назначения Genmask Флаги Метрическая ссылка Использование Iface
по умолчанию 192.168.1.1 0.0.0.0 UG 0 0 0 br0
192.168.1.0 * 255.255.255.0 U 0 0 0 br0
192.168.3.0 * 255.255.255.240 U 0 0 0 virbr10

~ brctl шоу

имя моста идентификатор моста интерфейсы с поддержкой STP
br0 8000.0cc47ac18d3c да eth2
virbr10 8000.525400c4b847 да virbr10-пустышка
                                                        vnet2

~ правила iptables

#!/bin/ш
#Очистка всех правил
iptables -P ВХОД ПРИНЯТЬ
iptables -P ПЕРЕСЫЛАТЬ ПРИНЯТЬ
iptables -P ВЫВОД ПРИНЯТЬ
iptables -t nat -F
iptables -t mangle -F
iptables-F
iptables-X

# Разрешить базовый ВХОДНОЙ трафик.
iptables -A ВХОД -m состояние --state УСТАНОВЛЕНО,СВЯЗАННОЕ -j ПРИНЯТЬ
iptables -A ВХОД -i lo -j ПРИНЯТЬ
iptables -A ВХОД -p icmp --icmp-type 8 -m conntrack --ctstate НОВЫЙ -j ПРИНЯТЬ
iptables -A ВХОД -p icmp -m conntrack --ctstate НОВЫЙ -j ПРИНЯТЬ

#
#МТУ
iptables -t mangle -A FORWARD -o virbr1 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1460
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

#МСБ
#Порт: netbios - 445/tcp
#Порт: netbios-ns – 137/udp -- Служба имен NETBIOS
#Порт: netbios-dgm – 138/udp -- Служба датаграмм NETBIOS
#Порт: netbios-ssn – 139/tcp -- служба сеанса NETBIOS
iptables -A ВХОД -m state --state НОВЫЙ -m tcp -p tcp --dport 445 -j ПРИНЯТЬ
iptables -A ВХОД -p udp -m udp --dport 445 -j ПРИНЯТЬ
iptables -A ВХОД -p udp -m udp --dport 137:138 -j ПРИНЯТЬ
iptables -A ВХОД -m state --state НОВЫЙ -m tcp -p tcp --dport 139 -j ПРИНЯТЬ
#iptables -A ВХОД -p tcp -m tcp -m conntrack --ctstate НОВЫЙ --sport 137 -j ПРИНЯТЬ
#iptables -A ВХОД -p tcp -m tcp -m conntrack --ctstate НОВЫЙ --sport 138 -j ПРИНЯТЬ
#iptables -A ВХОД -p tcp -m tcp -m conntrack --ctstate НОВЫЙ --sport 139 -j ПРИНЯТЬ

#РДП
#Порт: 3389
# подключений извне
iptables -I ПЕРЕСЫЛАТЬ -o virbr10 -d 192.168.3.12 -j ПРИНЯТЬ
iptables -t nat -I ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ -p tcp --dport 3589 -j DNAT --to 192.168.3.12:3389

# Маскировка локальной подсети
iptables -I ПЕРЕСЫЛАТЬ -o virbr10 -d 192.168.3.0/28 -j ПРИНЯТЬ
iptables -t nat -A POSTROUTING -s 192.168.3.0/28 -j МАСКАРАД
iptables -A ПЕРЕСЫЛКА -o virbr10 -m состояние --state СВЯЗАННЫЕ,УСТАНОВЛЕННЫЕ -j ПРИНЯТЬ
#Разрешить соединения virbr10 с красным 192.168.1.0/24
iptables -A ПЕРЕСЫЛКА -i virbr10 -o br0 -j ПРИНЯТЬ
iptables -A ПЕРЕСЫЛКА -o virbr10 -i br0 -j ПРИНЯТЬ
iptables -A ПЕРЕСЫЛКА -i virbr10 -o lo -j ПРИНЯТЬ

###
#KVM-маршрутизированный гость
# DHCP-пакеты, отправляемые на виртуальные машины, не имеют контрольной суммы (из-за давней ошибки).
iptables -t mangle -A POSTROUTING -o virbr10 -p udp -m udp --dport 68 -j КОНТРОЛЬНАЯ СУММА --checksum-fil

# Не маскируйтесь под эти зарезервированные блоки адресов.
iptables -t nat -A POSTROUTING -s 192.168.3.0/28 -d 224.0.0.0/24 -j ВОЗВРАТ
iptables -t nat -A POSTROUTING -s 192.168.3.0/28 -d 255.255.255.255/32 -j ВОЗВРАТ
# Маскировать все пакеты, идущие от виртуальных машин в локальную сеть/Интернет.
iptables -t nat -A POSTROUTING -s 192.168.3.0/28 ! -d 192.168.3.0/28 -p tcp -j МАСКАРАД --to-ports 1024-65535
iptables -t nat -A POSTROUTING -s 192.168.3.0/28 ! -d 192.168.3.0/28 -p udp -j МАСКАРАД --to-ports 1024-65535
iptables -t nat -A POSTROUTING -s 192.168.3.0/28 ! -d 192.168.3.0/28 -j МАСКАРАД

# Принимать SSH-подключения.
iptables -A ВХОД -p tcp -m tcp --syn -m conntrack --ctstate НОВЫЙ --dport 22 -j ПРИНЯТЬ

# Принять Радмин
iptables -A ВХОД -p tcp -m tcp --syn -m conntrack --ctstate НОВЫЙ --dport 4899 -j ПРИНЯТЬ

# Разрешить входящий трафик в частную подсеть.
iptables -A FORWARD -d 192.168.3.0/28 -o virbr10 -m state --state УСТАНОВЛЕНО,СВЯЗАНО -j ПРИНЯТЬ
#7218-12_07 Медленный доступ к рабочему столу iptables -A FORWARD -d 192.168.1.0/24 -o br0 -m state --state ESTABLISHED,RELATED -j ACCEPT
#7218-12_07 Медленный доступ к рабочему столу iptables -A FORWARD -d 192.168.3.0/28 -o br0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешить исходящий трафик из частной подсети.
iptables -A FORWARD -s 192.168.3.0/28 -i virbr10 -m state --state УСТАНОВЛЕНО,СВЯЗАНО -j ПРИНЯТЬ
#7218-12_07 Медленный доступ к рабочему столу iptables -A FORWARD -s 192.168.1.0/24 -i br0 -m state --state ESTABLISHED,RELATED -j ACCEPT
#7218-12_07 Медленный доступ к рабочему столу iptables -A FORWARD -s 192.168.3.0/28 -i br0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешить трафик между виртуальными машинами.
iptables -A ПЕРЕСЫЛКА -i virbr10 -o virbr10 -j ПРИНЯТЬ
# Отвергните все остальное.
iptables -A FORWARD -i virbr10 -j REJECT --reject-with icmp-port-unreachable
# Принимать пакеты DNS (порт 53) и DHCP (порт 67) от виртуальных машин.
iptables -A ВХОД -i virbr10 -p udp -m udp -m multiport --dports 53,67 -j ПРИНЯТЬ
iptables -A ВХОД -i virbr10 -p tcp -m tcp -m multiport --dports 53,67 -j ПРИНЯТЬ

#ICMP
iptables -A ВЫВОД -p icmp -m conntrack --ctstate УСТАНОВЛЕНО,СВЯЗАННОЕ -j ПРИНЯТЬ

# Отвергните все остальное.
iptables -A ВХОД -m conntrack --ctstate НЕВЕРНЫЙ -j ОТКАЗ
iptables -A ВХОД -p tcp -m tcp -j ОТКЛОНИТЬ --reject-with tcp-reset
iptables -A ВХОД -j ОТКЛОНИТЬ --reject-with icmp-port-unreachable

#Лог-пакеты сброшены
iptables -A ВХОД -m limit --limit 2/мин -j ЖУРНАЛ --log-prefix "IPTables-INPUT-Dropped: " --log-level 4
iptables -A FORWARD -m limit --limit 2/min -j LOG --log-prefix "IPTables-FWD-Dropped: " --log-level 4
iptables -A ВЫВОД -m limit --limit 2/мин -j ЖУРНАЛ --log-prefix "IPTables-OUTPUT-Dropped: " --log-level 4

Обновления

  1. Измените цепочку журналов в конец скрипта и вставьте новые записи журнала.

решение1

После поиска в Google я смог решить эту проблему.

  1. Медленный доступ к общим файлам с SMB на контроллере домена в Windows Server 2012 R2 вызван тем, что GPO перенаправления папок вносит изменения в разрешения в папке профиля пользователя во время процесса перенаправления, когда папка не существует в месте назначения. На основе iamrafic из Microsfot Technet (связь), нам нужно изменить права доступа к папке следующим образом:

Создайте папку в нужном месте. Отключите наследование разрешений от родителя и удалите все унаследованные разрешения, нажав соответствующую кнопку. Одна запись уже будет в DACL: Local Administrators.

Изменить локальных администраторов: Полный доступ: эта папка, подпапки и файлы

Добавить СИСТЕМУ: Полный доступ: эта папка, подпапки и файлы.

Добавить СОЗДАТЕЛЯ-ВЛАДЕЛЬЦА: Полный доступ: Эта папка, подпапки и файлы.

Добавить аутентифицированных пользователей: Список папок / Чтение данных, Создание папок / Добавление данных: Только эта папка

Добавить администраторов домена: Полный доступ: эта папка, подпапки и файлы.

Нажмите ОК.

  1. Другая проблема была в моих правилах iptables, мне нужно было выполнить полностью новые цепочки и исправить порядок для каждого правила FORWARD, потому что это изменяет производительность при анализе пакета. Вот новые.
    #!/bin/ш
    
    #Очистка всех правил
    iptables -P ВХОД ПРИНЯТЬ
    iptables -P ПЕРЕСЫЛАТЬ ПРИНЯТЬ
    iptables -P ВЫВОД ПРИНЯТЬ
    iptables -t nat -F
    iptables -t mangle -F
    iptables-F
    iptables-X
    iptables -t raw -F
    
    # Основные таблицы
    iptables -A ВХОД -m conntrack --ctstate УСТАНОВЛЕНО,СВЯЗАНО -j ПРИНЯТЬ
    iptables -A ВХОД -i lo -j ПРИНЯТЬ
    
    #
    
    iptables -A FORWARD -o virbr32 -s 192.168.1.0/24 -d 192.168.100.0/28 -m conntrack --ctstate УСТАНОВЛЕНО,СВЯЗАННОЕ -j ПРИНЯТЬ
    iptables -A FORWARD -i virbr32 -s 192.168.100.0/28 -d 192.168.1.0/24 -m conntrack --ctstate УСТАНОВЛЕНО,СВЯЗАННОЕ -j ПРИНЯТЬ
    iptables -A ПЕРЕСЫЛКА -o virbr32 -i br0 -j ПРИНЯТЬ
    iptables -A ПЕРЕСЫЛКА -i virbr32 -s 192.168.100.0/2 -j ПРИНЯТЬ
    iptables -A ПЕРЕСЫЛКА -i virbr32 -o virbr32 -j ПРИНЯТЬ
    iptables -A FORWARD -i virbr32 -j LOG --log-prefix "iptables-FORWARD-REJECT: "
    iptables -A FORWARD -i virbr32 -j REJECT --reject-with icmp-port-unreachable
    
    # Маскировка локальной подсети
    iptables -t nat -A POSTROUTING -s 192.168.100.0/28 -j МАСКАРАД
    # Не маскируйтесь под эти зарезервированные блоки адресов.
    iptables -t nat -A POSTROUTING -s 192.168.100.0/28 -d 224.0.0.0/24 -j ВОЗВРАТ
    iptables -t nat -A POSTROUTING -s 192.168.100.0/28 -d 255.255.255.255/32 -j ВОЗВРАТ
    
    # Малый и средний бизнес
    # RPC EPM TCP 135
    # RPC через HTTPS TCP 593
    # SMB (для именованных каналов) TCP 445
    # Эфемерный диапазон, динамический *
    iptables -I ПЕРЕНАПРАВИТЬ 6 -o virbr32 -i br0 -m conntrack --ctstate НОВЫЙ -p tcp -d 192.168.100.12 --dport 445 -j ПРИНЯТЬ
    iptables -I ПЕРЕНАПРАВИТЬ 7 -o virbr32 -i br0 -m conntrack --ctstate НОВЫЙ -p tcp -d 192.168.100.12 --dport 139 -j ПРИНЯТЬ
    
    # Принимать пакеты DNS (порт 53) и DHCP (порт 67) от виртуальных машин.
    iptables -I ПЕРЕНАПРАВИТЬ 8 -o virbr32 -i br0 -m conntrack --ctstate НОВЫЙ -p tcp -m tcp -m multiport --dports 53,67 -j ПРИНЯТЬ
    iptables -I ПЕРЕСЫЛКА 9 -i virbr32 -o br0 -m conntrack --ctstate НОВЫЙ -p udp -m udp -m multiport --dports 53,67 -j ПРИНЯТЬ
    
    #
    
    #
    
    # Два правила ниже гарантируют, что будут проверены только TCP-пакеты. Все остальные
    # продолжаем в таблице *filter.
    iptables -t raw -N TCPFLAGS
    iptables -t raw -A ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ -p tcp -j TCPFLAGS
    iptables -t raw -A PREVEREUTING -j ACCEPT
    
    # Быстро принимать стандартные рукопожатия
    # РАЗРЕШИТЬ ACK или ACK/SYN
    #-A TCPFLAGS -j ПРИНЯТЬ
    iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN,ACK,URG,PSH,RST ACK -j ACCEPT
    
    # Разрешить ACK/FIN с URG или PSH, или обоими, или ни с одним
    # но SYN и RST не могут быть установлены
    iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN,SYN,ACK,RST ACK,FIN -j ACCEPT
    
    # Разрешить SYN или ACK/SYN
    iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST SYN -j ACCEPT
    
    # Разрешить RST или ACK/RST
    iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST RST -j ACCEPT
    
    # Это правило отлавливает атаки типа "рождественская елка" и "плавник"
    iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN FIN -j DROP
    # Это правило отлавливает атаки xmas-tree и syn/rst
    iptables -t raw -A TCPFLAGS -p tcp --tcp-flags SYN SYN -j DROP
    
    # Это правило отлавливает нулевые атаки
    iptables -t raw -A TCPFLAGS -p tcp --tcp-flags ВСЕ НИКАКИХ -j ОТКАЗАТЬ
    
    #-A TCPFLAGS -p tcp -ecn-tcp-cwr -j ОТБРОС
    # эти правила отлавливают плохие комбинации ack
    #-A TCPFLAGS -p tcp --tcp-flags ACK ACK -j ACC
    #iptables -t raw -A TCPFLAGS -j ACCEPT
    
    # Итак, что мы принимаем для TCP?
    # рукопожатия (ACK/FIN), (ACK/SYN), (SYN), (ACK), (RST), (ACK/RST),
    # и пакеты данных с PSH или URG или FIN или ACK
    
    #
    
    #Лог-пакеты сброшены
    iptables -A ВХОД -m limit --limit 2/мин -j ЖУРНАЛ --log-prefix "IPTables-INPUT-Dropped: " --log-level 4
    iptables -A FORWARD -m limit --limit 2/min -j LOG --log-prefix "IPTables-FWD-Dropped: " --log-level 4
    iptables -A ВЫВОД -m limit --limit 2/мин -j ЖУРНАЛ --log-prefix "IPTables-OUTPUT-Dropped: " --log-level 4
  • Как вы можете видеть, я использовал iptables -I FORWARD вместо iptables -A FORWARD, потому что с этим можно выполнить упорядоченные правила в моей таблице фильтров, поместив сначала более важные правила, а затем более глубоко после DROP или deny остальные. Все правила FORWARD идут перед этой строкой
    iptables -A ВХОД -p icmp --icmp-type 8 -m conntrack --ctstate НОВЫЙ -j ПРИНЯТЬ

Редактировать: Мне нужно только внести некоторые изменения, чтобы увеличить скорость передачи при копировании файлов с виртуальной машины наружу в локальной сети 192.168.1.0/24, я не могу взять больше 4 Мбит/с. Любые советы будут оценены по достоинству!!

Связанный контент