Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Погружайтесь в загадочный мир подводных приключений с игрой

Тайна морей - Затерянные сокровища: Три в ряд

Три в ряд, Казуальные, Головоломки

Играть

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • alekseyJHL alekseyJHL 6 постов
  • XpyMy XpyMy 1 пост
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

Freebsd

С этим тегом используют

Linux Все
65 постов сначала свежее
1343
Nextez
Nextez
5 лет назад

В память о великом человеке⁠⁠

В память о великом человеке Unix, Linux, Freebsd, Qnx, История, Создатели, Flex, Bison

Имя Дениса Ритчи (Dennis Ritchie) не многим известно. А ведь это человек, который сделал для нашей цивилизации больше, чем иной лауреат Нобелевской премии.

Мне было грустно и обидно, что об умершем в одиночестве через неделю после Стива Джобса Денисе Ритчи никто не вспоминал. Какое неблагодарное человечество!

Что с нами сделала погоня за богатством?

Умелого маркетолога Стива Джобса все любят, славят и обожают, а того, кто создал солидный фрагмент фундамента современной цивилизации, никто не помнит.

Ведь все продукты Эпл, да и большинства других компаний были бы невозможны без того, что создал Денис Ритчи.

Совместно с Кеном Томпсоном Денис Ритче создал самую лучшую на сегодня операционную систему Unix.

Совместно с Брайаном Керниганом Ритче создал язык программирования C.

На языке C написаны все операционные системы (их десятки если не сотни).

Все компиляторы и интерпретаторы других языков написаны на C.

Зачастую не напрямую, но инструменты, на которых пишут другие языки программирования пишут на C (Flex и Bison, например).

Java очень сильно смахивает на C, что выдает ее происхождение. Да и "C++" -- это развитие языка C, который включает C как подмножество.

На основе Unix создано множество операционных систем, они все называются Posix системами. VxWorks единственная Posix OS не написанная по мотивам Unix. Но там имело место натягивание совы на глобус.

Назову только самые известные производные Unix:

MacOS, FreeBSD, Linux, QNX.

Микро$офт не осилило сделать такой надежной системы как Unix и сделал возможность установить Линукс как часть Виндоус 10. Раньше Линукс под Виндоус использовали при помощи Cygwin.

Обратите внимание, что и язык С и Unix были созданы в конце 60 годов 20 века. Они были настолько безупречны, что с тех пор человечеству не понадобилось заменить их чем-то поновее. Развивали, допоплняли, но основу получше не разрабатывали.

Давайте будем помнить Великого Человека Дениса Ритче, а не только великих маркетологов.


Отсель

Показать полностью
Unix Linux Freebsd Qnx История Создатели Flex Bison
189
BSD.Fan
BSD.Fan
5 лет назад
Создайте сообщество

Сообщество пользователей *NIX⁠⁠

Предлагаю создать сообщество пользователей операционных систем *BSD (FreeBSD, OpenBSD, NetBSD), OpenIndiana (бывшая OpenSolaris), HP-UX. Очень странночто UNIX like системы представлены только дистрибутивами Linux, а существующие ответвления от самого UNIX никак не представлены на ресурсе.

Сообщество пользователей *NIX Freebsd, Unix
Freebsd Unix
39
15
udev
udev
5 лет назад

Где посоветуете хранить бэкапы?⁠⁠

Всем холодного пива в обед!

Господа, подскажите, какое хранилище наиболее удобно и дёшево в плане хранения бэкапов (нужно делать порядка 500Gb ежедневно, причём с разных девайсов). Максимум 2 Tb на всё. Хотел сам поставить в офисе машину, да вот беда,  у провайдера оказалась максимальная скорость 20 Мбит/с за 6 100,00 руб/мес. - и дорого, и за ночь не уложиться.


И да, попутно хотел уточнить, использует кто-нибудь FreeBSD или все плавно перешли на линукс с его контейнерами? Я на фряхе с 2002 года ещё (не всегда использовал по назначению, но из тех, кто помнит голые иксы на десктопе и "Мозиллу-тормозиллу"). Остался последний сервер с фряхой и вот задумался о переходе, у программистов не разворачивается многое и все топят за линукс.

[моё] Резервное копирование Freebsd Интернет-провайдеры Вопрос Текст
102
18
OpenNET
OpenNET
5 лет назад
GNU/Linux

Выпуск пользовательского окружения Sway 1.4, использующего Wayland⁠⁠

