LINUX.ORG.RU

Сообщения echos063

 

Зависает/перезагружается сервер с RAID6

Приветствую!

Что имею:

  1. Debian 10
  2. Software RAID6 8x8TB mdadm + LVM

Описание проблемы:

Буквально сразу после установки системы на lvm, после первой первой перезагрузки, сервер уходит в ребут с ошибкой md: super_written gets error=10. После перезагрузки смотрю cat /proc/mdstat - все нормально

Personalities : [raid1] [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid10]
md1 : active raid6 sdd2[3] sda2[0] sdc2[2] sdb2[1] sde2[4] sdh2[7] sdg2[6] sdf2[5]
      46880212992 blocks super 1.2 level 6, 512k chunk, algorithm 2 [8/8] [UUUUUUUU]
      [=>...................]  resync =  7.5% (592285532/7813368832) finish=864.8min speed=139154K/sec
      bitmap: 57/59 pages [228KB], 65536KB chunk

синхронизация идет. Окей. Проходит время (рандомное) - сервер снова в ребут с той же ошибкой. Проверяю cat /proc/mdstat - все нормально, синхронизация продолжается. В итоге синхронизация дойдет до конца, с постоянными перезагрузками, но это только начало.

Настраиваю сервер на работу с xen hypervisor, создаю lvm разделы для виртуальных машин, разворачивают уже существующие образы в lvm - все хорошо, все работает. Но недолго. Буквально через неделю произошел первый полный завис сервера с той же ошибкой (полный текст не выложу, т.к. переписываю со скрина, да там и не нужно):

md: super_written gets error=10
md/raid:md1: Disk failure on sd[a-h] (то есть он пишет так про каждый диск)
EXT4-fs error (device dm-0): __ext4_find_entry:1449: inode #2098447: comm systemd-udevd: reading directory iblock 0
Buffer I/O error on dev dm-3, logical block $BLOCK_NUMBER, lost async page write
EXT4-fs (dm-0): I/O error while writing superblock
EXT4-fs (dm-0): previous I/O error to superblock detected
EXT4-fs (dm-0): Remounting filesystem to read-only
JBD2: Error -5 detected when updating journal superblock for dm-0-8

И т.д.

Ну и система встает, не реагирует ни на что, Sysrq недоступен, сеть лежит - только ручная перезагрузка.

Проверил каждый диск: бэдблоков нет, smartctl показывает идеальное состояние, SMART overall-health self-assessment rest result: PASSED для каждого диска, fsck ничего не видит. Диски как в рабочем состоянии.

Я не пойму где и что я упускаю, ведь проблема довольно серьезная: из-за постоянных зависаний системы сервер не может войти в строй уже почти месяц. Комрады, поделитесь, пожалуйста, опытом тестирования дисков и помогите мне с моей бедой. Сервер есть - сервисов нет.

 , ,

echos063
()

Установка Debian на SOFT RAID 6

Проблема, собственно, состоит в том, что не могу установить Debian на R6 с Boot R1.

Есть 8 дисков по 8ТБ. Диски размечены в GPT. Нужно из них сделать общий LVM R6 и Boot хотя бы R1. Не могу понять, как правильно сделать разметку дисков и какие разделы загонять в рейд, а какие нет, чтобы загрузчик встал без проблем.

Если убрать из уравнения GPT, то на тестовом стенде загрузчик без проблем встает в R1. С добавлением GPT появляется EFI раздел, который я не могу понять, как монтировать.

Испробованные варианты:

  1. sdX1 = 100MB(Ext2, /boot), sdX2 = 100MB(FAT32, /boot/efi). Далее делаю из этих разделов R1 с двумя дисками и шестью в запасе. По окончанию grub не ставится.
  2. sdX1 = 100MB(Ext2, /boot), sdX2 = 100MB(EFI partition). Далее делаю из этих разделов R1 с двумя дисками и шестью в запасе. По окончанию grub не ставится.
  3. Первое и второе действие в LVM, после разметка диска согласно правилам - не ставится.

Не могу понять, как мне добиться результата.

 , , ,

echos063
()

ATEN KVM + Freeradius.

Есть KVM ATEN KN2124VA и настроенный Freeradius. Задача - пускать пользователей домена на KVM. Пользователь проходит авторизацию через радиус, получает Access-Accept, KVM же, в свою очередь, не пускает пользователя к себе на интерфейс.

