сопоставление ipv4 с маршрутизируемыми адресами ipv6 (OpenVPN, NAT, iptables, nftables)

Вы пробовали logrotate?man logrotate

Вот руководство, которое может помочь. Как использовать logrotate для управления файлами журналов

1
27.04.2021, 17:14
2 ответа

То, что вы ищете, называется SIIT. Вы можете использовать его для сопоставления адресов IPv4 и IPv6 без сохранения состояния. Взгляните на модуль Linux по адресу https://jool.mx.

1
28.04.2021, 22:50

Я предлагаю начать с преобразования IPv4 в IPv6 с помощью простого сценария bash. Входной файл (ipv4.txt )будет содержать идентификаторы сайтов и подсети IPv4 (в нотации CIDR ). Идентификаторы сайтов и подсети разделены двоеточием (:). Идентификатор сайта ограничен двумя байтами (и только двумя символами ), поскольку длина одного квартета IPv6 составляет два байта. Это означает, что каждый квартет IPv6 представлен четырьмя шестнадцатеричными цифрами.

$ cat ipv4.txt
US:192.168.1.0/28
C2:10.20.30.224/29
NL:172.30.50.128/28
UK:192.168.1.0/28

Из приведенного выше вывода видно, что Site-USи Site-UKимеют конфликтующие подсети, но преобразование IPv6 решит проблему. Когда у вас есть все сокращенные идентификаторы сайтов с соответствующими подсетями, вы можете выполнить следующий скрипт:

#!/bin/bash
# Read IPv4 subnets from a text file ipv4.txt
echo "Converted IP addresses" > ipv6.txt
echo "======================" >> ipv6.txt
while read x; do
        # Declare site as TEXT value
        a=$(echo -n "$x" | cut -d ":" -f 1)
        # Declare site as HEX value
        b=$(echo -n "$a" | xxd -p)
        # Declare subnet
        subnet=$(echo -n "$x" | cut -d ":" -f 2)
        # Expand an IPv4 subnet using prips command and replace periods (.)
        # with single space and store the results in temp.txt file
        # We must remove periods (.) before we convert IPv4 to HEX values
        prips $subnet | awk '{print "'$site' " $0}'| tr '.' ' ' > temp.txt
        # Convert all single IPv4 addresses to HEX using a while loop
        echo >> ipv6.txt
        echo "Site: $a" >> ipv6.txt
        echo "=========================" >> ipv6.txt
        while read y; do
        # Append results to a text file ipv6.txt (Note: I have hardcoded 2a03:1000)
        ip=$(echo $y | tr ' ' '.')
        printf '%x\n' $y | tr '\n' ':' | awk '{print "'$ip' - " "2a03:1000:'$b'::" $0}' | sed 's/.$//' >> ipv6.txt
        done < temp.txt
done < ipv4.txt

Вывод должен выглядеть примерно так:

$ cat ipv6.txt
Converted IP addresses
======================

Site: US
=========================
192.168.1.0 - 2a03:1000:5553::c0:a8:1:0
192.168.1.1 - 2a03:1000:5553::c0:a8:1:1
192.168.1.2 - 2a03:1000:5553::c0:a8:1:2
192.168.1.3 - 2a03:1000:5553::c0:a8:1:3
192.168.1.4 - 2a03:1000:5553::c0:a8:1:4
192.168.1.5 - 2a03:1000:5553::c0:a8:1:5
192.168.1.6 - 2a03:1000:5553::c0:a8:1:6
192.168.1.7 - 2a03:1000:5553::c0:a8:1:7
192.168.1.8 - 2a03:1000:5553::c0:a8:1:8
192.168.1.9 - 2a03:1000:5553::c0:a8:1:9
192.168.1.10 - 2a03:1000:5553::c0:a8:1:a
192.168.1.11 - 2a03:1000:5553::c0:a8:1:b
192.168.1.12 - 2a03:1000:5553::c0:a8:1:c
192.168.1.13 - 2a03:1000:5553::c0:a8:1:d
192.168.1.14 - 2a03:1000:5553::c0:a8:1:e
192.168.1.15 - 2a03:1000:5553::c0:a8:1:f

Site: C2
=========================
10.20.30.224 - 2a03:1000:4332::a:14:1e:e0
10.20.30.225 - 2a03:1000:4332::a:14:1e:e1
10.20.30.226 - 2a03:1000:4332::a:14:1e:e2
10.20.30.227 - 2a03:1000:4332::a:14:1e:e3
10.20.30.228 - 2a03:1000:4332::a:14:1e:e4
10.20.30.229 - 2a03:1000:4332::a:14:1e:e5
10.20.30.230 - 2a03:1000:4332::a:14:1e:e6
10.20.30.231 - 2a03:1000:4332::a:14:1e:e7

Site: NL
=========================
172.30.50.128 - 2a03:1000:4e4c::ac:1e:32:80
172.30.50.129 - 2a03:1000:4e4c::ac:1e:32:81
172.30.50.130 - 2a03:1000:4e4c::ac:1e:32:82
172.30.50.131 - 2a03:1000:4e4c::ac:1e:32:83
172.30.50.132 - 2a03:1000:4e4c::ac:1e:32:84
172.30.50.133 - 2a03:1000:4e4c::ac:1e:32:85
172.30.50.134 - 2a03:1000:4e4c::ac:1e:32:86
172.30.50.135 - 2a03:1000:4e4c::ac:1e:32:87
172.30.50.136 - 2a03:1000:4e4c::ac:1e:32:88
172.30.50.137 - 2a03:1000:4e4c::ac:1e:32:89
172.30.50.138 - 2a03:1000:4e4c::ac:1e:32:8a
172.30.50.139 - 2a03:1000:4e4c::ac:1e:32:8b
172.30.50.140 - 2a03:1000:4e4c::ac:1e:32:8c
172.30.50.141 - 2a03:1000:4e4c::ac:1e:32:8d
172.30.50.142 - 2a03:1000:4e4c::ac:1e:32:8e
172.30.50.143 - 2a03:1000:4e4c::ac:1e:32:8f

Site: UK
=========================
192.168.1.0 - 2a03:1000:554b::c0:a8:1:0
192.168.1.1 - 2a03:1000:554b::c0:a8:1:1
192.168.1.2 - 2a03:1000:554b::c0:a8:1:2
192.168.1.3 - 2a03:1000:554b::c0:a8:1:3
192.168.1.4 - 2a03:1000:554b::c0:a8:1:4
192.168.1.5 - 2a03:1000:554b::c0:a8:1:5
192.168.1.6 - 2a03:1000:554b::c0:a8:1:6
192.168.1.7 - 2a03:1000:554b::c0:a8:1:7
192.168.1.8 - 2a03:1000:554b::c0:a8:1:8
192.168.1.9 - 2a03:1000:554b::c0:a8:1:9
192.168.1.10 - 2a03:1000:554b::c0:a8:1:a
192.168.1.11 - 2a03:1000:554b::c0:a8:1:b
192.168.1.12 - 2a03:1000:554b::c0:a8:1:c
192.168.1.13 - 2a03:1000:554b::c0:a8:1:d
192.168.1.14 - 2a03:1000:554b::c0:a8:1:e
192.168.1.15 - 2a03:1000:554b::c0:a8:1:f

Когда у вас есть все адреса IPv6, вы можете передать их в Linux iptables / OpenVPN или коммерческий брандмауэр / решение VPN.

Ресурсы:Объяснение IPv6 , команда prips ,команда xxd

1
28.04.2021, 22:50

Теги

Похожие вопросы