Подготовлен релиз композитного менеджера Sway 1.4 (выпуск 1.3 не был сформирован), построенного с использованием протокола Wayland и полностью совместимого с мозаичным оконным менеджером i3 и панелью i3bar. Код проекта написан на языке Си и распространяется под лицензией MIT. Проект нацелен на использование в Linux и FreeBSD.


Совместимость с i3 обеспечена на уровне команд, файлов конфигурации и IPC, что позволяет использовать Sway в качестве прозрачной замены i3, использующей Wayland вместо X11. Sway позволяет размещать окна на экране не пространственно, а логически. Окна располагаются, образуя сетку, оптимально использующую экранное пространство и позволяющую быстро манипулировать окнами только при помощи клавиатуры.


Для обустройства полноценного пользовательского окружения предлагаются сопутствующие компоненты: swayidle (фоновый процесс с реализацией протокола KDE idle), swaylock (хранитель экрана), mako (менеджер уведомлений), grim (создание скриншотов), slurp (выделение области на экране), wf-recorder (захват видео), waybar (панель приложений), virtboard (экранная клавиатура), wl-clipboard (работа с буфером обмена), wallutils (управление обоями рабочего стола).


Sway развивается как модульный проект, построенный поверх библиотеки wlroots, в которую вынесены все базовые примитивы для организации работы композитного менеджера. Wlroots включает бэкенды для абстрагирования доступа к экрану, устройствам ввода, отрисовки без прямого обращения к OpenGL, взаимодействию с KMS/DRM, libinput, Wayland и X11 (предоставляется прослойка для запуска X11-приложений на базе Xwayland). Помимо Sway библиотека wlroots активно используется и в других проектах, включая Librem5 и Cage. Кроме Си/С++ разработаны биндинги для Scheme, Common Lisp, Go, Haskell, OCaml, Python и Rust.


В новом выпуске:


Добавлена поддержка протокола VNC для удалённого обращения к рабочему столу. Работа организована через использование сервера wayvnc, который может подключаться к запущенным рабочим сеансам на базе Wayland, создаёт виртуальное устройство ввода и транслирует экранный вывод при помощи протокола RFB. Wayvnc в том числе можно использовать для запуска виртуальных рабочих столов, запускаемых на серверах без монитора. Поддержка ранее предлагавшегося бэкенда на базе протокола RDP прекращена.


Добавлена частичная поддержка запуска панели задач, развиваемой проектом MATE;


Реализована возможность настройки задержек отображения символов при вводе (опции max_render_time и sway-output);


Добавлена поддержка раздельной обработки групп клавиш на клавиатуре (для специализированных клавиатур);


Прекращена поддержка протокола xdg-shell v6 (нестабильная версия v6 уже не актуальна после стабилизации xdg-shell).

Показать полностью
Sway Wayland Vnc Freebsd Linux Видео
5
5
DELETED
6 лет назад

Как пропатчить KDE2 под FREEBSD⁠⁠

Как пропатчить KDE2 под FREEBSD Аниме, Freebsd, Как пропатчить kde под freebsd, Kde2, Пикабу, Реклама

Перечитали баш походу

Показать полностью 1
Аниме Freebsd Как пропатчить kde под freebsd Kde2 Пикабу Реклама
1
2
kostyanuch
kostyanuch
6 лет назад

Freebsd 11.1. Шлюз (роутер), DNS и DHCP сервер, IPFW, kernel NAT.⁠⁠

Я долго искал в интернете много разных how to по настройке шлюза на FreeBSD 11 и IPFW NAT, но ни один вариант мне не подходил, всегда что-то не работало, пришлось изобрести свой велосипед, может кому-то пригодится. Настоятельно рекомендую дочитать статью до конца, прежде чем выполнять какие-либо действия. На момента данного апдейта статьи я уже выполнил все те же действия на физической машине и она успешно работает в качестве шлюза и раздаёт домашним устройствам интернет. Писалось всё для себя, по мере выполнения и реализации каждого шага, но в итоге (imho) получилась вполне себе годная how to.


Все манипуляции производились на виртуальных машинах FreeBSD 11.1-RELEASE amd64, Ubuntu Desktop 17.04 x32 установленных на VmWare под управлением Windows 10. На VmWare необходимо настроить сеть следующим образом:


1. Идем Edit => Virtual Network Editor, не все опции доступны под обычным пользователем, поэтому нажимаем внизу кнопку Change Settings для того чтобы открылись необходимые настройки.

2. Там может быть уже настроено что-то, либо Вы уже сами что-то пытались настроить, поэтому перед настройкой рекомендую нажать Restore Defaults.

