Рейтинг:0

Правила iptables IPSec для локальной службы

флаг in

У меня есть сервер удаленного доступа StrongSwan IPSec, работающий на RHEL, и клиент в одной локальной сети. У меня есть сервер Samba, работающий на том же хосте RHEL, который я хочу сделать доступным через VPN, но не за пределами туннеля. Я могу успешно настроить туннель IPSec (пришлось создать профиль MacOS с помощью Apple Configurator2, включив Perfect Forward Security, чтобы обеспечить соответствие набору шифров), но я не могу правильно направить трафик на сервер.Я сделал захват пакетов, и я мог видеть входящие ESP и расшифрованные пакеты ICMP из ping от клиента, но сервер не мог ответить. Я провел несколько выходных, пытаясь выяснить, какие правила iptables мне нужны для подключения, но я думаю, что мне не хватает какого-то понимания. Я смог настроить OpenVPN и WireGuard VPN без проблем с интерфейсами tun, но IPSec, насколько я понимаю, расшифровывается политикой в ​​ядре, поэтому я не знаком с тем, как это повлияет на маршрутизацию.

Я основывал свою установку на официальных примерах документов StrongSwan для удаленный доступ, использовал это документ конфигурации swanctl, читать сообщения на форуме и переводить старый формат в новый с помощью это - а также читать о пересылка и VPN на основе маршрутов - но я думаю, что мне просто не хватает общего понимания того, как трафик маршрутизируется внутри VPN-сервера.

Логическая сетевая диаграмма

Логическая сетевая диаграмма

swanctl.conf (с комментариями других вещей, которые я пробовал)

связи {
        ikev2-впн {
                фрагментация=да
                rekey_time = 0 с
                #мобайк = нет
                версия=2
                предложения = aes256gcm16-prfsha384-ecp384
                remote_addrs=%любой
                локальные_адреса = 192.168.1.15
                #випс=10.0.3.1
                #remote_addrs=192.168.1.23
                #пулы=10.0.3.0/24
                #encap=да
                #dpd_delay=300 сек.
                пулы = пул1, пул2
        #if_id_in=6
        #if_id_out=6
                дети {
                        ikev2-впн {
                                #start_action=нет
                                esp_proposals=aes256gcm16-prfsha384-ecp384
                                #local_ts=10.0.3.1/32
                                локальные_тс=10.0.1.0/24
                                remote_ts=10.0.2.0/24
                                #remote_ts=10.0.3.10-10.0.3.200
                                #dpd_action=очистить
                                updown=/usr/libexec/strongswan/_updown iptables
                        }

                }
                местный {
                        авторизация = ecdsa-384-sha384
                        сертификаты = /etc/strongswan/ipsec.d/certs/server.crt
                        идентификатор = 192.168.1.15
                }
                удаленный {
                        авторизация = ecdsa-384-sha384
                        идентификатор =% любой
                }
        }
}
бассейны {
        пул1 {
                #адрес=10.0.3.0/24
                адрес=10.0.1.0/24
        }
        бассейн2 {
                #адрес=10.0.3.10-10.0.3.200
                адрес=10.0.2.0/24
        }
}
секреты {
        ecdsa-сервер {
                file=/etc/strongswan/ipsec.d/private/server.key
        }
        ecdsa-клиент {
                file=/etc/strongswan/ipsec.d/private/client.key
        }
}
органы власти {
        центр сертификации {
                cacert = /etc/strongswan/ipsec.d/cacerts/ca.crt
        }
}

swanctl --list-sas

ikev2-vpn: #2, УСТАНОВЛЕН, IKEv2, c98d6dc49ca0acd4_i 85342c9a0809e294_r*
  местный '192.168.1.15' @ 192.168.1.15[4500]
  удаленный 'client2.vpn' @ 192.168.1.23[4500] [10.0.1.1]
  AES_GCM_16-256/PRF_HMAC_SHA2_384/ECP_384
  установлен 53с назад
  ikev2-vpn: #4, требуется 1, УСТАНОВЛЕНО, ТУННЕЛЬ, ESP:AES_GCM_16-256
    установлен 53 с назад, смена ключей через 3247 с, срок действия истекает через 3907 с
    в c334ea0b, 0 байт, 0 пакетов
    out 021348d4, 0 байт, 0 пакетов
    местный 10.0.1.0/24
    удаленный 10.0.2.0/24

