Довольно прямолинейно:
awk '{ for(i=2; i <= NF; i++) print $1, $i}' < input
В каждой строке зациклить от 2 до последнего поля(N
количество F
полей ), вывести поле 1 и зацикленное поле.
Оказывается, проблема была в другом. Я использую Ansible для настройки этой виртуальной машины Server , и в конце процесса настройки мне нужно запустить службу SystemD для WireGuard.
Проблема заключалась в том, что для state
было установлено значение started
, а не restarted
. Это означает, что когда я запускал сценарий Ansible несколько раз, например. чтобы добавить дополнительные настройки, такие как правила брандмауэра и т. д., эта служба WireGuard никогда не учитывала новую конфигурацию...
Это правильный фрагмент скрипта Ansible для всегдаго перезапуска службы SystemD для WireGuard на сервере:
# `systemctl enable wg-quick@wg0`
- name: REStart WireGuard and enable it on boot
systemd:
name: wg-quick@wg0
enabled: yes
state: restarted
На данный момент я сомневаюсь, что это нужно:
ufw route allow in on wg0 out on eth0
ufw route allow in on eth0 out on wg0
Учитывая, что настройки iptables
уже установлены в файле конфигурации WireGuard на сервере . Но я не пытался удалить правила ufw
, чтобы посмотреть, что произойдет.
Поскольку весь ваш трафик направляется через VPN (, включая DNS ), вам необходимо указать DNS-сервер, к которому вы можете подключиться.
Например, на вашем клиенте добавьте запись DNS:
[Interface]
Address = 10.0.1.2/32
PrivateKey = xxx
DNS = 1.1.1.1
[Peer]
PublicKey = xxx
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = xxx
Если не получится выложите свои конфиги (без ключей ).