3. Нам нужно всего два интерфейса vmnet0 и vmnet1.

4. vmnet0 ставим опцию Bridged и в строке Bridged to выбрать тот интерфейс, через который Ваш основной ПК ходит в интернет и нажать Apply. Всё!

5. vmnet1 ставим опцию Host-only и галочку Connect a host virtual adapter to this network и нажимаем Apply. Ниже могут быть прописаны какие-то адреса, но для нас это не важно.

6. Настроив оба интерфейса нажимаем OK и выходим из редактора виртуальных сетей.

7. В настройках FreeBSD удаляем все сетевые адаптеры и добавляем новый, ставим галочку Connect at power on, выбираем пункт Custom: Specific virtual network и выбираем адаптер VMnet0.

8. Для второго адаптера все те же шаги, но на последнем этапе выбираем VMnet1.

9. Для Ubuntu необходимо аналогично добавить единственный адаптер VMnet1.

10. У меня на FreeBSD vmnet0 был как em0, а vmnet1 как em1, если у Вас иначе правьте все конфиги где это встречается.

После настроек сети можете установить обе гостевые системы, обновить их и начинать манипуляции по инструкции ниже. Установка  FreeBSD и Ubuntu не самый сложный процесс, особенно Ubuntu, но даже по FreeBSD полно guide и  how to (в-первую очередь рекомендую handbook), так что не буду тратить время, может быть как-нибудь потом.


После установки.


Настроить sshd.

В rc.conf должна быть строчка:

sshd_enable="YES"


Настроить конфиг /etc/ssh/sshd_config:

Необходимо найти строку:

#Port 22

раскомментировать и поменять стандартный порт на свой любимый, я КРАЙНЕ НЕ РЕКОМЕНДУЮ использовать стандартный 22 порт, я на себе прочувствовал когда мой первый шлюз лег от brute force.

После этого у Вас появится возможность подключаться по SSH. Можете использовать такую классику как Putty, а мне нравится Bitvise SSH Client, очень удобно в нём работать: простейший копипаст любых конфигов, а также удобный sftp. Но это дело вкуса.


Обновить порты:

portsnap fetch extract

portsnap fetch update


Далее обновить систему:

freebsd-update fetch

freebsd-update install


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

shutdown -r now


Под root работать плохая практика:

установим и настроим sudo:

cd  /usr/ports/security/sudo

make config

make install clean

открываем конфиг по адресу /usr/local/etc/sudoers и даём разрешение действовать от имени root пользователям из группы wheel и уберем комментарий строки

%wheel ALL=(ALL) ALL

при  такой настройке вводя sudo каждый раз перед выполнением команды будет запрашиваться пароль, для того чтобы использовать sudo без пароля  уберем комментарий строки

%wheel  ALL=(ALL) NOPASSWD: ALL


Подготовка к сборке ядра.


Устанавливаем svn:

cd /usr/ports/devel/subversion

sudo make config

sudo make instal clean


Обновляем исходники системы:

svn co https://svn.freebsd.org/base/release/11.1.0/ /usr/src

если такое сообщение:

Error validating server certificate for 'https://svn.freebsd.org:443':

- The certificate is not issued by a trusted  authority. Use the

fingerprint to validate the certificate manually!

Certificate information:

- Hostname: svn.freebsd.org

- Valid: from May 1 20:26:50 2018 GMT until Jul 30 20:26:50  2018 GMT

- Issuer: Let's Encrypt Authority X3, Let's  Encrypt, US

- Fingerprint:  91:B4:F6:CA:ED:1D:7C:EA:C1:F9:33:A5:36:27:C0:7D:E6:2E:6B:AA

(R)eject,  accept (t)emporarily or accept (p)ermanently?

вводим  t и всё продолжится


Копируем стандартное ядро:

sudo cp  /usr/src/sys/amd64/conf/GENERIC /usr/src/sys/amd64/conf/GATEWAY


Редактируем ядро:

Открываем  в любом редакторе копию ядра, а именно /usr/src/sys/amd64/conf/GATEWAY и добавим строки:

options  IPFIREWALL

options  IPFIREWALL_DEFAULT_TO_ACCEPT

options  IPFIREWALL_VERBOSE

options  IPFIREWALL_VERBOSE_LIMIT=50

options  IPFIREWALL_NAT

options  LIBALIAS

options  IPDIVERT

options  IPSTEALTH

options  DUMMYNET

options  DEVICE_POLLING

options  HZ="1000"

options  ROUTETABLES=2

options  MROUTING

device  coretemp

