This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
решение_freeipa [2025/10/14 08:54] val [Создание service principal] |
решение_freeipa [2025/12/29 08:57] (current) val [Динамический DNS] |
||
|---|---|---|---|
| Line 28: | Line 28: | ||
| # service docker restart | # service docker restart | ||
| - | docker run --userns=host ... | + | # ###docker run --userns=host ... |
| - | cat docker-compose.yml | + | # ###cat docker-compose.yml |
| ... | ... | ||
| userns_mode: 'host' | userns_mode: 'host' | ||
| ... | ... | ||
| - | docker run --name freeipa-server-container -ti -h ipa.example.test --read-only -v /var/lib/ipa-data:/data:Z freeipa/freeipa-server:centos-9-stream | + | # ###docker run --name freeipa-server-container -ti -h ipa.example.test --read-only -v /var/lib/ipa-data:/data:Z freeipa/freeipa-server:centos-9-stream |
| # ###rm -rf /opt/freeipa-data/ | # ###rm -rf /opt/freeipa-data/ | ||
| Line 67: | Line 67: | ||
| stdin_open: true | stdin_open: true | ||
| environment: | environment: | ||
| - | IPA_SERVER_HOSTNAME: server.corp13.un | + | IPA_SERVER_HOSTNAME: server.corpX.un |
| - | IPA_SERVER_IP: 192.168.13.10 | + | IPA_SERVER_IP: 192.168.X.10 |
| DNS: 172.16.1.254 | DNS: 172.16.1.254 | ||
| TZ: "Europe/Moscow" | TZ: "Europe/Moscow" | ||
| - | IPA_DOMAIN_NAME: corp13.un | + | IPA_DOMAIN_NAME: corpX.un |
| - | IPA_REALM_NAME: CORP13.UN | + | IPA_REALM_NAME: CORPX.UN |
| PASSWORD: strongpassword | PASSWORD: strongpassword | ||
| command: | command: | ||
| - | - --domain=corp13.un | + | - --domain=corpX.un |
| - | - --realm=CORP13.UN | + | - --realm=CORPX.UN |
| - --admin-password=strongpassword | - --admin-password=strongpassword | ||
| - --http-pin=strongpassword | - --http-pin=strongpassword | ||
| Line 113: | Line 113: | ||
| server# docker exec -ti freeipa-server systemctl reload named | server# docker exec -ti freeipa-server systemctl reload named | ||
| - | server# host server.corp13.un 192.168.13.10 | + | server# host server.corpX.un 192.168.X.10 |
| - | gate# host ya.ru 192.168.13.10 | + | gate# host ya.ru 192.168.X.10 |
| </code> | </code> | ||
| Line 137: | Line 137: | ||
| client1# hostnamectl hostname client1.corpX.un | client1# hostnamectl hostname client1.corpX.un | ||
| - | clientN:~# cat /etc/hosts | + | client1# cat /etc/hosts |
| </code><code> | </code><code> | ||
| 127.0.0.1 localhost | 127.0.0.1 localhost | ||
| Line 143: | Line 143: | ||
| </code><code> | </code><code> | ||
| client1# ipa-client-install --mkhomedir --enable-dns-updates | client1# ipa-client-install --mkhomedir --enable-dns-updates | ||
| + | ...: no | ||
| + | ...: yes | ||
| + | ...: admin | ||
| + | ...: ..... | ||
| # systemctl status sssd | # systemctl status sssd | ||
| Line 168: | Line 172: | ||
| gate# kinit admin | gate# kinit admin | ||
| - | gate# ipa service-add HTTP/gate.corp13.un | + | gate# ipa service-add HTTP/gate.corpX.un |
| - | gate# ipa-getkeytab -p HTTP/gate.corp13.un -k /etc/krb5.keytab | + | gate# ipa-getkeytab -p HTTP/gate.corpX.un -k /etc/krb5.keytab |
| gate# klist -ek /etc/krb5.keytab | gate# klist -ek /etc/krb5.keytab | ||
| Line 202: | Line 206: | ||
| ==== Создание ключа и сертификата для gitlab на той же системе ==== | ==== Создание ключа и сертификата для gitlab на той же системе ==== | ||
| <code> | <code> | ||
| - | server.corp13.un:~# openssl genrsa -out /etc/gitlab/ssl/$(hostname).key 2048 | + | server.corpX.un:~# openssl genrsa -out /etc/gitlab/ssl/$(hostname).key 2048 |
| - | server.corp13.un:~# openssl req -new -key /etc/gitlab/ssl/$(hostname).key -subj '/CN=server.corp13.un/O=CORP13.UN' -addext 'subjectAltName=DNS:server.corp13.un' -out /opt/freeipa-data/server-gitlab.req | + | server.corpX.un:~# openssl req -new -key /etc/gitlab/ssl/$(hostname).key -subj '/CN=server.corpX.un/O=CORPX.UN' -addext 'subjectAltName=DNS:server.corpX.un' -out /opt/freeipa-data/server-gitlab.req |
| - | [root@freeipa-server /]# ipa cert-request /data/server-gitlab.req --principal=HTTP/server.corp13.un --certificate-out=/data/server-gitlab.crt | + | [root@freeipa-server /]# ipa cert-request /data/server-gitlab.req --principal=HTTP/server.corpX.un --certificate-out=/data/server-gitlab.crt |
| - | server.corp13.un:~# cp /opt/freeipa-data/server-gitlab.crt -v /etc/gitlab/ssl/$(hostname).crt | + | server.corpX.un:~# cp /opt/freeipa-data/server-gitlab.crt -v /etc/gitlab/ssl/$(hostname).crt |
| </code> | </code> | ||
| ==== Создание ключа и сертификата для стороннего сервиса ==== | ==== Создание ключа и сертификата для стороннего сервиса ==== | ||
| Line 215: | Line 219: | ||
| [root@freeipa-server /]# | [root@freeipa-server /]# | ||
| - | ipa dnsrecord-add corp13.un keycloak --a-rec="192.168.13.64" | + | ipa dnsrecord-add corpX.un keycloak --a-rec="192.168.X.64" |
| - | ipa host-add keycloak.corp13.un | + | sleep 5 |
| - | ipa service-add HTTP/keycloak.corp13.un | + | |
| + | ipa host-add keycloak.corpX.un | ||
| + | ipa service-add HTTP/keycloak.corpX.un | ||
| openssl genrsa -out /data/keycloak.key 2048 | openssl genrsa -out /data/keycloak.key 2048 | ||
| - | openssl req -new -key /data/keycloak.key -subj '/CN=keycloak.corp13.un/O=CORP13.UN' -addext 'subjectAltName=DNS:keycloak.corp13.un' -out /data/keycloak.req | + | openssl req -new -key /data/keycloak.key -subj '/CN=keycloak.corpX.un/O=CORPX.UN' -addext 'subjectAltName=DNS:keycloak.corpX.un' -out /data/keycloak.req |
| - | ipa cert-request /data/keycloak.req --principal=HTTP/keycloak.corp13.un --certificate-out=/data/keycloak.crt | + | ipa cert-request /data/keycloak.req --principal=HTTP/keycloak.corpX.un --certificate-out=/data/keycloak.crt |
| server# scp /opt/freeipa-data/keycloak.* kube1:/tmp/ | server# scp /opt/freeipa-data/keycloak.* kube1:/tmp/ | ||
| + | </code> | ||
| + | |||
| + | ==== Поддержка ACME ==== | ||
| + | |||
| + | * [[https://www.freeipa.org/page/V4/ACME|FreeIPA Automated Certificate Management Environment]] | ||
| + | |||
| + | <code> | ||
| + | [root@freeipa-server /]# | ||
| + | |||
| + | ipa-acme-manage enable | ||
| + | |||
| + | ipa-acme-manage status | ||
| </code> | </code> | ||
| ===== Управление DNS ===== | ===== Управление DNS ===== | ||
| <code> | <code> | ||
| - | ipa dnsrecord-add corp13.un kube1 --a-rec="192.168.13.221" | + | server# ###docker exec -ti freeipa-server bash |
| - | ipa dnsrecord-add corp13.un kube2 --a-rec="192.168.13.222" | + | |
| - | ipa dnsrecord-add corp13.un kube3 --a-rec="192.168.13.223" | + | [root@freeipa-server /]# kinit admin |
| - | ipa dnsrecord-add corp13.un kube4 --a-rec="192.168.13.224" | + | </code><code> |
| + | ipa dnsrecord-add corpX.un kube1 --a-rec="192.168.X.221" | ||
| + | ipa dnsrecord-add corpX.un kube2 --a-rec="192.168.X.222" | ||
| + | ipa dnsrecord-add corpX.un kube3 --a-rec="192.168.X.223" | ||
| + | ipa dnsrecord-add corpX.un kube4 --a-rec="192.168.X.224" | ||
| </code> | </code> | ||
| ===== Работа с LDAP ===== | ===== Работа с LDAP ===== | ||
| * [[Авторизация с использованием LDAP сервера]] | * [[Авторизация с использованием LDAP сервера]] | ||
| + | |||
| + | ===== Динамический DNS ===== | ||
| + | |||
| + | * [[https://astrid.tech/2021/04/18/0/k8s-freeipa-dns/|How to set up Dynamic DNS on FreeIPA for your Kubernetes Cluster]] | ||
| + | * [[https://www.ipamworldwide.com/ipam/update-policy.html|BIND update-policy option]] | ||
| + | |||
| + | <code> | ||
| + | [root@freeipa-server ~]# tsig-keygen cert-manager | tee /data/etc/named/cert-manager.key | ||
| + | |||
| + | server.corp13.un:~# cat /opt/freeipa-data/etc/named/ipa-ext.conf | ||
| + | ... | ||
| + | include "/data/etc/named/cert-manager.key"; | ||
| + | |||
| + | [root@freeipa-server ~]# rndc reload | ||
| + | |||
| + | Политика обновления BIND | ||
| + | ...; grant cert-manager subdomain corp13.un. TXT; | ||
| + | |||
| + | [root@freeipa-server ~]# nsupdate -k /data/etc/named/cert-manager.key | ||
| + | server 127.0.0.1 | ||
| + | zone corp13.un | ||
| + | update add _acme-challenge.gitlab.corp13.un. 30 IN TXT "your_txt_record_data 1" | ||
| + | send | ||
| + | </code> | ||
| + | |||
| + | ===== Отладка ===== | ||
| + | |||
| + | * [[https://www.freeipa.org/page/Centralized_Logging|FreeIPA Centralized Logging]] | ||
| + | <code> | ||
| + | [root@freeipa-server /]# find /data/var/log/ -mmin -2 -type f -ls | ||
| + | </code> | ||
| ===== Дополнительные материалы ==== | ===== Дополнительные материалы ==== | ||
| Line 240: | Line 293: | ||
| ==== Попытка запуска в привилегированном режиме ==== | ==== Попытка запуска в привилегированном режиме ==== | ||
| <code> | <code> | ||
| - | server.corp13.un:~/freeipa# cat docker-compose.yml | + | server.corpX.un:~/freeipa# cat docker-compose.yml |
| services: | services: | ||
| freeipa: | freeipa: | ||
| Line 249: | Line 302: | ||
| hostname: server | hostname: server | ||
| # hostname: freeipa-server | # hostname: freeipa-server | ||
| - | # domainname: server.corp13.un | + | # domainname: server.corpX.un |
| container_name: freeipa-server | container_name: freeipa-server | ||
| network_mode: host | network_mode: host | ||
| Line 256: | Line 309: | ||
| dns: | dns: | ||
| # - 172.16.1.254 | # - 172.16.1.254 | ||
| - | - 192.168.13.10 | + | - 192.168.X.10 |
| restart: unless-stopped | restart: unless-stopped | ||
| tty: true | tty: true | ||
| stdin_open: true | stdin_open: true | ||
| environment: | environment: | ||
| - | IPA_SERVER_HOSTNAME: server.corp13.un | + | IPA_SERVER_HOSTNAME: server.corpX.un |
| - | IPA_SERVER_IP: 192.168.13.10 | + | IPA_SERVER_IP: 192.168.X.10 |
| # DNS: 172.16.1.254 | # DNS: 172.16.1.254 | ||
| - | DNS: 192.168.13.10 | + | DNS: 192.168.X.10 |
| TZ: "Europe/Moscow" | TZ: "Europe/Moscow" | ||
| - | IPA_DOMAIN_NAME: corp13.un | + | IPA_DOMAIN_NAME: corpX.un |
| - | IPA_REALM_NAME: CORP13.UN | + | IPA_REALM_NAME: CORPX.UN |
| PASSWORD: strongpassword | PASSWORD: strongpassword | ||
| command: | command: | ||
| - -U | - -U | ||
| - | - --domain=corp13.un | + | - --domain=corpX.un |
| - | - --realm=CORP13.UN | + | - --realm=CORPX.UN |
| - --admin-password=strongpassword | - --admin-password=strongpassword | ||
| - --http-pin=strongpassword | - --http-pin=strongpassword | ||
| Line 300: | Line 353: | ||
| - | server.corp13.un:~/freeipa# cat /opt/freeipa-data/var/log/ipaclient-install.log | + | server.corpX.un:~/freeipa# cat /opt/freeipa-data/var/log/ipaclient-install.log |
| ... | ... | ||
| 2025-09-29T05:28:56Z DEBUG The ipa-client-install command failed, exception: KerberosError: No valid Negotiate header in server response | 2025-09-29T05:28:56Z DEBUG The ipa-client-install command failed, exception: KerberosError: No valid Negotiate header in server response | ||
| 2025-09-29T05:28:56Z ERROR No valid Negotiate header in server response | 2025-09-29T05:28:56Z ERROR No valid Negotiate header in server response | ||
| 2025-09-29T05:28:56Z ERROR The ipa-client-install command failed. See /var/log/ipaclient-install.log for more information | 2025-09-29T05:28:56Z ERROR The ipa-client-install command failed. See /var/log/ipaclient-install.log for more information | ||
| + | </code> | ||
| + | ==== Черновик ==== | ||
| + | <code> | ||
| + | ipa dnsrecord-add corp26.un gitlab --a-rec="192.168.26.65" | ||
| + | sleep 5 | ||
| + | |||
| + | ipa host-add gitlab.corp26.un | ||
| + | ipa service-add HTTP/gitlab.corp26.un | ||
| + | |||
| + | rndc-confgen -a -A hmac-sha512 -k cert-manager -c /data/etc/named/cert-manager.key | ||
| + | [root@freeipa-server ~]# chown root:named /data/etc/named/cert-manager.key | ||
| + | [root@freeipa-server ~]# chmod 640 /data/etc/named/cert-manager.key | ||
| + | |||
| + | /data/etc/named/ipa-ext.conf | ||
| + | ... | ||
| + | include "/data/etc/named/cert-manager.key"; | ||
| + | |||
| + | grant cert-manager subdomain corp26.un ANY; | ||
| + | |||
| + | |||
| + | nsupdate -k /data/etc/named/cert-manager.key | ||
| + | server 127.0.0.1 | ||
| + | server 172.18.0.2 | ||
| + | zone corp26.un | ||
| + | update add _acme-challenge.gitlab.corp26.un. 30 IN TXT "your_txt_record_data 1" | ||
| + | send | ||
| + | |||
| + | update add test.corp26.un. 30 IN A 80.80.80.80 | ||
| + | |||
| + | freeipa TSIG error with server: tsig indicates error update failed: NOTAUTH(BADKEY) | ||
| + | |||
| + | # > server 195.19.32.2 | ||
| + | # > zone _acme-challenge.anysite.bmstu.ru | ||
| + | # > update add _acme-challenge.anysite.bmstu.ru. 30 IN TXT "your_txt_record_data 1" | ||
| + | # > send | ||
| + | # > update del _acme-challenge.anysite.bmstu.ru. 30 IN TXT "your_txt_record_data 1" | ||
| + | # > send | ||
| + | # > quit | ||
| + | |||
| + | |||
| + | ==== | ||
| + | ipa dnsrecord-add corp26.un keycloak --a-rec="192.168.26.64" | ||
| + | sleep 5 | ||
| + | |||
| + | ipa host-add keycloak.corp26.un | ||
| + | ipa service-add HTTP/keycloak.corp26.un | ||
| + | |||
| + | openssl genrsa -out /data/keycloak.key 2048 | ||
| + | openssl req -new -key /data/keycloak.key -subj '/CN=keycloak.corp26.un/O=CORP26.UN' -addext 'subjectAltName=DNS:keycloak.corp26.un' -out /data/keycloak.req | ||
| + | ipa cert-request /data/keycloak.req --principal=HTTP/keycloak.corp26.un --certificate-out=/data/keycloak.crt | ||
| + | |||
| + | =============== | ||
| + | |||
| + | ipa dnsrecord-add corp26.un apwebd --a-rec="192.168.26.64" | ||
| + | sleep 5 | ||
| + | ipa host-add apwebd.corp26.un | ||
| + | ipa service-add HTTP/apwebd.corp26.un | ||
| </code> | </code> | ||