Добавление новой локальной сети

В качестве примера добавляем сеть 10.0.79.160/27 c VID 777. Внешний адрес — 91.233.165.79.

1. Добавить алиас в VLAN211:

ifconfig vlan211 alias 91.233.165.79 netmask 255.255.255.0

Проверяем:

[root@nat /etc]# ifconfig vlan211
vlan211: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=103<RXCSUM,TXCSUM,TSO4>
        ether 00:25:90:34:45:4e
        inet 91.233.165.2 netmask 0xffffff00 broadcast 91.233.165.255
...
        inet 91.233.165.75 netmask 0xffffff00 broadcast 91.233.165.255
        inet 91.233.165.76 netmask 0xffffff00 broadcast 91.233.165.255
        inet 91.233.165.77 netmask 0xffffff00 broadcast 91.233.165.255
        inet 91.233.165.78 netmask 0xffffff00 broadcast 91.233.165.255
        inet 91.233.165.79 netmask 0xffffff00 broadcast 91.233.165.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 211 parent interface: em0

2. Создать субинтерфейс с виланом:

ifconfig vlan777 create
ifconfig vlan777 vlan 777 vlandev em1
ifconfig vlan777 inet 10.0.79.161 netmask 255.255.255.224 up

Проверяем созданный вилан:

[root@nat /etc]# ifconfig vlan777
vlan777: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=103<RXCSUM,TXCSUM,TSO4>
        ether 00:25:90:34:45:4f
        inet 10.0.79.161 netmask 0xffffffe0 broadcast 10.0.79.191
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        vlan: 777 parent interface: em1

3. Прописать конфиг в автозагрузку.

Файл конфига — /etc/rc.conf

— внешний интерфейс (алиас):

В раздел # External VLAN добавить строчку в конец:

ifconfig_vlan211_alias76="inet 91.233.165.79 netmask 255.255.255.0" 

— внутренний интерфейс:

В раздел # Internal VLANS добавить строчку в конец:

ifconfig_vlan777="inet 10.0.79.161 netmask 255.255.255.224 vlan 777 vlandev em1 up" 

— создание вилана:

В раздел # ALL VLANS, в параметр cloned_interfaces добавить следующий вилан — в нашем случае vlan777 (через пробел перед закрывающими кавычками).

Будет выглядеть так:

cloned_interfaces="vlan211 vlan700 vlan701 vlan702 vlan703 ... vlan773 vlan774 vlan775 vlan776 vlan777" 

— вилан для DHCP:

В разделе # DHCP в параметр dhcpd_ifaces добавить следующий вилан — в нашем случае vlan777 (через пробел перед закрывающими кавычками).

Будет выглядеть так:

dhcpd_ifaces="vlan700 vlan701 vlan702 vlan703 ... vlan773 vlan774 vlan775 vlan776 vlan777" 

4. Добавить правило в фаерволл.

Смотрим последние ID’шники в фаерволле:

[root@nat /usr/local/etc]# ipfw show
00100     172764      11123904 allow ip from any to any via lo0
00200          0             0 deny ip from any to 127.0.0.0/8
00300          0             0 deny ip from 127.0.0.0/8 to any
00400          0             0 allow ip from me to me via lo0
00500          0             0 allow ip from 193.254.224.0/23 to me dst-port 22
00550       7718        604497 allow ip from 91.233.164.0/22 to me dst-port 22
00600       3394        151276 deny ip from any to me dst-port 22
00650       4652        268413 allow icmp from 10.0.0.0/8 to me
...
15800   49300632   21593338768 nat 76 ip from any to 91.233.165.76 via vlan211
15900    2337072     303455557 nat 77 ip from 10.0.79.96/27 to any via vlan211
16000    3626125    2381511983 nat 77 ip from any to 91.233.165.77 via vlan211
16100  114596180   80389379604 nat 78 ip from 10.0.79.128/27 to any via vlan211
16200  132948900  134350587769 nat 78 ip from any to 91.233.165.78 via vlan211
65535 8214068781 6770321073906 allow ip from any to any

Нас интересует ID последнего правила и ID NAT’а. Видим, что последний ID фаерволла — 16200. (65535 — это правило по умолчанию). Последний ID ната — 78.

Теперь добавляем 2 новых правила с ID правила +100 для каждого и с ID натом +1 для обоих правил:

ipfw nat 79 config log ip 91.233.165.79 reset same_ports
ipfw add 16300 nat 79 ip from 10.0.79.160/27 to any via vlan211
ipfw add 16400 nat 79 ip from any to 91.233.165.79 via vlan211

5. Прописать конфиг в автозагрузку фаерволла.

Для этого редактируем файл /root/firewall:

В блок # NAT Config добавляем в конец:

nat 79 config log ip 91.233.165.79 reset same_ports

В блок # NAT Rules добавляем в конец:

add nat 79 ip from 10.0.79.160/27 to any via vlan211
add nat 79 ip from any to 91.233.165.79 via vlan211

Сохраняем!

6. Добавить pool в DHCP для нового вилана.

В конфиг по адресу mcedit /usr/local/etc/dhcpd.conf добавить новую subnet по аналогии с предыдущей:

subnet 10.0.79.160 netmask 255.255.255.224 {

        authoritative;
        option routers 10.0.79.161;
        range 10.0.79.163 10.0.79.190;
        option broadcast-address 10.0.79.191;

}

Примечание:

IP’шники считаются по правилам вычисления масок. Для этого можно использовать утилиту:

[root@nat /usr/local/etc]# ipcalc -n 10.0.79.160/255.255.255.224
Address:   10.0.79.160          00001010.00000000.01001111.101 00000
Netmask:   255.255.255.224 = 27 11111111.11111111.11111111.111 00000
Wildcard:  0.0.0.31             00000000.00000000.00000000.000 11111
=>
Network:   10.0.79.160/27       00001010.00000000.01001111.101 00000
HostMin:   10.0.79.161          00001010.00000000.01001111.101 00001
HostMax:   10.0.79.190          00001010.00000000.01001111.101 11110
Broadcast: 10.0.79.191          00001010.00000000.01001111.101 11111
Hosts/Net: 30                    Class A, Private Internet

У нас каждая сеточка состоит из 32 адресов. Первый — это всегда идентификатор сети (тот, который прописывается в строке subnet), маска сети всегда 255.255.255.224. Option routers будет +1 к идентификатору сети. Range — +2 к роутеру (первый адрес) и последний высчитывает по маске сети. В данном случае — это HostMax (10.0.79.190). И бродкаст — 10.0.79.191, как и в калькуляторе.

Сохраняем!

Перезагружаем DHCP

/usr/local/etc/rc.d/isc-dhcpd restart