IPFIREWALL  — включение IPFW

IPFIREWALL_DEFAULT_TO_ACCEPT — по умолчанию последнее правило IPFW будет разрешать всё

IPFIREWALL_VERBOSE — включаем логирование правил

IPFIREWALL_VERBOSE_LIMIT=50 — лимит количества записей для одного правила

IPFIREWALL_NAT — NAT уровня ядра

LIBALIAS — опция также требуется для работы NAT уровня ядра

IPDIVERT — пересылка (форвард) пакетов

IPSTEALTH — перенаправление портов (NAT и пр.), используем совместно с IPDIVERT

DUMMYNET  — ограничение пропускной способности интернет на клиентах или шейпер траффика

DEVICE_POLLING  — опрос сетевой карточки по таймеру  (периодические опросы позволяют быстрее обрабатывать пакеты), имеет смысл включать на сетевых Intel (em, igb), на других мы либо не получим прироста либо можем получить баги. Поэтому будьте внимательны при включении.

HZ="1000" — частота срабатывания планировщика, чем больше, тем чаще срабатывает планировщик рекомендуют ставить не меньше 1000

ROUTETABLES=2 — поддержка нескольких таблиц маршрутизации, в данном случае 2, максимально 16

MROUTING  — поддержка пакетов с multicast-адресами, необходимо для маршрутизации

coretemp — модуль ядра для мониторинга температуры ЦП

Здесь сразу добавлю: я указываю какие опции я включаю в ядро и для чего они предназначены,  но это вовсе не означает, что Вам они тоже нужны, есть спорные моменты,  например: IPFIREWALL_NAT и LIBALIAS — в одном источнике видел следующее, цитата "И всё … никаких IPFIREWALL_NAT и LIBALIAS не надо! В релизе 10R libalias.ko загружается по умолчанию", но такую информацию я увидел лишь в одном месте, пока  неохота и некогда изучить подробнее. Моё решение: включить эти опции в ядро, опять же если есть какие-то серьезные противоречия, то перед сборкой ядра система будет ругаться, но, кажется, это не в каждом случае работает.


Собираем и устанавливаем новое ядро:

cd /usr/src

sudo make kernel -s  -j4 KERNCONF=GATEWAY


Добавляем в файл /boot/loader.conf строку:

net.inet.ip.fw.one_pass=1 — при её установке в 0 пакет, выходящий из dummynet, продолжит свое путешествие по правилам firewall, в противном случае pipe действует, как allow, значение по умолчанию - 1


Перезагружаемся:

shutdown -r now


Добавляем в /etc/rc.conf следующие строки:

gateway_enable="YES"

firewall_nat_enable="YES"

firewall_nat_interface="em0"

firewall_enable="YES"

firewall_script="/usr/local/etc/ipfw/rc.firewall"

gateway_enable="YES"  # разрешаем пересылку пакетов между сетевыми интерфейсами

firewall_nat_enable="YES"  # включаем ядерный nat

firewall_nat_interface="em0"  # указываем внешний интерфейс для nat

firewall_enable="YES"  # включаем ipfw

firewall_script="/usr/local/etc/ipfw/rc.firewall"  # указываем путь, где будут лежать настройки ipfw


Создаем папку и файл с правилами для IPFW:

sudo  mkdir /usr/local/etc/ipfw

sudo  touch /usr/local/etc/ipfw/rc.firewall


Настройка DHCP и DNS сервера:


Устанавливаем  dnsmasq:

cd /usr/ports/dns/dnsmasq/

sudo make config

sudo make install  clean

На  данном этапе у меня перестал работать интернет и сразу не установился dnsmasq, разбираться буду позже поэтому обнуляем правила IPFW командой: sudo ipfw flush


Сохраним оригинал конфигурационного файла:

sudo mv  /usr/local/etc/dnsmasq.conf /usr/local/etc/dnsmasq.conf.default


Создадим  свой:

sudo touch  /usr/local/etc/dnsmasq.conf


Добавим в  него следующие строки:

domain-needed

bogus-priv

interface=em1

resolv-file=/etc/resolv.conf

dhcp-range=10.20.30.5,10.20.30.150,24h


Добавим  в rc.conf строку:

dnsmasq_enable="YES"


Настройка IPFW.


Редактируем правила для IPFW:

