Категорії
FreeBSD Misc, staff, other Solaris

NAT с помощью ipnat

1) rc.conf

Добавляем такие строчки в /etc/rc.conf

ipnat_enable="YES"
ipnat_rules="/etc/ipnat.rules"

2) ipnat.rules

Для транслирования адресов вносим такие строчки:

map fxp0  10.10.10.0/24 -> XX.XX.XX.XX/32 proxy port ftp ftp/tcp
map fxp0  10.10.10.0/24 -> XX.XX.XX.XX/32 portmap tcp/udp 40000:65000
map fxp0  from 10.10.10.0/24 ! to XX.XX.XX.XX/32 -> XX.XX.XX.XX/32

где

– fxp0 – внешний интерфейс
– XX.XX.XX.XX – внешний IP-адрес
– 10.10.10.0 – внутрення подсеть.

3) ipnat и динамический внешний адрес

Если у вас внешний адрес динамический (получаете от провайдера), то правила будут выглядеть вот так:

map fxp0  10.10.10.0/24 -> 0.0.0.0/32 proxy port ftp ftp/tcp
map fxp0  10.10.10.0/24 -> 0.0.0.0/32 portmap tcp/udp 40000:65000
map fxp0  10.10.10.0/24 -> 0.0.0.0/32

4) Перечитывание правил.

При обычном перечитывании, то есть через

# /etc/rc.d/ipnat reload

выполняется обрыв текущих сессий. Что бы не обрывать сессии, можно использовать такую конструкцию:

# ipnat -f /etc/ipnat.conf

При этом будут сыпаться ошибки, но их можно игнорировать.

Добавить правило налету:

#echo "map dmfe0 192.168.1.0/24 -> 20.20.20.1/32" | ipnat -f -

Удалить налету: (под Solaris почему-то не работает)

– выполняем команду

# ipnat -r -f -

Если вдруг не сработало, то можно применить перечитывание ТОЛЬКО правил из конфига БЕЗ удаления текущих сессий NAT:

# ipnat -C -f /etc/ipf/ipnat.conf

– вводим полностью правило, точно так, как оно выводится через ipnat -l:

rdr igb1 XX.XX.XX.XX/32 port 12380 -> 10.5.0.252 port 80 tcp

– нажимаем Crtl+D.

Примечание.

Не используйте FastForwarding (sysctl net.inet.ip.fastforwarding) вместе с ipnat – NAT не будет работать.

Для более подробного изучения ipfilter можно так же использовать это руководство.

2 коментарі “NAT с помощью ipnat”

Вопрос
Пробрасываю порт
В ipnat
rdr ale0 from xxx.xxx.xxx.xxx/32 to yyy.yyy.yyy.yyy/32 port = 2223 -> 192.168.1.2 port 2223

в ipf
block in on ale0 all
pass in quick proto tcp from xxx.xxx.xxx.xxx to yyy.yyy.yyy.yyy port = 2223
пакеты не ходят
Подскажите пожалуйста где проблема?

Возможно, нужно ещё добавить pass out. Или смотреть через tcpdump, где уходят а где – не приходят.

Залишити коментар до dgadavin Скасувати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff