Заметки о работе с ОС FreeBSD. Статьи об установке и настройке ПО для FreeBSD.

6 февраля 2017 г.

FreeBSD 9.3 iSCSI Initiator

Настройка ISCSI инциатора во FreeBSD 9.3 (Начиная с 10.0 всё еще проще).


Подгружаем модуль ядра
[root@mx1 ~]# kldload iscsi_initiator



[root@mx1 ~]# cat /boot/loader.conf
iscsi_initiator_load="YES"



Инициализируем блочное устройство
[root@mx1 ~]# iscontrol -v -d targetaddress=192.168.154.60 initiatorname='iqn.2017-02.ru.spb.testcorp:testsrv31'
                    port = 3260
                    tags = 0
                 maxluns = 0
                     iqn = iqn.2005-01.il.ac.huji.cs:
          maxConnections = 1
maxRecvDataSegmentLength = 65536
maxXmitDataSegmentLength = 65536
          maxBurstLength = 131072
        firstBurstLength = 65536
        defaultTime2Wait = 0
      defaultTime2Retain = 0
       maxOutstandingR2T = 1
      errorRecoveryLevel = 0
    targetPortalGroupTag = 0
            headerDigest = None,CRC32C
              dataDigest = None,CRC32C
              initialR2T = 1
           immediateData = 1
          dataPDUInOrder = 1
     dataSequenceInOrder = 1
             sessionType = Normal
           targetAddress = (null)
             targetAlias = (null)
              targetName = (null)
           initiatorName = (null)
          initiatorAlias = (null)
              authMethod = None
              chapSecret = (null)
               chapIName = (null)
             tgtChapName = (null)
           tgtChapSecret = (null)
      tgttgtChallengeLen = 0
adding 'targetaddress=192.168.54.6'
I-: cmd=0x3 len=296
        SessionType=Discovery
        InitiatorName=iqn.2017-02.ru.spb.testcorp:testsrv31
        MaxBurstLength=131072
        HeaderDigest=None,CRC32C
        DataDigest=None,CRC32C
        MaxRecvDataSegmentLength=65536
        ErrorRecoveryLevel=0
        DefaultTime2Wait=0
        DefaultTime2Retain=0
        DataPDUInOrder=Yes
        DataSequenceInOrder=Yes
        MaxOutstandingR2T=1
T-: cmd=0x23 len=238
        TargetPortalGroupTag=0x03e8
        MaxRecvDataSegmentLength=65536
        HeaderDigest=None
        DataDigest=None
        MaxBurstLength=65536
        DefaultTime2Wait=0
        DefaultTime2Retain=0
        ErrorRecoveryLevel=0
        MaxOutstandingR2T=1
        DataPDUInOrder=Yes
        DataSequenceInOrder=Yes
I-: cmd=0x4 len=16
        SendTargets=All
T-: cmd=0x24 len=84
        TargetName=iqn.1992-08.com.netapp:sn.142238657
        TargetAddress=192.168.154.60:3260,1000
TargetName=iqn.1992-08.com.netapp:sn.142238657
TargetAddress=192.168.154.60:3260,1000
I-: cmd=0x6 len=0
T-: cmd=0x26 len=0



Конфиг
[root@mx1 ~]# cat /etc/iscsi.conf
napp_disk_testsrv31 {
initiatorname = iqn.2017-02.ru.spb.testcorp:testsrv31
TargetName=iqn.1992-08.com.netapp:sn.142238657
TargetAddress=192.168.154.60:3260,1000
}



Подключаем
[root@mx1 ~]# iscontrol -c /etc/iscsi.conf -n napp_disk_testsrv31
iscontrol[7678]: running
[root@mx1 ~]# iscontrol[7678]: (pass3:iscsi0:0:0:0):  tagged openings now 0



[root@mx1 /dev]# gpart list da2
gpart: No such geom: da2.


Создаем разметку и файловую систему на новом устройстве
[root@mx1 /dev]# gpart create -s GPT /dev/da2
da2 created
[root@mx1 /dev]# gpart list da2
Geom name: da2
modified: false
state: OK
fwheads: 255
fwsectors: 63
last: 1468149726
first: 34
entries: 128
scheme: GPT
Consumers:
1. Name: da2
   Mediasize: 751692677120 (700G)
   Sectorsize: 512
   Mode: r0w0e0