Во Freebsd есть замечательный скрипт, с помощью которого можно безопасно настраивать ipfw. Работает он просто. Вы запускаете скрипт, редактируете правила, потом сохраняете их и принимаете изменения. Скрипт после применения правил выводит сообщение о том, что все ли в порядке, записываем правила или нет. Если вы где-то ошиблись и вас отключило от сервера, вы не сможете положительно ответить на вопрос. Скрипт ждет 30 секунд ответа и если его не получает, откатывается на предыдущую версию правил. Вы спокойно подключаетесь и смотрите, где ошиблись. Копируем скрипт:

sudo  cp /usr/share/examples/ipfw/change_rules.sh  /usr/local/etc/ipfw_change_rules

переходим в  папку

cd  /usr/local/etc/

и делаем  его исполняемым:

sudo  chmod 0700 ipfw_change_rules


Добавляем набор правил:

#!/bin/sh

wan="em0"

wanip="10.0.0.87"

lan="em1"

lanip="10.20.30.1"

cmd="ipfw  -q"

$cmd  -f flush

#  Check dynamic rules

$cmd  add 00100 check-state

#  Allow localhost internal activity

$cmd  add 00200 allow ip from any to any via lo0

#  don't allow localhost to send packets outside

$cmd  add 00300 deny ip from any to 127.0.0.0/8

$cmd  add 00310 deny ip from 127.0.0.0/8 to any

#  BLOCKED private network

#$cmd  add 00400 deny ip from any to 10.0.0.0/8 in via $wan

#$cmd  add 00410 deny ip from any to 172.16.0.0/12 in via $wan

#$cmd  add 00420 deny ip from any to 192.168.0.0/16 in via $wan

#$cmd  add 00430 deny ip from any to 0.0.0.0/8 in via $wan

#  BLOCKED autoconfig private network

#$cmd  add 00500 deny ip from any to 169.254.0.0/16 in via $wan

#  BLOCKED TV, IPTV

#$cmd  add 00600 deny ip from any to 240.0.0.0/4 in via $wan

#  Deny fragmented icmp packets

#$cmd  add 00700 deny icmp from any to any frag

#  Deny connections to internal network from external network.

#$cmd  add 00800 deny ip from any to $lan in via $wan

#  Deny broadcast icmp on external interface

#$cmd  add 00900 deny log icmp from any to 255.255.255.255 in via $wan

#$cmd  add 00910 deny log icmp from any to 255.255.255.255 out via $wan

#Deny  virus

#$cmd  add 01000 deny { tcp or udp } from any to any dst-port 135-139,445 via $wan

#  Do NAT for internal network - FOR NATD

#$cmd  02000 divert natd ip from $lan to any out via $wan

#$cmd  02100 divert natd ip from any to any in via $wan

#  Allow established connects

$cmd  add 03000 allow tcp from any to any established

#  Allow SSH connection to server

$cmd  add 04000 allow tcp from any to me 2299 in via $wan

#DNS

$cmd  add 05000 allow udp from any to $wanip 53 in via $wan

$cmd  add 05100 allow udp from $wanip 53 to any out via $wan established

#Time  sync

$cmd  add 06000 allow udp from any to $wanip 123 in via $wan

$cmd  add 06100 allow udp from $wanip 123 to any out via $wan established

#  Allow outgoing traffic

$cmd  add 07000 allow ip from any to any out xmit $wan

#Allow  Steam&GTAOnline connection 10.0.0.10

$cmd  add 08000 allow udp from any to any 4444, 4445, 6672, 1988, 61455, 61457,  61456, 61458, 27000, 27015, 27030, 27014, 27050 in via $wan

$cmd  add 08100 allow udp from any to 10.0.0.10 4444, 4445, 6672, 1988, 61455,  61457, 61456, 61458, 27000, 27015, 27030, 27014, 27050 via $lan

###SSH  to Asus RT-N16 #1

$cmd  add 09000 allow tcp from any to 10.20.30.50 2233 via $wan

$cmd  add 09100 allow tcp from any to 10.20.30.50 2233 via $lan

###SSH  to Asus RT-N16 #2

$cmd  add 10000 allow tcp from any to 10.20.30.70 2244 via $wan

$cmd  add 11000 allow tcp from any to 10.20.30.70 2244 via $lan

###SSH  to VBoxUbuntu

$cmd  add 12000 allow tcp from any to 10.20.30.75 2006 via $wan

$cmd  add 12100 allow tcp from any to 10.20.30.75 2006 via $lan

#Allow  TORRENTS connection 10.0.0.10

$cmd  add 13000 allow udp from any to any 30341 in via $wan

$cmd  add 13100 allow udp from any to 10.20.30.10 30341 via $lan

#  Allow HTTP connection to the server

