Кириллица в консоли Fedora 28

При переключении в консоль вместо русских букв кирпичи.
Решение:
в /etc/vconsole.conf прописать желаемый шрифт, например
FONT="UniCyr_8x16"
ЗЫ
Взято отсюда:
https://unixforum.org/viewtopic.php?t=140018

Применение настроек сети без перезагрузки в Ubuntu 16.04 LTS

Везде написано, что в Linux для изменения настроек сети необходимо исправить файл /etc/network/interfaces, после чего выполнить
/etc/init.d/networking restart
или
service networking restart
По факту в Убунте 16,04 не работает.
Решение (естественно от рута)
ifdown eno1 && ip addr flush eno1 && ifup eno1
Вместо eno1 название своего интерфейса

Ошибка создания сертификата домена

Пытаюсь в IIS добавть сертификат домена. Казалось бы всё просто, но ошибка «No mapping between account names and sercurity IDs was done. 0x80070534 (WIN32: 1332)». Точную формулировку ошибки не помню, а повторить не могу (всё работает, как ни стараюсь сломать 🙂 ).
Оказалось, что причина была в том, что я (наверное как то не так) переименовал адпинскую учётку и пока я её не вернул в «Administrator» оно не заработало. Потом опять менял, но почему то сертификаты выдавались.

EVE