[root@mx1 /dev]# gpart add -t freebsd-ufs /dev/da2
da2p1 added
[root@mx1 /dev]# gpart list da2
Geom name: da2
modified: false
state: OK
fwheads: 255
fwsectors: 63
last: 1468149726
first: 34
entries: 128
scheme: GPT
Providers:
1. Name: da2p1
   Mediasize: 751692642816 (700G)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 17408
   Mode: r0w0e0
   rawuuid: 8e622b5c-e9f0-11e6-8e23-005056845619
   rawtype: 516e7cb6-6ecf-11d6-8ff8-00022d09712b
   label: (null)
   length: 751692642816
   offset: 17408
   type: freebsd-ufs
   index: 1
   end: 1468149726
   start: 34
Consumers:
1. Name: da2
   Mediasize: 751692677120 (700G)
   Sectorsize: 512
   Mode: r0w0e0



[root@mx1 /dev]# newfs -U /dev/da2p1
/dev/da2p1: 716869.9MB (1468149688 sectors) block size 32768, fragment size 4096
        using 1145 cylinder groups of 626.09MB, 20035 blks, 80256 inodes.
        with soft updates
super-block backups (for fsck_ffs -b #) at:
 192, 1282432, 2564672, 3846912, 5129152, 6411392, 7693632, 8975872, 10258112, 11540352, 12822592, 14104832, 15387072, 16669312, 17951552,
 19233792, 20516032, 21798272, 23080512, 24362752, 25644992, 26927232, 28209472, 29491712, 30773952, 32056192, 33338432, 34620672,
....



Включаем журналирование:
[root@mx1 /dev]# tunefs -j enable /dev/da2p1
Using inode 4 in cg 0 for 33554432 byte journal
tunefs: soft updates journaling set

Монтируем
[root@mx1 /dev]# mount /dev/da2p1 /wrk2



[root@mx1 /dev]# mount
/dev/da0p3 on / (ufs, local, journaled soft-updates)
devfs on /dev (devfs, local, multilabel)
/dev/da1p1 on /wrk (ufs, local, journaled soft-updates)
/dev/da2p1 on /wrk2 (ufs, local, journaled soft-updates)



Записываем в fstab для автомонтирования при загрузке сиситемы
[root@mx1 /dev]# ee /etc/fstab
# Device        Mountpoint      FStype  Options Dump    Pass#
/dev/da0p2      none            swap    sw      0       0
/dev/da0p3      /               ufs     rw      1       1
/dev/da1p1      /wrk            ufs     rw      2       2
/dev/da2p1     /wrk2           ufs     rw      3       3



1 февраля 2017 г.

FreeBSD 11 IPFW Kernel NAT

Настройка "ядерного" IPFW NAT на FreeBSD 11

em0 - внутренний интерфейс
em1 - внешний интерфейс


Версия FreeBSD:

root@test_machine_bsd11:~ # uname -mrs
FreeBSD 11.0-RELEASE amd64
root@test_machine_bsd11:~ # freebsd-version
11.0-RELEASE


Подгружаем нужные модули ядра:

root@test_machine_bsd11:~ # cat /boot/loader.conf
ipfw_load="YES"
ipfw_nat_load="YES"

Можно подгружать только ipfw_nat.ko - он сам подгрузит ipfw.ko, но лучше перестраховаться.


Разрешаем запуск ipfw в rc.conf:

root@test_machine_bsd11:~ # cat /etc/rc.conf
...
firewall_enable="YES"
firewall_type="/etc/ipfw.rules"

firewall_nat_enable в rc.conf писать не нужно. Теперь это ни на что не влияет.


Правила фаервола:

root@test_machine_bsd11:~ # cat /etc/ipfw.rules
# Правило необходимо чтобы пакеты от самого сервера не попадали в NAT (в правило 07000)
add 02000 allow all from me to any via em1 keep-state
nat 1 config if em1 log reset same_ports deny_in
add 03001 nat 1 all from 192.168.94.0/24 to 8.8.8.8 out via em1
# Правило для "обратного" NAT
add 07000 nat 1 all from any to 214.3.198.40 in via em1