$cmd  add 14000 allow tcp from any to me 80, 9000-31000, 1900, 2827, 4444, 4445,  7652, 7653, 7654, 7656, 7657, 7658, 7659, 7660, 8998, 32000 in via $wan

#  Allow FTP connection to the server

$cmd  add 15000 allow tcp from any to me 20,21,64000-64999 via $wan

#  Allow icmp echo request, echo reply and expire packet TTL

$cmd  add 16000 allow icmp from any to any icmptypes 0,8,11

#  port 80 for WWW server

$cmd  add 17000 allow tcp from any to me 80 via $wan

#  Allow connects from localnetwork

$cmd  add 18000 allow all from any to any via $lan

#  NAT enable

$cmd  add 19000 nat 1 log ip from any to any via $wan

#  Deny other activity

$cmd  add 65534 deny log logamount 10000 ip from any to any


Дебажим неработающий IPFW или отсутствие интернета в LAN за шлюзом.

Интернет не работает, на шлюзе работает и всё пингует, на клиенте нет, расстроен, я в который раз пытался осилить NAT уровня ядра и снова неудача. Но я решил в этот раз протоколировать все свои действия, дабы потом не вспоминать что, где, когда и как я лихорадочно писал в конфигах, менял конфиги на другие, добавлял\удалял опции в rc.conf, sysctl.conf и так далее, решил в данной ситуации я не хочу решить  проблему просто надавив всеми средствами, а именно мне хочется знать в чём же таки, проблема и моя невнимательность, а я уверен, что проблема именно в  невнимательности. В поисках решения я попал на страницу форума bsdportal и там у пользователя была схожая  проблема, так вот ему предложили стартануть с использованием такого набора  правил:

#!/bin/sh  -

fwcmd="/sbin/ipfw"

${fwcmd}  -f flush

${fwcmd}  -f queue flush

${fwcmd}  -f pipe flush

${fwcmd}  table all flush

${fwcmd}  nat 1 delete

# VAR

if_lan="em0"

if_inet="em1"

ssh="2299"

#  Local

${fwcmd}  add allow all from any to any via lo0

${fwcmd}  add deny all from any to 127.0.0.0/8

${fwcmd}  add deny all from 127.0.0.0/8 to any

# ssh  

${fwcmd}  add allow tcp from any to any ${ssh} via ${if_lan}

${fwcmd}  add allow tcp from any ${ssh} to any via ${if_lan}

# NAT

${fwcmd}  nat 1 config if ${if_inet} same_ports reset log

${fwcmd}  add nat 1 ip from "table(0)" to any out via ${if_inet}

${fwcmd}  add nat 1 ip from any to any in via ${if_inet}

# any

${fwcmd}  add allow ip from any to any

# добавить в таблицу 0 сеть для НАТа

${fwcmd}  table 0 add 10.0.0.0/24


Недолго  думая:

sudo mv /usr/local/etc/ipfw/rc.firewall /usr/local/etc/ipfw/rc.firewall.290518

sudo touch /usr/local/etc/ipfw/rc.firewall


Ctrl + C и Ctrl + V

sudo service ipfw restart

Я  сразу лезу в виртуалку с ubuntu, открываю yandex.ru и он загрузил страницу!

Возвращаюсь на шлюз:

$ sudo ipfw show

00100 0 0 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 tcp from any to any dst-port 2299 via em1

00500 0 0 allow tcp from any 1223 to any via em1

00600 4561 535130 nat 1 ip from table(0) to any out via em0

00700 8593 9325806 nat 1 ip from any to any in via  em0

00800 13845 9920496  allow ip from any to any

65535 6 1358 allow ip from any to any

и с  восторгом наблюдаю, как бодро пакеты побежали через NAT. Надо признаться, что первый конфиг IPFW я скопипастил из боевого шлюза на 9.1, который до сих пор работает, только там у меня такая связка: NATD, BIND, DHCPD. Я просто убрал оттуда divert natd и задействовал ipfw nat, но что-то  пошло не так. Мораль такова, что не стоит вот так запросто копипастить конфиги и надеяться, что всё будет работать, особенно, если реализован тот же NAT разными способами, возможно не стоит если версии FreeBSD разные. Предполагаю, что конфигурация с которой стоит начать — это та самая на которой у меня благополучно всё взлетело, но мне на хватит смелости утверждать, что она идеальная для начала,  но тем не менее в ней минимум правил, а значит её дебажить куда легче, чем мою.  Дальше я просто пошёл по всем своим правилам из старой конфигурации и начал их по одному добавлять, каждый раз перезапуская IPFW и проверяя работу интернета на клиентской ubuntu, как только меня выкидывало по ssh или отваливался интернет на клиенте, я заходил в vmware и руками ставил комментарий на правило и дальше с ним работал, пробуя различные  варианты. Проблемные оказались правила:

