Правильная маршрутизация IPv6

Первый вариант:

Для одного файла:

datamash -W transpose < input.txt | sed 's/0\t0/9\t9/' | datamash transpose

Для многих файлов сделайте то же самое в цикле:

for i in *; do datamash -W transpose < "$i" |
sed 's/0\t0/9\t9/' |
datamash transpose > "new_$i"; done

Этот цикл создаст новый, измененный файл для каждого файла с добавленным префиксом «новый _». Затем вы можете удалить все старые файлы и удалить префикс «новые _» из имен файлов.

Второй вариант:

Это решение для одного файла, для нескольких файлов используйте цикл, как и в предыдущем варианте.

tr '\n' '\t' < input.txt |
awk '{
    num = NF / 2;
    for(up = 1; up <= NF; up++) {
        if(up <= num) {
            low = num + up;
            if(!$up && !$low) {
                $up = 9;    
                $low = 9;
            }
        }

        printf "%s\t", $up;

        if(up % num == 0) 
            print "";
    }
}'

Пояснение

  1. tr '\n' '\t' < input.txt-соединить две строки вместе.
  2. awk
    • одновременно проверяет один элемент из первой строки и соседний элемент из второй строки, как:1 и 316 , 2 и 317 , 3 и 318 , и так далее.
    • если оба элемента равны 0 , они изменяются на 9 .
    • печатать поля в порядке-1, 2, 3, 4... 628, 629, 630 .
    • Каждый раз, когда номер элемента кратен количеству элементов в строке, добавляется новая строка.

Вход

1   0   0   0   0   0   0   0   0   0   1   2   1
0   0   0   0   0   0   0   0   0   0   0   0   0

Выход

1   9   9   9   9   9   9   9   9   9   1   2   1
0   9   9   9   9   9   9   9   9   9   0   0   0
2
12.02.2020, 16:38
1 ответ

Получается, что мое предположение о неправильной маршрутизации оказалось верным. Вот как я решил эту проблему, используя только systemd -networkd и radvd, хотя, на мой вкус, требуется много ручной настройки:

На pi добавьте в конфигурацию следующие вещи:

Сделать ответ pi на запросы соседей по IP компьютера:

eth0.network (Connected to the internet)

IPv6ProxyNDP=true
IPv6ProxyNDPAddress=2001:...:5bbf

Заставляет Pi перенаправлять весь трафик для компьютера на локальный IPv6-адрес компьютера.:

eth1.network (connected to pc)

[Route]
Destination=2001:...:5bbf
Gateway=fe80:...:d60f

Заставляет устройства, получающие IP-адрес, перенаправлять весь трафик для глобального IP-адреса Pi через локальный IP-адрес Pi:

radvd.conf

interface eth1
{
    AdvSendAdvert on;
    prefix 2001:...::/64
    {
        AdvOnLink on;
        AdvAutonomous on;
    };
    route 2001:...::/64{};
};

Пока адреса ipv6 не меняются, у меня это работает. Я не нашел решения для изменения этих адресов без ручной настройки файлов, но, по крайней мере, это что-то.

0
28.04.2021, 23:24

Теги

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