swanctl --список-соединений

ikev2-vpn: IKEv2, без повторной аутентификации, без смены ключей
  местный: 192.168.1.15
  удаленный: % любой
  локальная аутентификация с открытым ключом:
    идентификатор: 192.168.1.15
    сертификаты: [CERT_DN]
  удаленная аутентификация с открытым ключом:
    идентификатор: %любой
  ikev2-vpn: TUNNEL, смена ключей каждые 3600 сек.
    местный: 10.0.1.0/24
    удаленный: 10.0.2.0/24

ip -s состояние xfrm

источник 192.168.1.15 приемник 192.168.1.23
        proto esp spi 0x021348d4 (34818260) требуется 1 (0x00000001) туннель режима
        окно воспроизведения 0 seq 0x00000000 флаг af-unspec (0x00100000)
        aead rfc4106(gcm(aes)) [KEY] (288 бит) 128
        контекст защиты от повторного воспроизведения: seq 0x0, oseq 0x0, растровое изображение 0x00000000
        пожизненная конфигурация:
          предел: мягкий (INF) (байты), жесткий (INF) (байты)
          предел: мягкий (INF) (пакеты), жесткий (INF) (пакеты)
          истечение срока действия: мягкое 3418 (сек), жесткое 3960 (сек)
          истекает использование: мягкий 0 (сек), жесткий 0 (сек)
        ток жизни:
          0 (байты), 0 (пакеты)
          добавить [ВРЕМЯ] использовать -
        статистика:
          окно воспроизведения 0 повтор 0 не удалось 0
источник 192.168.1.23 приемник 192.168.1.15
        proto esp spi 0xc334ea0b(3275024907) требуется 1(0x00000001) туннель режима
        окно воспроизведения 32 seq 0x00000000 флаг af-unspec (0x00100000)
        aead rfc4106(gcm(aes)) [KEY] (288 бит) 128
        контекст защиты от повторного воспроизведения: seq 0xc, oseq 0x0, растровое изображение 0x00000fff
        пожизненная конфигурация:
          предел: мягкий (INF) (байты), жесткий (INF) (байты)
          предел: мягкий (INF) (пакеты), жесткий (INF) (пакеты)
          истечение срока действия: мягкое 3300 (сек), жесткое 3960 (сек)
          истекает использование: мягкий 0 (сек), жесткий 0 (сек)
        ток жизни:
          1008 (байт), 12 (пакетов)
          добавить [ВРЕМЯ] использовать [ВРЕМЯ]
        статистика:
          окно воспроизведения 0 повтор 0 не удалось 0

Показать политику ip xfrm

источник 10.0.1.0/24 приемник 10.0.2.0/24 
        dir out приоритет 375423 ptype main 
        tmpl src 192.168.1.15 dst 192.168.1.23
                proto esp spi 0x021348d4 требуется туннель режима 1
источник 10.0.2.0/24 приемник 10.0.1.0/24 
        dir fwd приоритет 375423 ptype основной 
        tmpl src 192.168.1.23 dst 192.168.1.15
                proto esp reqid 1 режим туннеля
источник 10.0.2.0/24 приемник 10.0.1.0/24 
        директор в приоритете 375423 ptype основной 
        tmpl src 192.168.1.23 dst 192.168.1.15
                proto esp reqid 1 режим туннеля
источник 0.0.0.0/0 приемник 0.0.0.0/0 
        сокет с приоритетом 0 ptype main 
источник 0.0.0.0/0 приемник 0.0.0.0/0 
        приоритет выхода сокета 0 ptype main 
источник 0.0.0.0/0 приемник 0.0.0.0/0 
        сокет с приоритетом 0 ptype main 
источник 0.0.0.0/0 приемник 0.0.0.0/0 
        приоритет выхода сокета 0 ptype main 
источник ::/0 приемник ::/0 
        сокет с приоритетом 0 ptype main 
источник ::/0 приемник ::/0 
        приоритет выхода сокета 0 ptype main 
источник ::/0 приемник ::/0 
        сокет с приоритетом 0 ptype main 
источник ::/0 приемник ::/0 
        приоритет выхода сокета 0 ptype main 

iptables-сохранить