Лог радиуса:

(1) Received Access-Request Id 94 from 10.0.0.101:1812 to 10.0.0.88:1812 length 56
(1)   User-Name = "test_user"
(1)   CHAP-Password = 0x5e7ca0dc5deb59ef6159aaae743c5abf4
(1)   NAS-IP-Address = 10.0.0.88
(1) # Executing section authorize from file /etc/freeradius/3.0/sites-enabled/default
(1)   authorize {
(1)     policy filter_username {
(1)       if (&User-Name) {
(1)       if (&User-Name)  -> TRUE
(1)       if (&User-Name)  {
(1)         if (&User-Name =~ / /) {
(1)         if (&User-Name =~ / /)  -> FALSE
(1)         if (&User-Name =~ /@[^@]*@/ ) {
(1)         if (&User-Name =~ /@[^@]*@/ )  -> FALSE
(1)         if (&User-Name =~ /\.\./ ) {
(1)         if (&User-Name =~ /\.\./ )  -> FALSE
(1)         if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))  {
(1)         if ((&User-Name =~ /@/) && (&User-Name !~ /@(.+)\.(.+)$/))   -> FALSE
(1)         if (&User-Name =~ /\.$/)  {
(1)         if (&User-Name =~ /\.$/)   -> FALSE
(1)         if (&User-Name =~ /@\./)  {
(1)         if (&User-Name =~ /@\./)   -> FALSE
(1)       } # if (&User-Name)  = notfound
(1)     } # policy filter_username = notfound
(1)     [preprocess] = ok
(1) auth_log: EXPAND /var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/auth-detail-%Y%m%d
(1) auth_log:    --> /var/log/freeradius/radacct/10.0.0.101/auth-detail-20210118
(1) auth_log: /var/log/freeradius/radacct/%{%{Packet-Src-IP-Address}:-%{Packet-Src-IPv6-Address}}/auth-detail-%Y%m%d expands to /var/log/freeradius/radacct/10.0.0.101/auth-detail-20210118
(1) auth_log: EXPAND %t
(1) auth_log:    --> Mon Jan 18 16:33:55 2021
(1)     [auth_log] = ok
(1) chap:   &control:Auth-Type := CHAP
(1)     [chap] = ok
(1)     [mschap] = noop
(1)     [digest] = noop
(1) suffix: Checking for suffix after "@"
(1) suffix: No '@' in User-Name = "test_user", looking up realm NULL
(1) suffix: No such realm "NULL"
(1)     [suffix] = noop
(1) eap: No EAP-Message, not doing EAP
(1)     [eap] = noop
(1) files: users: Matched entry test_user at line 1
(1)     [files] = ok
(1) sql: EXPAND %{User-Name}
(1) sql:    --> test_user
(1) sql: SQL-User-Name set to 'test_user'
rlm_sql (sql): Closing connection (3): Hit idle_timeout, was idle for 1540 seconds
rlm_sql_mysql: Socket destructor called, closing socket
rlm_sql (sql): Closing connection (4): Hit idle_timeout, was idle for 1540 seconds
rlm_sql_mysql: Socket destructor called, closing socket
rlm_sql (sql): Closing connection (0): Hit idle_timeout, was idle for 1540 seconds
rlm_sql_mysql: Socket destructor called, closing socket
rlm_sql (sql): Closing connection (5): Hit idle_timeout, was idle for 1540 seconds
rlm_sql_mysql: Socket destructor called, closing socket
rlm_sql (sql): Closing connection (1): Hit idle_timeout, was idle for 1534 seconds
rlm_sql (sql): You probably need to lower "min"
rlm_sql_mysql: Socket destructor called, closing socket
rlm_sql (sql): Closing connection (6): Hit idle_timeout, was idle for 1534 seconds
rlm_sql (sql): You probably need to lower "min"
rlm_sql_mysql: Socket destructor called, closing socket
rlm_sql (sql): Closing connection (2): Hit idle_timeout, was idle for 1534 seconds
rlm_sql (sql): You probably need to lower "min"
rlm_sql_mysql: Socket destructor called, closing socket
rlm_sql (sql): 0 of 0 connections in use.  You  may need to increase "spare"
rlm_sql (sql): Opening additional connection (7), 1 of 32 pending slots used
rlm_sql_mysql: Starting connect to MySQL server
rlm_sql_mysql: Connected to database 'radius' on Localhost via UNIX socket, server version 10.3.25-MariaDB-0+deb10u1, protocol version 10
rlm_sql (sql): Reserved connection (7)
(1) sql: EXPAND SELECT id, username, attribute, value, op FROM radcheck WHERE username = '%{SQL-User-Name}' ORDER BY id
(1) sql:    --> SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'test_user' ORDER BY id
(1) sql: Executing select query: SELECT id, username, attribute, value, op FROM radcheck WHERE username = 'test_user' ORDER BY id
(1) sql: EXPAND SELECT groupname FROM radusergroup WHERE username = '%{SQL-User-Name}' ORDER BY priority
(1) sql:    --> SELECT groupname FROM radusergroup WHERE username = 'test_user' ORDER BY priority
(1) sql: Executing select query: SELECT groupname FROM radusergroup WHERE username = 'test_user' ORDER BY priority
(1) sql: User not found in any groups
rlm_sql (sql): Released connection (7)
Need 2 more connections to reach min connections (3)
rlm_sql (sql): Opening additional connection (8), 1 of 31 pending slots used
rlm_sql_mysql: Starting connect to MySQL server
rlm_sql_mysql: Connected to database 'radius' on Localhost via UNIX socket, server version 10.3.25-MariaDB-0+deb10u1, protocol version 10
(1)     [sql] = notfound
(1)     [expiration] = noop
(1)     [logintime] = noop
(1)     policy ntlm_auth.authorize {
(1)       if (!control:Auth-Type && User-Password) {
(1)       if (!control:Auth-Type && User-Password)  -> FALSE
(1)     } # policy ntlm_auth.authorize = ok
(1)   } # authorize = ok
(1) Found Auth-Type = CHAP
(1) # Executing group from file /etc/freeradius/3.0/sites-enabled/default
(1)   Auth-Type CHAP {
(1) chap: Comparing with "known good" Cleartext-Password
(1) chap: CHAP user "rlm_sql_mysql: Starting connect to MySQL server
rlm_sql_mysql: Connected to database 'radius' on Localhost via UNIX socket, server version 10.3.25-MariaDB-0+deb10u1, protocol version 10
(1)     [sql] = notfound
(1)     [expiration] = noop
(1)     [logintime] = noop
(1)     policy ntlm_auth.authorize {
(1)       if (!control:Auth-Type && User-Password) {
(1)       if (!control:Auth-Type && User-Password)  -> FALSE
(1)     } # policy ntlm_auth.authorize = ok
(1)   } # authorize = ok
(1) Found Auth-Type = CHAP
(1) # Executing group from file /etc/freeradius/3.0/sites-enabled/default
(1)   Auth-Type CHAP {
(1) chap: Comparing with "known good" Cleartext-Password
(1) chap: CHAP user "test_user" authenticated successfully
(1)     [chap] = ok
(1)   } # Auth-Type CHAP = ok
(1) # Executing section post-auth from file /etc/freeradius/3.0/sites-enabled/default
(1)   post-auth {
(1)     update {
(1)       No attributes updated
(1)     } # update = noop
(1) sql: EXPAND .query
(1) sql:    --> .query
(1) sql: Using query template 'query'
rlm_sql (sql): Reserved connection (7)
(1) sql: EXPAND %{User-Name}
(1) sql:    --> test_user
(1) sql: SQL-User-Name set to 'test_user'
(1) sql: EXPAND INSERT INTO radpostauth (username, pass, reply, authdate) VALUES ( '%{SQL-User-Name}', '%{%{User-Password}:-%{Chap-Password}}', '%{reply:Packet-Type}', '%S')
(1) sql:    --> INSERT INTO radpostauth (username, pass, reply, authdate) VALUES ( 'test_user', '0x5e7ca0dc5deb59ef6159aaae743c5abf4', 'Access-Accept', '2021-01-18 16:33:55')
(1) sql: Executing query: INSERT INTO radpostauth (username, pass, reply, authdate) VALUES ( 'test_user', '0x5e7ca0dc5deb59ef6159aaae743c5abf4', 'Access-Accept', '2021-01-18 16:33:55')
(1) sql: SQL query returned: success
(1) sql: 1 record(s) updated
rlm_sql (sql): Released connection (7)
(1)     [sql] = ok
(1)     [exec] = noop
(1)     policy remove_reply_message_if_eap {
(1)       if (&reply:EAP-Message && &reply:Reply-Message) {
(1)       if (&reply:EAP-Message && &reply:Reply-Message)  -> FALSE
(1)       else {
(1)         [noop] = noop
(1)       } # else = noop
(1)     } # policy remove_reply_message_if_eap = noop
(1)   } # post-auth = ok
(1) Sent Access-Accept Id 94 from 10.0.0.88:1812 to 10.0.0.101:1812 length 0
(1) Finished request
Waking up in 4.9 seconds.
(1) Cleaning up request packet ID 94 with timestamp +1540
Ready to process requests" authenticated successfully
(1)     [chap] = ok
(1)   } # Auth-Type CHAP = ok
(1) # Executing section post-auth from file /etc/freeradius/3.0/sites-enabled/default
(1)   post-auth {
(1)     update {
(1)       No attributes updated
(1)     } # update = noop
(1) sql: EXPAND .query
(1) sql:    --> .query
(1) sql: Using query template 'query'
rlm_sql (sql): Reserved connection (7)
(1) sql: EXPAND %{User-Name}
(1) sql:    --> test_user
(1) sql: SQL-User-Name set to 'test_user'
(1) sql: EXPAND INSERT INTO radpostauth (username, pass, reply, authdate) VALUES ( '%{SQL-User-Name}', '%{%{User-Password}:-%{Chap-Password}}', '%{reply:Packet-Type}', '%S')
(1) sql:    --> INSERT INTO radpostauth (username, pass, reply, authdate) VALUES ( 'test_user', '0x5e7ca0dc5deb59ef6159aaae743c5abf4', 'Access-Accept', '2021-01-18 16:33:55')
(1) sql: Executing query: INSERT INTO radpostauth (username, pass, reply, authdate) VALUES ( 'test_user', '0x5e7ca0dc5deb59ef6159aaae743c5abf4', 'Access-Accept', '2021-01-18 16:33:55')
(1) sql: SQL query returned: success
(1) sql: 1 record(s) updated
rlm_sql (sql): Released connection (7)
(1)     [sql] = ok
(1)     [exec] = noop
(1)     policy remove_reply_message_if_eap {
(1)       if (&reply:EAP-Message && &reply:Reply-Message) {
(1)       if (&reply:EAP-Message && &reply:Reply-Message)  -> FALSE
(1)       else {
(1)         [noop] = noop
(1)       } # else = noop
(1)     } # policy remove_reply_message_if_eap = noop
(1)   } # post-auth = ok
(1) Sent Access-Accept Id 94 from 10.0.0.88:1812 to 10.0.0.101:1812 length 0
(1) Finished request
Waking up in 4.9 seconds.
(1) Cleaning up request packet ID 94 with timestamp +1540
Ready to process requests

Пользователь стучится (вывод веба)

Invalid Username or Password. Please try again.

В это время в интерфейсе KVM:

OP: User test_user from 10.0.0.163 (10-BF-48-19-A4-DF) attempting to login via browser.

Спустя 2-3 минуты простоя там же:

OP: Session of user test_user (10.0.0.163 10-BF-48-19-A4-DF) has expired.

Вывод /var/log/freeradius/radacct/:

Mon Jan 18 16:33:55 2021
        Packet-Type = Access-Request
        User-Name = "test_user"
        CHAP-Password = 0x5e7ca0dc5deb59ef6159aaae743c5abf4
        NAS-IP-Address = 10.0.0.88
        Event-Timestamp = "Jan 18 2021 16:33:55 MSK"
        CHAP-Challenge = 0x656137368926899366361623762386435
        Timestamp = 1610976835

SSH у этой KVM довольно слабый (там некуда идти), логирование слабое. Может, есть какой-то способ достучаться до нутра KVM, чтобы увидеть более подробные логи?

Сталкивался ли кто-то с подобной задачей и, может быть, знает ее решение и сможет подсказать, куда копать?

Сама KVM поддерживает только PAP и CHAP.

 ,

echos063
()

Клиент-серверный вариант OpenVPN

Всем привет!

Есть облачные сервера Centos. Задача: построить архитектуру OpenVPN в таком виде: клиент подключается к бастиону ->> бастион подключается к центральному серверу OpenVPN ->> центральный сервер маршрутизирует трафик во внутреннюю сеть нужного мне сервиса. Всего должно быть 3 бастиона (по одному для каждого филиала) и два центральных OpenVPN-сервера с плавающим IP. Короче: клиент OpenVPN ->> клиент-сервер OpenVPN ->> сервер OpenVPN.

IP-адрессация (белые адреса, все на разных облаках; придуманные айпишники из головы):

1. Бастион - 175.79.254.95

2. Центральный сервер - 79.175.254.95

Что имею: клиент (любой айпи) без проблем по отдельности подключается и к бастиону (175.79.254.95) , и к центральному серверу (79.175.254.95). Интернет есть с обоих серверов.

Проблема: при коннектинге бастиона (175.79.254.95) и центрального сервера (79.175.254.95) обрывается связь с бастионом. Бастион не пингуется и не подает никаких признаков жизни, пока не перезапустить сервер.

Конфиг центрального OpenVPN-сервера:

[root@central-vpn-server ~]# cat /etc/openvpn/central-vpn-server.conf
port 1194
proto tcp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/central-vpn-server.crt
key /etc/openvpn/central-vpn-server.key
dh /etc/openvpn/dh2048.pem
tls-auth /etc/openvpn/ta.key 0
key-direction 0
cipher AES-128-CBC
auth SHA512

server 10.8.4.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push «dhcp-option DNS 208.67.222.222»
push «dhcp-option DNS 208.67.220.220»
push «redirect-gateway def1 bypass-dhcp»

keepalive 10 120

comp-lzo
user nobody
group nobody
persist-key
persist-tun

status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
log /var/log/openvpn.log

Состояние netstat -tlnp центрального OpenVPN-сервера:

[root@central-vpn-server~]# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1017/master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 930/nginx: master p
tcp 0 0 0.0.0.0:22131 0.0.0.0:* LISTEN 1139/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1017/master
tcp6 0 0 :::80 :::* LISTEN 930/nginx: master p
tcp6 0 0 :::22131 :::* LISTEN 1139/sshd

Состояние netstat -nr центрального OpenVPN-сервера:

[root@central-vpn-server ~]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.18.62.22 0.0.0.0 UG 0 0 0 eth0
10.18.62.22 0.0.0.0 255.255.255.254 U 0 0 0 eth0

Конфиг бастион OpenVPN-сервера:

[root@bastion-server ~]# cat /etc/openvpn/bastion-server.conf
port 1194
proto tcp
dev tun

ca /etc/openvpn/ca.crt
cert /etc/openvpn/bastion-server.crt
key /etc/openvpn/bastion-server.key
dh /etc/openvpn/dh2048.pem
tls-auth /etc/openvpn/ta.key 0
key-direction 0
cipher AES-128-CBC
auth SHA512

topology subnet
server 10.8.3.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push «dhcp-option DNS 208.67.222.222»
push «dhcp-option DNS 208.67.220.220»
push «redirect-gateway def1 bypass-dhcp»

keepalive 10 120

comp-lzo
user nobody
group nobody
persist-key
persist-tun

status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log

Состояние netstat -tlnp бастион OpenVPN-сервера:

[root@bastion-server ~]# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:1194 0.0.0.0:* LISTEN 1020/openvpn
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1038/nginx: master
tcp 0 0 0.0.0.0:22131 0.0.0.0:* LISTEN 1253/sshd
tcp6 0 0 :::80 :::* LISTEN 1038/nginx: master
tcp6 0 0 :::22131 :::* LISTEN 1253/sshd

Состояние netstat -nr бастион OpenVPN-сервера:

[root@bastion-server ~]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 172.31.1.1 0.0.0.0 UG 0 0 0 eth0
10.8.3.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
172.31.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0

Конфиг клиента (одинаковый):

[root@client ~]# cat /etc/openvpn/client.conf
client
dev tun
proto tcp
remote $IP 1194

remote-cert-tls server
key-direction 1
cipher AES-128-CBC
auth SHA512
auth-nocache
nobind

resolv-retry infinite
comp-lzo
verb 3

persist-key
persist-tun
user nobody
group nobody

Вопрос: как правильно прописать маршрутизацию, чтобы моя схема стала рабочей? Я понимаю, что совсем запутался в маршрутизации, поэтому не стал прикладывать сюда роуты и пуши, коих перепробовал все варианты (или не все), поэтому выложил просто рабочие конфиги.

 , ,

echos063
()

RSS подписка на новые темы