# Allow outgoing  traffic

${fwcmd} add 63800  allow ip from any to any out xmit ${if_inet}

# Allow established  connects

${fwcmd} add 63900  allow tcp from any to any established

как выяснилось их нужно ставить после правил NAT, иначе нет интернета. Также до сих пор не решил проблему как быть с правилами, в которых должен быть указан внешний IP адрес, у меня он динамический, поэтому если укажу, то в момент смены  адреса последствия непредсказуемы, но скорее всего будет что-то не работать.


Переводим IPFW из открытого режима в закрытый:

Убедились, что после окончательного конфига IPFW ничего не отвалилось и всё, что нужно, работает. Пишем в файл  /boot/loader.conf строку: net.inet.ip.fw.default_to_accept=0

перезагружаем  сервер:

sudo shutdown -r  now


Резюме.


В rc.conf

clear_tmp_enable="YES"

syslogd_flags="-ss"

sendmail_enable="NONE"

hostname="Gateway"

ifconfig_em0="DHCP"

ifconfig_em1="inet  10.20.30.1 netmask 255.255.255.0"

defaultrouter="10.0.0.1"

local_unbound_enable="NO"

sshd_enable="YES"

ntpd_enable="YES"

powerd_enable="YES"

gateway_enable="YES"

firewall_nat_enable="YES"

firewall_nat_interface="em0"

firewall_enable="YES"

firewall_script="/usr/local/etc/ipfw/rc.firewall"

dnsmasq_enable="YES"

# Set  dumpdev to "AUTO" to enable crash dumps, "NO" to disable

dumpdev="AUTO"


После всех манипуляций с правилами у меня получился такой /usr/local/etc/ipfw/rc.firewall:

#!/bin/sh -

fwcmd="/sbin/ipfw"

${fwcmd} -f flush

${fwcmd} -f queue flush

${fwcmd} -f pipe flush

${fwcmd} table all flush

${fwcmd} nat 1 delete

# VAR

if_lan="em1"

if_inet="em0"

ssh="2299"

# Check dynamic rules

${fwcmd} add 00100 check-state

# localhost internal activity

${fwcmd} add 00200 allow all from any to any via lo0

${fwcmd} add 00210 deny all from any to 127.0.0.0/8

${fwcmd} add 00220 deny all from 127.0.0.0/8 to any

# ssh

${fwcmd} add 00300 allow tcp from any to any ${ssh} via ${if_lan}

${fwcmd} add 00310 allow tcp from any ${ssh} to any via ${if_lan}

# BLOCKED private network

#${fwcmd} add 00400 deny ip from any to 10.0.0.0/8 in via ${if_inet}

${fwcmd} add 00410 deny ip from any to 172.16.0.0/12 in via ${if_inet}

${fwcmd} add 00420 deny ip from any to 192.168.0.0/16 in via  ${if_inet}

${fwcmd} add 00430 deny ip from any to 0.0.0.0/8 in via ${if_inet}

# BLOCKED autoconfig private network

${fwcmd} add 00500 deny ip from any to 169.254.0.0/16 in via  ${if_inet}

# BLOCKED TV, IPTV

${fwcmd} add 00600 deny ip from any to 240.0.0.0/4 in via ${if_inet}

# Deny fragmented icmp packets

${fwcmd} add 00700 deny icmp from any to any frag

# Deny connections to internal network from external network.

${fwcmd} add 00800 deny ip from any to 10.20.30.1 in via ${if_inet}

# Deny broadcast icmp on external interface

${fwcmd} add 00900 deny log icmp from any to 255.255.255.255 in via  ${if_inet}

${fwcmd} add 00910 deny log icmp from any to 255.255.255.255 out via  ${if_inet}

#Deny virus

${fwcmd} add 01000 deny { tcp or udp } from any to any dst-port  135-139,445 via ${if_inet}

#Allow Steam & GTAOnline connection

${fwcmd} add 03000 allow udp from any to any 4444, 4445, 6672, 1988,  61455, 61457, 61456, 61458, 27000, 27015, 27030, 27014, 27050 in via  ${if_inet}

${fwcmd} add 03100 allow udp from any to 10.20.30.10 4444, 4445, 6672,  1988, 61455, 61457, 61456, 61458, 27000, 27015, 27030, 27014, 27050 via  ${if_lan}