Для изучения сетей и проверки своих знаний есть прикольная штука: http://www.eve-ng.net/
Для добавления:
Cisco
http://www.eve-ng.net/index.php/documentation/howto-s/64-howto-add-dynamips-images-cisco-ios
Mikrotik
Необходимо скачать Cloud Hosted Router — Raw disk image интересующей нас версии
Распаковываем архив и переимемновываем img файл в hda.qcow2
Создаём на сервере EVE папку с определённой версией роутера (в названии mikrotik-stable часть «mikrotik-» фиксированная, а остальное — как хотим называем).
mkdir /opt/unetlab/addons/qemu/mikrotik-stable
Переносим полученный файл в созданную папку
Зпускаем применение правильных прав
/opt/unetlab/wrappers/unl_wrapper -a fixpermissions
pfSense
Необходимо скачать (https://www.pfsense.org/download/) nanobsd.img интересующей версии
Распаковываем архив и переимемновываем img файл в hda.qcow2
Создаём на сервере EVE папку с определённой версией роутера (в названии pfsense-234 часть «pfsense-» фиксированная, а остальное — как хотим называем).
mkdir /opt/unetlab/addons/qemu/pfsense-234
Переносим полученный файл в созданную папку
Зпускаем применение правильных прав
/opt/unetlab/wrappers/unl_wrapper -a fixpermissions
Полный список имён папок и дисков: http://www.eve-ng.net/index.php/documentation/images-table

Nested Virtualization (Вложенная виртуализация) Hyper-V

Бывают ситуации, когда необходима вложенность гипервизоров (у меня это EVE на Hyper-V на моём ПК с Win10). При старте некоторых элементов лабы ошибка, что нет аппаратной поддержки виртуализации.
Решение:
1. Запускаем скрипт (в конце), указывая в качестве параметра название ВМ (у меня это «Script.ps1 EVE»)
2. Отключаем в свойствах ВМ динамическую память
3. В дополнительных параметрах сетевой карты ВМ включаем спуфинг MAC адресов
Запускаем ВМ и радуемся работе 🙂
Взято от сих: https://habrahabr.ru/company/microsoft/blog/273791/
ЗЫ
Включение левых сценариев:
Set-ExecutionPolicy Unrestricted
А потом их отключение:
Set-ExecutionPolicy Restricted

Скрипт:
param([string]$vmName)
#
# Enable-NestedVm.ps1
#
# Checks VM for nesting comatability and configures if not properly setup.
#
# Author: Drew Cross

if([string]::IsNullOrEmpty($vmName)) {
Write-Host «No VM name passed»
Exit;
}

# Constants
$4GB = 4294967296

#
# Need to run elevated. Do that here.
#

# Get the ID and security principal of the current user account
$myWindowsID = [System.Security.Principal.WindowsIdentity]::GetCurrent();
$myWindowsPrincipal = New-Object System.Security.Principal.WindowsPrincipal($myWindowsID);

# Get the security principal for the administrator role
$adminRole = [System.Security.Principal.WindowsBuiltInRole]::Administrator;

# Check to see if we are currently running as an administrator
if ($myWindowsPrincipal.IsInRole($adminRole)) {
# We are running as an administrator, so change the title and background colour to indicate this
$Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + «(Elevated)»;

} else {
# We are not running as an administrator, so relaunch as administrator

# Create a new process object that starts PowerShell
$newProcess = New-Object System.Diagnostics.ProcessStartInfo «PowerShell»;

# Specify the current script path and name as a parameter with added scope and support for scripts with spaces in it’s path
$newProcess.Arguments = «& ‘» + $script:MyInvocation.MyCommand.Path + «‘»

# Indicate that the process should be elevated
$newProcess.Verb = «runas»;

# Start the new process
[System.Diagnostics.Process]::Start($newProcess) | Out-Null;

# Exit from the current, unelevated, process
Exit;
}

#
# Get Vm Information
#

$vm = Get-VM -Name $vmName

$vmInfo = New-Object PSObject

# VM info
Add-Member -InputObject $vmInfo NoteProperty -Name «ExposeVirtualizationExtensions» -Value $false
Add-Member -InputObject $vmInfo NoteProperty -Name «DynamicMemoryEnabled» -Value $vm.DynamicMemoryEnabled
Add-Member -InputObject $vmInfo NoteProperty -Name «SnapshotEnabled» -Value $false
Add-Member -InputObject $vmInfo NoteProperty -Name «State» -Value $vm.State
Add-Member -InputObject $vmInfo NoteProperty -Name «MacAddressSpoofing» -Value ((Get-VmNetworkAdapter -VmName $vmName).MacAddressSpoofing)
Add-Member -InputObject $vmInfo NoteProperty -Name «MemorySize» -Value (Get-VMMemory -VmName $vmName).Startup

# is nested enabled on this VM?
$vmInfo.ExposeVirtualizationExtensions = (Get-VMProcessor -VM $vm).ExposeVirtualizationExtensions

Write-Host «This script will set the following for $vmName in order to enable nesting:»

$prompt = $false;

# Output text for proposed actions
if ($vmInfo.State -eq ‘Saved’) {
Write-Host «\tSaved state will be removed»
$prompt = $true
}
if ($vmInfo.State -ne ‘Off’ -or $vmInfo.State -eq ‘Saved’) {
Write-Host «Vm State:» $vmInfo.State
Write-Host » $vmName will be turned off»
$prompt = $true
}
if ($vmInfo.ExposeVirtualizationExtensions -eq $false) {
Write-Host » Virtualization extensions will be enabled»
$prompt = $true
}
if ($vmInfo.DynamicMemoryEnabled -eq $true) {
Write-Host » Dynamic memory will be disabled»
$prompt = $true
}
if($vmInfo.MacAddressSpoofing -eq ‘Off’){
Write-Host » Optionally enable mac address spoofing»
$prompt = $true
}
if($vmInfo.MemorySize -lt $4GB) {
Write-Host » Optionally set vm memory to 4GB»
$prompt = $true
}

if(-not $prompt) {
Write-Host » None, vm is already setup for nesting»
Exit;
}

Write-Host «Input Y to accept or N to cancel:» -NoNewline

$char = Read-Host

while(-not ($char.StartsWith(‘Y’) -or $char.StartsWith(‘N’))) {
Write-Host «Invalid Input, Y or N»
$char = Read-Host
}

if($char.StartsWith(‘Y’)) {
if ($vmInfo.State -eq ‘Saved’) {
Remove-VMSavedState -VMName $vmName
}
if ($vmInfo.State -ne ‘Off’ -or $vmInfo.State -eq ‘Saved’) {
Stop-VM -VMName $vmName
}
if ($vmInfo.ExposeVirtualizationExtensions -eq $false) {
Set-VMProcessor -VMName $vmName -ExposeVirtualizationExtensions $true
}
if ($vmInfo.DynamicMemoryEnabled -eq $true) {
Set-VMMemory -VMName $vmName -DynamicMemoryEnabled $false
}

# Optionally turn on mac spoofing
if($vmInfo.MacAddressSpoofing -eq ‘Off’) {
Write-Host «Mac Address Spoofing isn’t enabled (nested guests won’t have network).» -ForegroundColor Yellow
Write-Host «Would you like to enable MAC address spoofing? (Y/N)» -NoNewline
$input = Read-Host

if($input -eq ‘Y’) {
Set-VMNetworkAdapter -VMName $vmName -MacAddressSpoofing on
}
else {
Write-Host «Not enabling Mac address spoofing.»
}

}

if($vmInfo.MemorySize -lt $4GB) {
Write-Host «VM memory is set less than 4GB, without 4GB or more, you may not be able to start VMs.» -ForegroundColor Yellow
Write-Host «Would you like to set Vm memory to 4GB? (Y/N)» -NoNewline
$input = Read-Host

if($input -eq ‘Y’) {
Set-VMMemory -VMName $vmName -StartupBytes $4GB
}
else {
Write-Host «Not setting Vm Memory to 4GB.»
}
}
Exit;
}

if($char.StartsWith(‘N’)) {
Write-Host «Exiting…»
Exit;
}

Write-Host ‘Invalid input’

Форматированный вывод в powershell

Если необходимо в powershell вывести аккуратно столбиками, то сначала запихиваем в переменную форматный вывод, а потом её выводим.

Форматирование

$test=»{0,-40} {1,20:N0} ({2,12:N9} Gb)» -f $FolderName, $FolderSize, ($FolderSize/1GB)

То, что находится в фигурных скобках — это один столбец (первая цифра — номер параметра, потом ширина столбца, при этом минус в начале означает форматирование по левому краю, после двоеточия формат переменной), после -f идут параметры.

Форматы переменных взял отсюда: 

  • Денежный (C)
  • С фиксированной точкой (F)
  • Общий (наиболее компактный) (G)
  • Числовой (с разделителями) (N), после N число знаков после запятой
  • Процентный (P)
  • Шестнадцатеричный (X)
  • Десятичный (D)
  • Научный (экспоненциальный) (E)

Деление на 1 GB/MB/KB пересчитывает в гига/мега/килобайты соответственно

Фильтрация IPTV трафика

На микротике невозможно сказать лить мультикаст только в один порт, а не в весь бридж. Соответственно когда смотришь ТВ, весь WiFi эфир занят этим паразитным трафиком. Для избавления от него необходимо добавить на бридж правило фильтрации.

  1. Создаём список интерфейсов, где нам нужен этот трафик

/interface list
add name=IPTV-list-ports
/interface list member
add interface=ether4-Kuhnya list=IPTV-list-ports
add interface=ether3-Zal list=IPTV-list-ports

2. Блокируем весь мультикаст, кроме того, который идёт на группу IPTV портов

/interface bridge filter
add action=drop chain=output mac-protocol=ip out-interface-list=!IPTV-list-ports packet-type=multicast

Идея взята отсюда: https://forummikrotik.ru/viewtopic.php?t=6946#p37855

CAPsMAN и FireWall

Есть много инструкций по настройке CAPsMAN, но везде считается, что FW или выключен, или настроен весьма открыто.

Сегодня настраивал и обнаружил, что контроллер, который одновременно является точкой, периодически теряется и не может восстановиться. Адрес управляющего устройства был записан двумя вариантами (по очереди): 127.0.0.1 и 192.168.1.1.

Проблема решилась после добавления правила

add action=accept chain=input comment=»Allow CAPsMAN» dst-port=5246,5247 protocol=udp src-address=127.0.0.1

Глюк (а может и фича) в winbox

В Winbox (кто не в курсе — тулзень для управления Mikrotik) есть терминал (обычный cli) и есть GUI инструменты. При использовании GUI, Tool->Ping (а так же Tool->Traceroute) когда пингуешь по DNS имени, резолв осуществляется на ПК, где запущен winbox, а не на том устройстве, которым управляете. Будьте очень внимательны к этому факту, когда проверяете  работу ДНС серверов с удалённых площадок.

ISR 4331 и DNS Doctoring

Столкнулся с проблемой, что при попытке изнутри сети отрезолвить белую A запись, которая ссылается на белый ИП Cisco ISR 4331, возвращается ИП того устройства, с которого идёт запрос на внешний ДНС.

Как выяснилось, ISR по умолчанию при NAT рассматривает A-записи ДНС ответов и подменяет адреса не только заголовка, но и содержимого. В инете везде встречал вариант решения

no ip nat service alg tcp dns
no ip nat service alg udp dns

Но у меня на такое ругается и синтаксис вот такой:

no ip nat service dns udp
no ip nat service dns tcp

Если вопрос о статическом NAT, то пишут, что решается ключевым словом no-payload