# Сгенерировано iptables-save v1.8.4
*безопасность
:ВВОД ПРИНЯТЬ [22858074:106762962340]
:ВПЕРЕД ПРИНЯТЬ [7:588]
: ВЫВОД ПРИНЯТ [13832427:3964756363]
СОВЕРШИТЬ
# Сгенерировано iptables-save v1.8.4
*сырой
: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [22858911:106763119967]
: ВЫВОД ПРИНЯТ [13832428:3964756655]
СОВЕРШИТЬ
# Сгенерировано iptables-save v1.8.4
* калечить
: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [22858911:106763119967]
:ВВОД ПРИНЯТЬ [22858308:106763007491]
:ВПЕРЕД ПРИНЯТЬ [7:588]
: ВЫВОД ПРИНЯТ [13832428:3964756655]
:ОТПРАВКА ПРИНЯТИЯ [13833383:3964877586]
:LIBVIRT_PRT - [0:0]
-A ОТПРАВКА -j LIBVIRT_PRT
-A LIBVIRT_PRT -o virbr0 -p udp -m udp --dport 68 -j КОНТРОЛЬНАЯ СУММА --checksum-fill
СОВЕРШИТЬ
# Сгенерировано iptables-save v1.8.4
*натуральный
: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [186346:34394324]
:ВВОД ПРИНЯТЬ [185651:34259782]
:ОТПРАВКА ПРИНЯТИЯ [16086:1727773]
: ВЫВОД ПРИНЯТ [16085:1727689]
:LIBVIRT_PRT - [0:0]
-A ОТПРАВКА -j LIBVIRT_PRT
-A РАЗМЕЩЕНИЕ -s 172.16.0.0/24 -o enp0s31f6 -j МАСКАРАД
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 224.0.0.0/24 -j ВОЗВРАТ
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 255.255.255.255/32 -j ВОЗВРАТ
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j МАСКАРАД
СОВЕРШИТЬ
# Сгенерировано iptables-save
*фильтр
: ВВОД ПРИНЯТЬ [22831621:106727043679]
:ВПЕРЕД ПРИНЯТЬ [0:0]
: ВЫВОД ПРИНЯТ [13832420:3964757167]
:LIBVIRT_INP - [0:0]
:LIBVIRT_OUT - [0:0]
:LIBVIRT_FWO - [0:0]
:LIBVIRT_FWI - [0:0]
:LIBVIRT_FWX - [0:0]
-A FORWARD -s 10.0.2.0/24 -d 10.0.1.0/24 -i enp0s31f6 -m policy --dir in --pol ipsec --reqid 1 --proto esp -j ПРИНЯТЬ
-A FORWARD -s 10.0.1.0/24 -d 10.0.2.0/24 -o enp0s31f6 -m policy --dir out --pol ipsec --reqid 1 --proto esp -j ПРИНЯТЬ
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 53 -j ПРИНЯТЬ
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 53 -j ПРИНЯТЬ
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 67 -j ПРИНЯТЬ
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 67 -j ПРИНЯТЬ
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 53 -j ПРИНЯТЬ
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 53 -j ПРИНЯТЬ
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 68 -j ПРИНЯТЬ
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 68 -j ПРИНЯТЬ
-A LIBVIRT_FWO -s 192.168.122.0/24 -i virbr0 -j ПРИНЯТЬ
-A LIBVIRT_FWO -i virbr0 -j REJECT --reject-with-icmp-port-unreachable
-A LIBVIRT_FWI -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
-A LIBVIRT_FWI -o virbr0 -j REJECT --reject-with-icmp-port-unreachable
-A LIBVIRT_FWX -i virbr0 -o virbr0 -j ПРИНЯТЬ
СОВЕРШИТЬ
Ginnungagap avatar
флаг gu
Можете ли вы добавить, какой IP-адрес вы пингуете и с какого IP-адреса вы пытаетесь связаться с Samba?
joe_shmo avatar
флаг in
Конечно. Не уверен, хорошо ли это показано на сетевой диаграмме, или я плохо объяснил, но я пингую от клиента по адресу 10.0.2.1 к серверу StrongSwan/Samba по адресу 10.0.1.1. Он достигает сервера и расшифровывается, но не возвращается к клиенту.И я хотел бы, чтобы сервер Samba был доступен с того же 10.0.1.1, что и сервер StrongSwan, поскольку это тот же физический компьютер в той же системе RHEL.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.