понедельник, 18 июля 2016 г.

NAT64 + DNS64

1. Общая схема процесса:

2. Настройка DNS64(пример для debian):
root@sneaky-work:/home/kim# cat /etc/bind/named.conf.options 
acl "ipv6net1" { 2A02:x:x:x::/40; ::1;};

options {
        directory "/var/cache/bind";

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable 
        // nameservers, you probably want to use them as forwarders.  
        // Uncomment the following block, and insert the addresses replacing 
        // the all-0's placeholder.

        dns64 2A02:x:x:x::/64 {
                recursive-only yes;
                clients { any; };
                mapped { any; };
                exclude { 2A02:x:x:x:1::/64; 64:ff9b::/96; };
        };

        forwarders {
                 2A02:x:x:x::116;
                 2001:4860:4860::8844;
                 2001:4860:4860::8888;
        };

//      allow-query { "ipv6net1"; };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};


Где:
2A02:x:x:x::/40 - весь ipv6 префикс, который будет пользоваться натом.
2A02:x:x:x::/64 - префикс для ната, dns будет преобразовывать AAA ответ в AAAA, и пользоваться этим префиксом.
2A02:x:x:x:1::/64

3.Сам NAT64:

ipv6 unicast-routing
ipv6 dhcp pool ipv6dhcp
 address prefix 2A02:x:x:x:1::/64
 dns-server 2A02:x:x:x:1::2
interface TenGigabitEthernet0/1/0
 ip address x.x.x.3 255.255.255.248
 ipv6 address 2A02:y:y:y::y:34/125
 ipv6 enable
 nat64 enable
interface BDI1110
 no ip address
 ipv6 address 2A02:x:x:x:1::1/64
 ipv6 enable
 ipv6 nd na glean
 ipv6 nd managed-config-flag
 ipv6 nd other-config-flag
 ipv6 nd router-preference High
 ipv6 dhcp server ipv6dhcp
 nat64 enable
ip route 0.0.0.0 0.0.0.0 x.x.x.1
!
ipv6 route ::/0 2A02:y:y:y::y:33 unicast
!
!
!         
ipv6 access-list ACLv6
 sequence 20 permit ipv6 2A02:x:x:x:1::/64 any
!

nat64 prefix stateful 2A02:x:x:x::/64
nat64 v4 pool pool1 111.111.111.111 111.111.111.113
nat64 v6v4 list ACLv6 pool pool1 overload


Запись микропрограммы в линейную карту ALC на Zyxel IES5000

Замену микропрограммы нужно производить по приведенной ниже схеме. Откройте терминальную программу HyperTerminal из состава Windows, установив работу через COM-порт (например, прямое соединение COM1). Скорость последовательного порта установите равной 9600 бит/с и отключите управление потоком. 


Перед заменой микропрограммы нужно вытащить плату управления (MSC-1000), иначе линейные карты в режиме отладки (в Debug Mode) будут находиться не более 30 сек.


- При загрузке линейной карты, в терминальной программе вы увидите сообщение:

Press any key to enter Debug Mode within 3 seconds
- нажмите любую клавишу, чтобы перейти в режим отладки (Debug Mode);
- дайте команду ATBA5, чтобы установить скорость консольного порта 115200;
- поменяйте скорость порта в терминальной программе;
- дайте команду ATUR и подождите, пока линейная карта ответит "Starting XMODEM upload", чтобы начать передачу файла с микропрограммным обеспечением (*.bin);
- в программе HyperTerminal обратитесь к меню "Передача" (Transfer) и выберите "Отправить файл" (Send file). В открывшемся окне выберите протокол передачи файлов X-модем и укажите программе, в каком месте на жестком диске находится требуемый файл. Затем нажмите кнопку "Отправить" (Send);  
- после успешной загрузки микропрограммы линейная карта должна автоматически перезагрузиться;
- измените скорость порта в коммуникационной программе снова на 9600 бит/с и зайдите в режим отладки (Debug Mode);
- дайте команду ATLC и подождите, пока линейная карта ответит "Starting XMODEM upload", чтобы начать передачу файла с заводскими настройками (*.rom). Обращаем ваше внимание, что все установки линейной карты будут сброшены на настройки по умолчанию;
 - после успешной загрузки файла конфигурации линейная карта должна автоматически перезагрузиться. Если этого не произошло, дайте команду ATGO, чтобы перезагрузить ее.


оригинал: https://zyxel.ru/kb/1511/

Аппаратный сброс линейной карты xDSL-коммутатора Zyxel IES5000

Состояние линейной (модемной) карты INACTIVE (неработающий) возможно только во время ее загрузки или обновления микропрограммного обеспечения. Если состояние INACTIVE не является следствием одной из указанных выше причин, то возможно, что линейная карта неисправна. 

Попытайтесь выполнить следующие действия:
  1. Управляющий контроллер MSC может автоматически выполнить рестарт линейной карты. Если линейная карта не отвечает, используйте команду lcman reset, которая выполнит аппаратный сброс (hardware reset) линейной карты.
  2. Попытайтесь переставить линейную карту в другой слот коммутатора.
  3. Если указанные шаги не привели к рабочему состоянию карты, используйте команду lcman disable. Затем подключитесь к консольному порту карты и восстановите (запишите) микропрограмму.
  4. После восстановления микропрограммы в линейной карте используйте команду lcman enable, которая включает управление линейными картами.
Процедура записи микропрограммного обеспечения для линейной карты описана в следуюшей статье - БЗ-1511

Оригинал: https://zyxel.ru/kb/1555/

понедельник, 30 мая 2016 г.

Забираем список хостов для Rancid из Zabbix

Простой скрипт на Pythonвыполняющий выгрузку через Zabbix API (из нужной группы) списка хостов для Rancid. 


Предварительно нужно установить PyZabbix
pip install pyzabbix

Сам скрипт:
#!/usr/bin/python
from zabbix_api import ZabbixAPI

zapi = ZabbixAPI(server="https://zabbix.local")
zapi.login("login", "password")

f = open('/var/lib/rancid/network/router.db', 'w')

rows = zapi.host.get({'output': ['hostids', 'name', 'status'], 'groupids': ['8']})

if (rows != 0) and (len(rows) != 0):
 for h in rows:
  hid = h['hostid']
  
  if h['status'] == '0':
   rstatus = "up"
  else: rstatus = "down" 
  
  ipadr = zapi.hostinterface.get({'output': ['ip'], 'hostids' : hid, 'filter':{'main':1}})
  line = (ipadr[0]['ip'] + ":cisco:" + rstatus + ':"' + h['name'] + '"').encode('utf-8')
  f.write (line + '\n')
f.close()

Дальше запускаем скрипт кроном: 
* /6 * * *  rancid  python /home/zabbix/scripts/rancid-zb-api.py > /dev/null 2>&1

вторник, 19 апреля 2016 г.

Script for block tor exit node for iptables

#!/bin/bash

# A simple bash script to block IP traffic from TOR exit nodes.
# written by Andrew Vetlugin (antrew at gmail com)

wget='/usr/bin/wget'
iptables='/sbin/iptables'
url='https://torstatus.blutmagie.de/ip_list_exit.php/Tor_ip_list_EXIT.csv'

iptables_target='DROP'
#iptables_target='REJECT'

# Quick guide:

# 1. add a separate chain for a list of TOR exit nodes
# (this should be done by hand once)
# iptables -N TOR_BLOCK

# 2. add a rule to INPUT chain
# Note: if you want to be able to connect to any TOR exit node yourself
# (e.g., if $url is a exit node you should be able to fetch a list of exit
# nodes from it) then you should add this rule AFTER accepting established
# and related connections)
# iptables -A INPUT -j TOR_BLOCK

# 3. add this script to crontab (I think 10-20 minutes interval should be OK)

# flush chain
$iptables -F TOR_BLOCK

# return to parent chain if the source is not TOR exit node
$iptables -I TOR_BLOCK -j RETURN

# add TOR exit nodes to TOR_BLOCK chain with $iptables_target rule
for node in `$wget -q --no-check-certificate -O - $url | sort | uniq`; do
        $iptables -I TOR_BLOCK -s $node -j $iptables_target
done


оришинал - http://doc.norang.ca/iptables.html#sec-4-4-1

среда, 2 марта 2016 г.

Архивация содержимого папки с последующим удалением

#!/bin/bash
#Purpose = Backup of Important Data
#Run this script on cron
#START
TIME=`date +%d%m%y`             # This Command will add date in Backup File Name.
FILENAME=configs_$TIME.tar.gz   # Here i define Backup file name format.
SRCDIR=/srv/ftp/cfg             # Location of Important Data Directory (Source of backup).
DESDIR=/srv/ftp                 # Destination of backup file.
/bin/tar -cpzf $DESDIR/$FILENAME $SRCDIR
if [ -f $DESDIR/$FILENAME ]; then
  /usr/bin/find $SRCDIR/* -delete
else
 echo "Archive whith name $FILENAME in folder $DESDIR not found!"
fi

#END