Powtarzającym się problemem w operacjach połączonych i koalicyjnych jest izolowana wyspa TAK: Pododdział Alpha ma własny TAK Server działający w strefie przedniego obszaru, Pododdział Bravo ma oddzielny serwer dwa szczeble wyżej, a żaden z nich nie widzi śladów drugiego na mapie. Federacja TAK Server to protokół zaprojektowany do rozwiązania tego problemu — łączy dwie lub więcej niezależnych instancji TAK Server, dzięki czemu strumienie zdarzeń CoT przepływają dwukierunkowo przez granicę, dając każdemu operatorowi ujednolicony wspólny obraz operacyjny (COP) bez przekształcania oddzielnych serwerów w pojedynczy punkt awarii. Niniejszy przewodnik obejmuje pełną ścieżkę federacji: decyzje architektoniczne, konfigurację REST API CloudTAK, konfigurację XML dla starszego TAK Server, filtry grup i typów CoT, bezpieczeństwo mTLS oraz systematyczną procedurę testowania poprawności propagacji śladów.
Czym jest federacja TAK Server i dlaczego ma znaczenie
Federacja to protokół serwer-serwer działający przez TCP port 9000 z wzajemnym TLS. Gdy dwa serwery TAK są sfederowane, każdy z nich ustanawia wychodzące połączenie TCP/TLS do portu federacji drugiego i zaczyna przekazywać wybrane zdarzenia CoT odbierane od własnych klientów. W efekcie żołnierz z ATAK podłączony do Serwera A widzi, w czasie rzeczywistym, ślady pododdziałów, których klienci ATAK są podłączeni do Serwera B — i odwrotnie. Po stronie klienta nie są wymagane żadne zmiany konfiguracji: federacja jest wyłącznie funkcją administracyjną serwera.
Przypadki operacyjne, które wymagają federacji zamiast jednego ujednoliconego serwera, obejmują:
- Wdrożenia wieloszczeblowe — serwer kompanii na linii i serwer batalionu na tyłach potrzebują wspólnej świadomości sytuacyjnej, bez przesyłania całego ruchu kompanii na tyły.
- Operacje koalicyjne — siły partnerskie działają na oddzielnych serwerach pod oddzielnymi organami administracyjnymi; federacja umożliwia udostępnianie wybranych śladów bez przyznawania pełnego dostępu administracyjnego do serwera którejkolwiek ze stron.
- Odporność przez projekt — dwa niezależne serwery obsługują podzbiory klientów; jeśli jeden ulegnie awarii, drugi nadal działa dla swoich klientów, a federacja przywraca się automatycznie po przywróceniu łączności.
- Zarządzanie przepustowością — filtry na łączu federacyjnym przepuszczają przez granicę tylko operacyjnie istotne typy CoT, zmniejszając ruch w ograniczonych łączach taktycznych.
Architektura federacji: peer-to-peer vs. hub-and-spoke
Przed skonfigurowaniem jakiegokolwiek łącza należy zaplanować topologię federacji. Wybór między peer-to-peer a hub-and-spoke ma istotne konsekwencje operacyjne i techniczne.
Federacja peer-to-peer
W topologii peer-to-peer każdy serwer TAK utrzymuje bezpośrednie łącze federacyjne z każdym innym serwerem w sieci. Przy dwóch serwerach jest to jedno łącze. Przy pięciu serwerach — dziesięć łączy (n × (n−1) / 2), z których każde wymaga wymiany certyfikatów, reguł zapory sieciowej i niezależnego monitorowania. Zaletą jest to, że ślad pokonuje jeden hop federacyjny od źródła do celu: opóźnienie jest minimalne, a utrata któregokolwiek serwera dotyczy tylko bezpośrednio do niego podłączonych klientów.
Federacja hub-and-spoke
W topologii hub-and-spoke centralny serwer hub utrzymuje łącza federacyjne ze wszystkimi serwerami spoke; serwery spoke łączą się tylko z hubem. Ślad z sieci Spoke A trafia do Huba, który przekazuje go do Spoke B. Dodaje to jeden hop federacyjny, zwiększając opóźnienie end-to-end (zazwyczaj 50–150 ms dla dobrze połączonego huba), ale znacznie zmniejsza nakład konfiguracyjny. Dla trzech lub więcej serwerów hub-and-spoke jest generalnie preferowany w środowiskach operacyjnych.
Konfiguracja federacji CloudTAK
CloudTAK udostępnia zarządzanie federacją wyłącznie przez REST API. Wszystkie łącza federacyjne są przechowywane w bazie danych CloudTAK i zarządzane przez uwierzytelnione wywołania API.
Konfigurowanie wychodzącego łącza federacyjnego
export ADMIN_TOKEN=$(curl -s -X POST https://tak.yourdomain.com:8443/api/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"YOUR_ADMIN_PASSWORD"}' | jq -r '.token')
curl -s -X POST https://tak.yourdomain.com:8443/api/federation \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "BN-TAK-Server",
"address": "tak.battalion.mil",
"port": 9000,
"protocol": "tls",
"ca_cert": "/ssl/remote-ca.pem",
"bidirectional": true,
"enabled": true
}'
Używanie federation.json dla infrastruktury jako kodu
{
"version": 1,
"peers": [
{
"name": "BN-TAK-Server",
"address": "tak.battalion.mil",
"port": 9000,
"ca_cert": "/ssl/remote-ca.pem",
"bidirectional": true,
"filters": {
"cot_types": ["a-f-", "a-n-", "t-x-m-c"],
"groups": ["Blue Force", "Command"]
}
}
]
}
Konfiguracja federacji starszego TAK Server
Starszy TAK Server konfiguruje federację przez CoreConfig.xml i federation-server.xml, oba znajdujące się w /opt/tak/.
<federation port="9000" v1Enabled="true" v2Enabled="true"
useV1="false" useV2="true"
allowMissionPackageUpload="false"/>
keytool -import \
-trustcacerts \
-alias cloudtak-ca \
-file /opt/tak/ssl/cloudtak-ca.pem \
-keystore /opt/tak/certs/files/fed-truststore.jks \
-storepass atakatak
systemctl restart takserver
Filtrowanie: kontrola tego, co przekracza granicę federacyjną
Filtry umożliwiają administratorom przepuszczanie przez granicę federacyjną tylko określonych typów CoT, grup lub wzorców callsign, zmniejszając zużycie przepustowości i zapobiegając niezamierzonemu udostępnianiu informacji.
| Prefiks typu CoT | Opis | Typowe zastosowanie w federacji |
|---|---|---|
a-f- |
Atom przyjazny | Zawsze zezwalaj |
a-n- |
Atom neutralny | Zezwalaj, jeśli wspólny COP obejmuje ślady neutralne |
a-h- |
Atom wrogi | Zezwalaj tylko jeśli klasyfikacja na to pozwala |
t-x-m-c |
Wiadomość czat | Zezwalaj na czat między pododdziałami |
b- |
Bits (kanały sensorów) | Blokuj domyślnie |
Bezpieczeństwo: wzajemny TLS, przypinanie certyfikatów i unieważnianie
Podstawa bezpieczeństwa: Każde operacyjne łącze federacyjne musi używać wzajemnego TLS. Nigdy nie wdrażaj federacji z certyfikatami self-signed, chyba że ścieżka sieciowa jest fizycznie izolowana.
W przypadku CloudTAK wzajemny TLS na porcie federacyjnym jest domyślnie włączony, gdy w wywołaniu API federacji podany jest ca_cert. Dla starszego TAK Server ustaw clientAuth="need" na łączniku federacyjnym w CoreConfig.xml. Przypnij odcisk palca zdalnego CA poleceniem:
openssl x509 -in remote-ca.pem -noout -fingerprint -sha256 \
| sed 's/://g' | awk -F= '{print $2}'
Testowanie federacji: iniekcja CoT, propagacja śladów i opóźnienie
Nigdy nie zakładaj, że łącze federacyjne działa, bo punkt końcowy statusu zwraca connected. Jedynym wiarygodnym testem jest end-to-end iniekcja śladów i weryfikacja.
curl -s https://tak.yourdomain.com:8443/api/federation \
-H "Authorization: Bearer $ADMIN_TOKEN" | jq '.[] | {name, status, events_forwarded, events_received}'
Typowe problemy: niezgodność certyfikatów, NAT, przesunięcie zegara i zapory sieciowe
Status łącza federacyjnego wyświetla "connecting" w nieskończoność. Sprawdź, czy port 9000 jest otwarty: openssl s_client -connect remote-server:9000.
Łącze wyświetla "connected", ale ślady nie pojawiają się. Najczęstszą przyczyną jest przesunięcie zegara — sprawdź date -u na obu serwerach. Jeśli różnią się o więcej niż 5 minut, zdarzenia CoT będą odrzucane jako nieaktualne.
Federacja między CloudTAK a starszym TAK Server kończy się błędem "protocol version mismatch". Upewnij się, że starszy TAK Server jest skonfigurowany dla Federation v2 i ma wersję 4.8 lub nowszą.