#Allow TORRENTS connection 10.20.30.10

${fwcmd} add 04000 allow udp from any to any 30341 in via ${if_inet}

${fwcmd} add 04100 allow udp from any to 10.20.30.10 30341 via  ${if_lan}

# Allow icmp echo request, echo reply and expire packet TTL

${fwcmd} add 05000 allow icmp from any to any icmptypes 0,8,11

# Allow connects from localnetwork

${fwcmd} add 06000 allow all from any to any via ${if_lan}

# NAT

${fwcmd} nat 1 config if ${if_inet} same_ports reset log

${fwcmd} add 63000 nat 1 ip from "table(0)" to any out via  ${if_inet}

${fwcmd} add 63100 nat 1 ip from any to any in via ${if_inet}

# Allow outgoing traffic

${fwcmd} add 63800 allow ip from any to any out xmit ${if_inet}

# Allow established connects

${fwcmd} add 63900 allow tcp from any to any established

# add in table 0 NAT network

${fwcmd} table 0 add 10.20.30.0/24

# Deny other activity

${fwcmd} add 65534 deny log logamount 10000 ip from any to any


В /boot/loader.conf:

net.inet.ip.fw.one_pass=1

net.inet.ip.fw.default_to_accept=0


В /usr/local/etc/dnsmasq.conf:

domain-needed

bogus-priv

interface=em1

resolv-file=/etc/resolv.conf

dhcp-range=10.20.30.5,10.20.30.150,24h


В /etc/resolv.conf:

nameserver  8.8.8.8

nameserver  8.8.4.4

nameserver  10.0.0.1


Ядро  скомпилировано с добавленными опциями:

options  IPFIREWALL

options  IPFIREWALL_DEFAULT_TO_ACCEPT

options  IPFIREWALL_VERBOSE

options  IPFIREWALL_VERBOSE_LIMIT=50

options  IPFIREWALL_NAT

options  LIBALIAS

options  IPDIVERT

options  IPSTEALTH

options  DUMMYNET

options  DEVICE_POLLING

options  HZ="1000"

options  ROUTETABLES=2

options  MROUTING

device  coretemp


P.S.

Далее  будет перенос всего на физическую машину (core i5 +  32GB RAM), которая уже заждалась сменить на боевом посту  своего старичка (core 2 duo + 4GB RAM). Настройка VirtualBox и запуск гостевой Debian на ней iVideon  server. Следующим шагом поднятие VPN.

Если  кому-то понадобится образ настроенных виртуалок, могу поделиться, напишите  мне.

К моменту. когда я закончил писать статью у меня на Ubuntu отвалился интернет, судя по логам постоянно блочился проходящий траффик с боевого шлюза на 9.1, попробовал отключать разные правила, перезапускать IPFW и в итоге инет появился, при этом все правила снова работают, я с  самого начала закомментировал правило запрещающее приватную сеть 10.0.0.0, но  у меня сложилось впечатление, что дело именно в том, что текущий шлюз у меня  10.0.0.1. В общем время покажет, особенно когда перееду на новую 11.1  физически.


Добавка-поправка.

Пока суть да дело, до дома доехал опять инет отвалился на клиенте, понял в чем проблема, у меня было задублировано одно правило:

# Allow connects from localnetwork

${fwcmd} add 06000 allow all from any to any via ${if_lan}

один раз стояло до NAT, второй раз после NAT, убрал то что после, полёт нормальный.

Показать полностью
[моё] Freebsd Ipfw Nat Длиннопост Текст
48
3
DELETED
6 лет назад

"Это канал об анимэ?"⁠⁠

"Это канал об анимэ?"
[моё] Bash im Кеды Пропатчено Freebsd Kde
24
14
DELETED
6 лет назад

У FreeBSD сегодня день рождения!⁠⁠

19 июня 1993 года признано официальным днём рождения freebsd. Сегодня у нашей фряхи юбилей - ей 25 годиков. И хоть сейчас она немного сдаёт свои позиции, но мы все равно должны быть благодарны ей за сервисы Netflix, PlayStation и Sony в целом, а так же за огромную кучу различных сервисов, которыми вы, возможно, пользуетесь ежедневно.
Желающие отблагодарить могут задонатить разрабам (будет символично, если задонатить 25 денег).
https://www.freebsdfoundation.org/national-freebsd-day/

У FreeBSD сегодня день рождения! Freebsd, Интернет, День рождения

P.s. Кеды уже давно пропатчены))

Freebsd Интернет День рождения
14
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии