pfSense 2 Cookbook: Глава 3
Глава 3 Основная конфигурация
В этой главе мы рассмотрим:
— Создание алиасов
— Создание правил форвардинга портов NAT
— Создание правил брандмауэра
— Созание расписания
— Доступ к удалённому рабочему столу
Введение
Базовая функциональность любого брандмауэра включает создание правил форвардинга портов и правил безопасности брандмауэра, и pfSense не является исключением. Эти базовые возможность, плюс некоторые другие могут быть найдены в главном меню Firewall интерфейса pfSense.
Эта глава рассказывает, как конфигурируются эти правила и описывает возможности связанные с ними.
Создание алиасов
Этот рецепт описывает, как использовать, создавать, редактировать и удалять алиасы. Алиасы (или псевдонимы) обеспечивают разгрупировку между правилами и значениями которые могут изменяться в будущем (например IP адреса, порты и пр.). Алиасы следует использовать при любой возможности.
Как это сделать…
1. Переходим на страницу Firewall | Aliases.
2. Нажимаем кнопку [+] для добавления нового алиаса.
3. Добавляем имя (Name) для алиаса.
4. По желанию вводим описание (Description).
5. Выбираем тип алиаса (Type) и на этом заканчиваем базовую конфигурацию. (Смотрите следующий раздел для детального описания каждого типа алиасов (Hosts, Networks, OpenVPN Users, URL и URL Table).
6. Сохраняем изменения (Save).
7. Применяем изменения (Apply), если необходимо.
Как это работает…
Алиас это именованый элемент (т.е. переменная) информации, которая может быть изменена. Алиас хоста — хороший пример: мы можем создать алиас хоста названый Computer1 и хранить его IP адрес 192.168.1.200. Затем, мы можем создать правила брандмауэра и NAT, которые будут использовать алиас Computer1 вместо явного указания IP адреса, который может изменяться. Если IP адрес Computer1 изменится, мы просто отредактируем данные алиаса, вместо того, чтобы редактировать множество правил включающих его. Алиасы позволяют достичь высокой гибкости и простоты работы. Лучше всегда использовать алиасы в повседневной работе.
Немного больше…
Добавление алисов на алиасы является отличным способом для управления и упрощения правил. Для иллюстрации использования алиасов, допустим, что организация имеет один VoIP телефон, которому разрешено взаимодействие с VoIP сервером.
Вот пример правила без использования алиасов
Лучший пример использующий алиасы
Ещё лучший вариант использующий субалиасы
Субалиасы позволят нам легко добавлять больше телефонов простым изменением алиаса
Host alias
Выбор Host(s) в качесте типа алиаса (Type) позволит вам создать алиас который содержит один или несколько IP адресов
Network alias
Выбор Network(s) в качестве типа алиаса позволит создать алиас содержащий одну или несколько сетей (т.е. диапазонов IP адресов)
Port alias
Выбор Port(s) в качестве типа алиаса позволит вам создать алиас содержащий один или более портов
OpenVPN Users alias
Выбор OpenVPN Users в качестве типа алиаса позволит создать алиас содержащий одно или несколько имён пользователей OpenVPN
URL alias
Выбор URL в качестве типа алиса позволит создать алиас содержащий один или более URLs
URL Table alias
Выбор URL Table в качестве типа позволит создать алиас содержащий простой URL указывающий на большой список адресов. Это может быть хорошей помощью когда вам необходимо импортировать большой список IP и/или подсетей.
Использование алиасов
Алиасы могут быть использованы везде где имеется красное поле ввода. Просто начните набирать алиас и pfSense отобразит список доступных алиасов совпадающих с набираемым именем
Замечание:
Доступно автоконтекстное сопоставление набора алиаса. Для примера, если в строке ввода требуется номер порта pfSense отобразит только совпадающие алисы типа Port .
Редактирование алиасов
Для модификации созданых алиасов необходимы следующие шаги
1. переходим на страницу Firewall | Aliases.
2. нажимаем кнопку редактирования для редактирования алиаса.
3. вносим требуемые изменения.
4. Сохраняем (Save) изменения.
5. Применяем (Apply) изменения.
Удаление алиасов
Для удаления алиасов следует
1. Перейти на страницу Firewall | Aliases.
2. Нажать кнопку Delete для удаления алиаса.
3. Сохранить (Save) изменения.
4. Применить (Apply) изменения.
Массовый импорт алиасов
Для импорта списка нескольких IP адресов необходимо выполнить следующие шаги
1. Перейти на страницу Firewall | Aliases.
2. Нажать кнопку Import.
3. Ввести имя алиаса (Alias Name)
4. Ввести описание (Description)
5. Вставить список IP адресов, один на строку, в поле Aliases to Import
6. Сохранить (Save) изменения.
7. Применить (Apply) изменения.
Смотри так же
— Рецепт Создание правил форвардинга портов NAT
— Рецепт Создание правил брандмауэра
— Официальная документация на http://doc.pfsense.org/index.php/Aliases
Создание правил форвардинга портов NAT
Этот рецепт описывает как создать, изменить и удалить правила форвардинга портов
Подготовка
Сложность правил форвардинга (проброса, перенаправления) портов может сильно варьироваться. Каждый аспект правила проброса портов подробно излагается в разделе «Немного больше». Ниже приводится пример типичного сценария форвардинга порта. Мы создадим правило проброса порта для пересылки входящих web запросов (HTTP) к компьютеру сконфигурированному в качестве web сервера.
Как это сделать…
1. Переходим на страницу Firewall | NAT
2. Выбираем закладку Port Forward.
3. Нажимаем кнопку [+] для создание нового правила проброса порта
4. Для Destination port range (диапазон портов назначения), выбираем HTTP для выпадающих списков from и to.
5. Для Redirect target IP (перенаправления целевого IP) указываем web сервер к которому должен направляться данный трафик, по алиасу или по его IP адресу.
6. Для Redirect target Port (пренаправление целевого порта) выбираем HTTP.
7. Добавляем описание (Description), например такое как Forward HTTP to webserver1.
8. Сохраняем изменения.
9. Применяем изменения.
Замечание:
По умолчанию, создаются правила брандмауэра позволяющие прохождение трафика перенаправления, но важно помнить, что правила NAT и правила брандмауэра различны и раздельны. Правила NAT перенаправляют трафик, в то втремя как правила брандмауэра блокируют или позволяют его. Следует помнить, что даже если правила NAT перенаправляют трафик, правила брандмауэра не обязательно позволяют его!
Как это работает…
Весь трафик проходит через список правил NAT отбираясь по следующим критериям
— Интерфейс
— Протокол
— порт и диапазон портов источника
— порт и диапазон портов назначения
Если любой трафик соответствует всем этим критериям, этот трафик будет перенаправлен к указанным параметрам Redirect target IP и Redirect target port.
Замечание:
Подобно всем правилам в pfSense, правила NAT сравниваются сверху вниз. Первое соответствующее правило немедленно выполняется, остальные пропускаются.
Наш конкретный пример может быть прочитан так
Трафик с:
— Интернет (Интерфейс WAN)
— с любого клиента (Source) на любой порт (Source Port Range)
Приходящий на:
— Наш публичный IP адрес (Destination WAN address)
— C запросом web сайта (Protocol: TCP, Destination Port Range: HTTP)
Будет направлен на:
— требуемый компьютер (Redirect Target IP: Webserver1)
— с тем же запросом (Protocol: TCP, Destination Port Range: HTTP)
Немного больше. ..
Правила NAT могут быть сконфигурированы с использованием различных опций, каждая из которых детально описана далее (жирным шрифтом выделены изменяющиеся элементы)
— Disable: Соответственно можно включить или выключить правило NAT
— No RDR (NOT): включение этой опции отключает перенаправление трафика
— Interfaces : Определяет интерфейс для этого правила NAT (обычно WAN)
— Protocol: Определяет протокол для этого правила NAT. Обычно это TCP, UDP, или TCP/UDP, однако могут использоваться GRE и ESP
— Source : обычно источник имеет значение по умолчанию any, однако вы можете определить специфический источник, если необходимо.
— Source Port Range : в основном Source Port Range имеет значение any, однако можно определить специфические порты.
— Destination : значение Destination по умолчанию соответствует WAN адресу (вашему публичному IP), однако может быть определено альтернативное значение.
— Destination Port Range : это порт, трафик которого запрашивается. Если требуется переадресация web трафика, мы выбираем HTTP, который используется настолько часто, что присутствует в выпадающем списке, однако аналогично можно указать и порт 80. Если требуется указать другой порт (например для направления трафика торрента на порту 46635), не забывайте использовать алиасы.
— Redirect Target IP: Это IP адрес внутреннего компьютерак которому мы направляем трафик.
Используйте алиасы!
— Redirect Target Port: Порт компьютера определённого в предыдущем пункте. Используйте псевдонимы!
— Description: описание вводимое здесь копируется в любые правила брандмауэра (предварясь словом «NAT») которые генерируются автоматически.
— No XMLRPC Sync: включение этой опции для правила предотвращает его применение для любых избыточных брандмауэров использующих CARP. Обратитесь к разделу «Конфигурирование отказоустойчивости брандмауэра с помощью CARP» в главе 6 «Избыточность, балансировка нагрузки и отказоустойчивость» для получения подробной информации.
— NAT Reflection: Пркатически всегда используется системой по умолчанию, но может быть включена или отключена в соответствии с правилом, если это необходимо.
— Filter Rule Association: Для данного правила будут автоматически создаваться и назначаться правила брандмауэра.
Перенаправление порта:
Истиные правила перенаправления портов будут направлять трафик на тот же порт внутренней машины что и входящий порт (т.е. диапазон портов назначения Destination port range и целевой порт перенаправления Redirect target port будут совпадать). Однако, никто не запрещает вам перенаправить трафик на другой порт. Обычно для этого существуют две причины
— Безопасность посредством сокрытия: всем известно, что стандартный порт HTTP 80, но если у вас есть «секретный» сайт, доступ к которому вы хотите ограничить, вы можете установить Destination port range на какой-то специфичный порт (например 54321). Пользователям придётся знать, что для доступа к этому сайту в браузере придётся ввести http://www. example.com:54321
— Наличие только одного публичного IP адреса : в небольших средахимеется только один публичный IP адрес и может не получиться подключить множество публичных сервисов. Ну например, «я хочу удалённо управлять двумя различными машинами, а у меня только один IP адрес». Используя перенаправление портов мы можем создать два различных правила NAT.
Первое будет перенаправлять порт 50001 к Computer1 на MSRDP (порт 3389) а второе будет направлять порт 50002 к Computer2 на MSRDP (порт 3389). Таким образом вы сможете управлять двумя машинами с использованием одного IP, указав определённый порт (например example.com:50001, example.com:50002) ну и так далее…
Смотрите так же
— Рецепт Создание алиасов
— Рецепт Создание правил брандмауэра
— Рецепт «Конфигурирование отказоустойчивости брандмауэра с помощью CARP» в главе 6 «Избыточность, балансировка нагрузки и отказоустойчивость».
Создание правил брандмауэра
Этот рецепт описывает как создать правило брандмауэра.
Подготовка
В качестве примера, мы будем создавать правило брандмауэра позволяющее направлять web трафик в соответствии с правилом форвардинга портов NAT которое мы создали в предыдущем примере. Если вы следовали всем указаниям, то как мы уже говорили, автоматически было создано требуемое правило брандмауэра, однако вместо этого мы могли бы указать для Filter Rule Assiciation значение None и использовать этот рецепт для создания собственного правила.
Как это сделать…
1. Переходим на страницу Firewall | Rules
2. Выбираем закладку WAN
3. Нажимаем кнопку [+] для создания нового правила брандмауэра
4. Указываем WAN Inreface
5. Указываем TCP Protocol
6. Указываем any для Source (Источник)
7. Указываем any для Source Port Range (Диапазон портов источника)
8. Указываем Webserver1 для Destination (Назначения)
9. Указываем HTTP для Destination Port Range (Диапазон портов назначения)
10. Указываем Description (Описание)
11. Сохраняем (Save) изменения.
12. Применяем (Apply) изменения.
Как это работает…
Весь трафик пропускается через список правил брандмауэра. Если любой пакет трафика совпадает со всеми критериями правила, это правило будет выполнено (соответственно пакет будет либо позволен либо отброшен)
Замечание:
Подобно всем правилам pfSense, правила брандмауэра проверяются сверху вниз. Первое соответствуещее правило немедленно выполняется а остальные пропускаются. Смотрите раздел «Порядок правил брандмауэра» для получения детальной информации.
Наше правило можно прочитать так:
«Любому порту с любого клиента в Интернет позволен доступ к нашему web серверу на порт 80».
Немного больше…
Правила брандмауэра весьма конфигурируемы. Детальное описание каждой опции правила указано дальше
— Action: Тип действия выполняемого при совпадении правила.
— Pass: если все критерии соответствуют, пакет дозволяется.
— Block: если все критерии соответствуют, пакет блокируется ( так же известно как тихий сброс — silent drop).
— Reject: если все критерии соответствуют, пакет возвращается отправителю.
— Disable: отключает действие правила без необходимости его удаления.
— Interfaces: трафик исходящий с указанного интерфейса будет проверяться данным правилом. Обычно это интерфейс WAN.
— Protocol: определяет проверяемый протокол; зависит от типа трафика определяемого правилом.
— Source: обычно any когда речь идёт о входящем трафике.
— Source Port Range: обычно any когда речь идёт о входящем трафике.
— Destination: обычно это алиас или IP адрес компьютера, который обслуживает этот трафик.
— Destination Port Range: обычно это определённый порт компьютера, который обслуживает этот трафик.
— Log: Включает журналирование для записи пакетов соответствующих данному правилу.
— Description: вводится полное описание правила.
Мы редко знаем исходный порт!
При создании правил, важно помнить, что диапазон Source Port Range практически всегда устанавливается в any. Часто делают ошибку определяя диапазон исходных портов когда делать этого не следует. Помните, когда вы запрашиваете web-сайт, вы запрашиваете порт 80 на чужом компьютере и компьютер решает какой порт открыть для вас. Это ваш исходный порт, постоянно изменяющийся, который вы вероятно никогда не будете знать. Так что, 99% времени мы не знаем диапазона портов источника трафика который позволяем.
Порядок правил брандмауэра
Правила pfSense проверяются сверху вниз. Первое соответствующее правило выполняется, остальные пропускаются. Множество администраторов добавляют весьма специфические правила вверх списка, а более основные помещают вниз.
Для изменения порядка правил, выберите правило и нажмите кнопку [move selected rules before this rule]
Дублирование правил брандмауэра
Конечно, вы можете создать новое правило аналогичное созданному ранее. Но для ускорения процесса, вы можете создать новое правило непосредственно из ранее созданного просто нажав кнопку [+]
Расширенные возможности
Новинка pfSense 2. 0 — секция Advanced Features в правилах брандмауэра. Каждая из следующих опций может быть определена в качестве критерия для правила. Если дополнительная опция не указана, правило будет выполняться только при нахождение соответствия. Нажмите кнопку Advanced для отображения параметров конфигурации каждой опции
— Source OS: эта опция позволяет проверить сответствие операционной системы источника трафика
— Diffserv Code Point: Diffserv это механизм для обеспечения QoS сетевого трафика. Системы могут приоритезировать трафик основываясь на значении его кодовой точки
— Advanced Options: Позволяет определять дополнительные опции IP
— TCP Flags: Определяет флаги TCP которые могут быть установлены
— State Type: Определяет конкретный механизм отслеживания состояния
— No XMLRPC Sync: предотвращает правило при синхронизации с другими членами CARP
— Schedule: определяет расписание, указывающее когда правило действует. Расписание определяется на странице Firewall | Schedules
— Gateway: можно указать шлюз отличный от используемого по умолчанию
— In/Out: Определяет альтернативные очереди и виртуальные интерфейсы
— Ackqueue/Queue: определяет альтернативный порядок очередей
— Layer7: определяет альтернативный контейнер уровня 7
Смотрите так же. ..
— Рецепт Создание алиасов
— Рецепт Создание правила форвардинга портов NAT
— Рецепт Создание расписания
Создание расписания
Этот рецепт описывает как создать расписание.
Подготовка
Расписание позволяет определить когда правила действуют. В первую очередь это относится к правилам брандмауэра, однако блаагодаря общему дизайну расписания можно использовать совместно с другими существующими и планируем функциями pfSense. Если расписание определяется для правила брандмауэра, правило действует только в течение данного периода времени. В следующем примере мы определим расписаниедля нормального рабочего дня с 9.00 до 17.00.
Замечание:
Когда создаётся расписание, важно, чтобы параметры вашего NTP сервера были настроенн коректно. Кроме того следует помнить о часовых поясах и времени светового дня.
Как это сделать…
1. Перейдите на страницу Firewall | Schedules.
2. Нажмите [+] для создания нового расписания.
3. Введите имя расписания (Schedule Name), например WorkHours.
4. Введите описание (Description), например Regular work week hours.
5. В разделе Месяц (Month), нажмите Mon, Tue, Wed, Thu и Fri дл выбора рабочих дней недели.
6. Укажите 9am как время начала действия (Start Time) и 5pm как врем завершения действия (Stop Time).
7. Введите описание временного интервала (Time Range Description), например Monday-Friday 9am-5pm
8. Нажмите Add Time
9. Обратите внимание, что повторющееся время добавлется в настроенные диапазоны (Configured Ranges)
10. Сохраните (Save) изменения.
11. Примените (Apply) изменения, если необходимо.
Как это работает…
Особенности связанные с расписанием будут действовать только в рамках расписания. Для связывания правил брандмауэра с созданным расписанием необходимо
1. Отредактировать созданное правило брандмауэра, или содать новое.
2. Нажать кнопку Schedule Advanced для отображения опций расписания.
3. Выбрать WorkHours в вашем расписание (Schedule)
4. Сохранить (Save) изменения.
5. Применить (Apply) изменения.
Немного больше…
По всей системе существуют иконки, позволяющие визуально определить активность расписания
— Firewall | Schedules: Активное расписание отображается иконкой с «часиками»
— Firewall | Rules: Правила с активным расписанием (относится к правилам которые включены) отображаются с «зелёной стрелкой» в колонке расписания. Правила с неактивным расписанием (относится к правилам которые отключены) отображаются с «красным крестиком» в колонке расписания.
Выбор дней или дней недели.
Раздел месяц (Month) работает двумя способами
— Выбор специфических дней (Selecting specific days): Переключаетесь на требуемый месяц и нажимаете требуемые дни (все года релевантны; любые выбранные дни будут повторяться каждый год)
— Выбор дней недели (Selecting days of the week) : Нажимаете день(дни) недели (месяца релевантны; любые дни будут повторяться каждый месяц)
Смотрите так же:
— Рецепт Создание алиасов
— Рецепт Создание правила форвардинга портов NAT
— Рецепт Создание правила брандмауэра
Доступ к удалённому рабочему столу, полный пример
Рецепт описывает, как позволить доступ к внутренней машине используя протокол удалённого рабочего стола (Microsoft RDP)
Подготовка
Целью данного рецепта является демонстрация типичной задачи брандмауэра. Пример покажет как получить удалённый доступ на машину внутренней сети из любой точки мира посредством Интернет. Для этого потребуется конфигурирование всех опций которые мы рассматривали до этого момента
— DHCP сервер
— статическое сопоставление DHCP
— DNS форвардер
— Алиас
— Форвардинг порта NAT
— Правила брандмауэра
— Расписания
Как это сделать…
1. Для начала присоединим компьютер к нашей сети.
2. Перейдём на страницу Status | DHCP Leases для поиска вновь добавленного компьютера. Нажмём кнопку [+] для связывания нового статического сопоставления для данного устройства
3. Определим статический IP адрес 192.168.1.200 и назовём его laptop1
4. Сделаем так, чтобы наш DNS форвардер автоматически конфигурировал обслуживание статического сопоставления на странице Services | DNS Forwarder, чтобы мы могли легкоссылаться на наш компьютер по имени
5. Создадим алиас который будет использоваться при ссылках на данный компьютер в pfSense, для чего в Firewall | Aliases
6. Создадим расписание на странице Firewall | Schedules для включения удалённого доступа только в рабочее время, когда мы собираемся его использовать. Кроме того, мы снизим вероятность атаки на систему в то время пока мы спим
7. Теперь мы создадим правило NAT для форвардинга всех запросов RDP к нашему компьютеру, на странице Firewall | NAT. Исследование вопроса о RDP подскажут нам, что требуется осуществить форвардин порта TCP 3389 (pfSense включает предустановку для порта MS RDP)
8. Далее, нам необходимо добавить расписание для правила брандмауэра, которое автоматически создаётся на странице Firewall | Rules
9. Сохраним (Save) изменения.
10. Применим (Apply) изменения, если необходимо.
Как это работает…
Наше правило NAT направляет все запросы RDP к нашему компьютеру. Правило NAT всегда включено. Наше правило брандмауэра позволяет удалённое управление компьютером, однако только в определённые часы (Понедельник-пятница с 9. 00 до 17.00). Во время написания этой книги, в субботу 16.00 вы можете видеть, что данное правило отключено.
Немного больше…
Если вам требуетс более серьёзная безопасность, мы можем ограничить внешний доступ только вашим рабочим IP адресом. Сначала нам необходимо создать алиас для вашего офисного IP адреса:
Теперь следует изменить правило брандмауэра таким образом, чтобы оно позволяло принимать запросы только с IP адреса вашей компании (запомните, трафик не соответствующий данному правилу будет блокироваться по умолчанию). Теперь, используя pfSense Filter Rule Association, мы должны изменить источник (Source)для правила брандмауэра.
Так, теперь изменим соответствующее правило NAT. Для источника (Source), нажмём кнопку Advanced и укахем алиас для IP адреса нашей компании.
Затем, дважды проверим что изменения применены вплоть до правила брандмауэра, с которыми они связаны
Смотрите также…
— Рецепт Конфигурирование DHCP в главе 2
— Рецепт Создание статических сопоставлений DHCP в главе 2
— Рецепт Конфигурирование динамического DNS в главе 2
— Рецепт Создание алиасов
— Рецепт Создание правила форвардинга портов NAT
— Рецепт Создание правила брандмауэра
— Рецепт Создание расписания
типы данных — Псевдонимы(алиасы) в перечисления — правила использования (c#)
Сейчас изучаю перечисления в c# и хотел спросить, почему в с# можно использовать псевдоним для любого целого типа данных (byte, sbyte, short, ushort, int, uint, long, ulong) , но нельзя использовать любой системный целый тип данных C# (Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64) ?
Когда я смотрел видео урок, то там был такой пример-объяснение:
Представте себе ситуацию в которой возможно, Вы захотите отказаться от Framework-ов предоставляемых Microsoft в языке c# и отключите импорт всех библиотек и в том числе импорт библиотеки System, и решите создавать свои типы.
Вы ведь можете создавать свои типы? Конечно же да, но при этом у вас должны остаться простейшие типы данных. Так вот, простейшие типы даннных(даже при отключенной библиотеке System) у вас все же останутся, но в виде алиасов, а не в виде полноценной структуры (например byte) которая входит в пространство имен System.
Почему при таком подробном описании ситуации я это все спрашиваю? Дело в том, что далее по уроку автор уделил теме алиасов еще некоторое время (а сам автор страдает забывчивостью сказать что то важное и иногда к сожалению обладает некоторой степенью недосказанности по некоторым вопросам)
Вот в чем мой вопрос: Есть ли еще причины (помимо вышеприведенного примера) почему в перечислениях используют алиасы (псевдонимы)?
Кому интересно, я откопал еще два-три источника насчет самого бага и этой темы:
https://stackoverflow.com/questions/7511102/changing-the-underlying-type-of-an-enumeration-to-long
2)
https://web. archive.org/web/20140310042420/http://connect.microsoft.com/VisualStudio/feedback/details/557064/c-enum-declaration-only-accepts-value-type-alias-e-g-short-int-long-instead-of-net-valuetype-e-g-system-int16-system-int32-system-int64
3) https://social.msdn.microsoft.com/Forums/en-US/70b8b7f1-a561-4117-8c78-41880e723da2/enumeration-and-its-underlying-type-c?forum=csharplanguage
- c#
- типы-данных
1
В текущей (6-й) версии компилятора C# — псевдонимы простых типов — это действительно псевдонимы, а не какие-то магические «вещи которые останутся в коде когда отключат все библиотеки, включая System».
int
в коде — это то же самое что System.Int32
. Или, при подключенном пространстве имен System
, что позволяет напрямую упоминать в коде типы из него — Int32
. Они обрабатываются компилятором абсолютно одинаково.
Это все один и тот же тип из сборки mscorlib.dll. Просто его можно упоминать в коде по сокращенному имени. Исключительно ради удобства при печати и чтении кода.
И да, можно создавать перечисления с указанием полного имени типа:
using System; enum SomeEnum : Int32 { None, Some }
или без using:
enum SomeEnum : System.Int32 { None, Some }
это то же самое что
enum SomeEnum : int { None, Some }
В старой (5.0) и более ранних версиях C# — ключевые слова int
/long
/byte
иногда могли использоваться в тех местах, где нельзя было использовать Int32
. На мой взгляд, это просто старый баг/недоделка в спецификации языка. К тому же упрощенная проверка позволяла обойтись без семантического анализа при проверке базового типа enum.
Подробнее об этом расписано в соседнем ответе и в ответе на аналогичный ответ на enSO.
Никакого хитрого смысла или особо продуманного поведения в этом не было.
10
Так указано в спецификации для C# 5.0.
14.1 Enum declarations
enum-declaration
:attributes
optenum-modifiers
optenum
identifier
enum-base
optenum-body
;
opt
enum-base: : integral-type
где integral-type
integral-type: sbyte byte short ushort int uint long ulong char
И далее в тексте
Each enum type has a corresponding integral type called the underlying type of the enum type. This underlying type must be able to represent all the enumerator values defined in the enumeration. An enum declaration may explicitly declare an underlying type of byte, sbyte, short, ushort, int, uint, long or ulong.
Note that char cannot be used as an underlying type. An enum declaration that does not explicitly declare an underlying type has an underlying type of int.
Каждый тип перечисления имеет соответствующий целочисленный тип, называемый базовый тип типа перечисления. Это базовый тип должен иметь возможность представлять все значения определенные в перечислении.
Декларация перечисление может явно объявить базовый тип byte
, sbyte
, short
, ushort
, int
, uint
, long
или ulong
.
Обратите внимание, что char
не может быть использован в качестве базового типа. Определение перечисления, в котором явно не объявлен базовый тип имеет тип int
.
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
О правилах псевдонимов функций
О правилах псевдонимов функций
|
Новый | Ссылка | Сгенерированный вывод | История | Подробнее… |
Назначение
Существует два типа правил псевдонимов функций:
- Для функций Java : Правила псевдонима функции определяют запрос правила функции для пользователей (не разработчиков), которые принимают решение правила или создавать отчеты. Правило псевдонима предоставляет необязательное описание на естественном языке. и подсказка, которая поддерживает определенные списки выбора в правиле принятия решений формы.
- Для выражений SQL: правила псевдонимов функций обеспечивают компактную упаковку сложных выражений SQL, которые необходимы в некоторых случаях при выполнении запросов к базе данных.
Process Commander предоставляет большое количество правил псевдонимов функций SQL, которые пользователь может выбрать; пользователь также может создать собственное правило, если ни одно из предложенных не подходит.
Используйте ту же команду New , чтобы создать новое правило любого типа. В зависимости от типа псевдонима на вкладках «Ссылка» и «Сгенерированные выходные данные» отображаются разные поля.
Для псевдонимов функций Java
Завершите и протестируйте само правило функции перед определением правила псевдонима функции, которое ссылается на него.
Вы не можете определить псевдоним для функционального правила который возвращает сложный тип Java (то есть тип, отличный от Тип Java.lang.String
или примитивный тип, такой как в
).
Где указано
Правила псевдонимов функций Java полезны для функций, которые управляются или менее технические разработчики могут часто использовать в отчетах правила определения, правила дерева решений, когда правила условий, правила Declare Expression и правила ограничений.
Правила функции псевдонима SQL, определенные в классе Embed-UserFunction , поддерживают разработку правил определения отчета. При выполнении такие правила создают фрагменты оператора SQL, а не фрагменты кода Java.
Категория
Правила функции псевдонима являются экземплярами Класс функции-псевдонима-правила . Они относятся к Техническому категория.
Атлас — стандарт Правила псевдонима функции Atlas — стандартные правила функции SQL |
Техническая категория
Помощь Главная
Как использовать псевдоним электронной почты (@CMU.EDU) — Вычислительные услуги — Офис директора по информационным технологиям
Вы можете персонализировать свой адрес электронной почты (Эндрю), создав псевдоним электронной почты (@cmu.edu). Псевдоним — это дополнительный адрес электронной почты, который люди могут использовать для отправки вам сообщений электронной почты в CMU. Создание псевдонима часто облегчает узнавание или запоминание вашего адреса электронной почты.
Например, Энди Каннингем имеет следующий адрес электронной почты Эндрю: [email protected] . Он может создать псевдоним [email protected] , чтобы сделать свой адрес более узнаваемым.
Примечание: Ваш псевдоним электронной почты всегда будет иметь домен @cmu.edu . Дополнительные псевдонимы @andrew.cmu.edu не предлагаются.
Создание псевдонима электронной почты ДЕЛАЕТ : | Создание псевдонима электронной почты НЕ : |
|
|
Ознакомьтесь с разделами ниже, чтобы создать псевдонимы электронной почты для предпочтительного типа учетной записи электронной почты.
Создание псевдонима электронной почты (Google Mail)
- Посетите emailtools.cmu.edu .
- Введите идентификатор пользователя Andrew и пароль , если будет предложено.
- Нажмите Управление адресами электронной почты .
- Нажмите Создать псевдоним электронной почты , введите желаемый псевдоним и нажмите Далее .
- Добавьте новый псевдоним в свою учетную запись CMU Google.
Правила выбора псевдонима электронной почты
Ниже приведены правила, которые необходимо учитывать при выборе псевдонима электронной почты.
- Псевдоним электронной почты должен состоять не менее чем из 2 символов и может содержать до 35 символов, ограниченных буквенно-цифровыми символами, и должен начинаться с буквы.
- Запрошенный вами псевдоним электронной почты не может совпадать с существующим адресом электронной почты в каком-либо домене CMU, который еще не назначен вам. Общие запросы псевдонимов электронной почты включают использование следующего:
- Фамилия: Вы можете выбрать свою фамилию в качестве псевдонима электронной почты @cmu.edu, если это ваша фамилия и она не совпадает с существующим адресом электронной почты, который еще не назначен вам.
- Идентификатор пользователя (Идентификатор пользователя Эндрю и/или идентификатор пользователя организации): Вы можете выбрать свой идентификатор пользователя в качестве псевдонима электронной почты @cmu.edu, если он не совпадает с существующим идентификатором пользователя, который еще не назначен вам.
ПРИМЕЧАНИЕ. Если псевдоним электронной почты соответствует двум или более идентификаторам пользователей, никто не может выбрать этот псевдоним без взаимного соглашения между отдельными лицами и организациями. Если вы окажетесь в такой ситуации, получите разрешение от другого человека, который соответствует вашему желаемому псевдониму электронной почты, и отправьте его по адресу [email protected]
- Вы будете немедленно уведомлены, если выбранный вами псевдоним электронной почты недоступен, и вам будет предложено сделать другой выбор.
Computing Services оставляет за собой право удалять неуместные или вводящие в заблуждение псевдонимы электронной почты.
Часто задаваемые вопросы
Кто может создать псевдоним электронной почты?
Филиалы кампуса с официальной учетной записью электронной почты университета Эндрю могут создать псевдоним электронной почты (@CMU).
Псевдоним электронной почты заменяет мой официальный адрес электронной почты университета?
Нет. Ваш официальный адрес электронной почты университета не изменится и не исчезнет, если вы решите создать псевдоним электронной почты.
Изменит ли установка псевдонима электронной почты имя пользователя и пароль, которые я использую для входа в другие службы?
Нет. Вы по-прежнему будете использовать свой идентификатор пользователя и пароль Andrew для всех служб, требующих веб-входа. Если вам нужно войти в систему со своим адресом электронной почты, вы будете использовать свой официальный адрес электронной почты университета (Эндрю), а не псевдоним электронной почты.
Если я создам псевдоним электронной почты, пропущу ли я сообщения, отправленные на мой официальный адрес электронной почты университета?
Нет. Вы будете получать все свои университетские электронные письма в том же месте, что и сегодня, независимо от того, отправляется ли сообщение на один из ваших псевдонимов электронной почты или на официальный адрес электронной почты университета.
Что делать, если два человека запрашивают один и тот же псевдоним электронной почты?
Псевдонимы электронной почты предоставляются в порядке очереди и немедленно проверяются по запросу. Если ваш псевдоним соответствует критериям и не повторяется, вы получите уведомление на экране о том, что ваш псевдоним доступен для создания.
Как запросить или создать псевдоним электронной почты?
Ознакомьтесь с правилами выбора псевдонимов электронной почты для личных аккаунтов и выполните соответствующие действия. Ваш запрос будет проверен на соответствие соответствующим правилам. Сообщение об ошибке отображается, если псевдоним НЕ соответствует критериям. Если ваш псевдоним соответствует критериям, связь между вашим личным адресом электронной почты Эндрю и вашим новым псевдонимом электронной почты будет управляться автоматически.
Как я узнаю, что псевдоним электронной почты готов?
Для личных учетных записей запрошенный вами псевдоним электронной почты будет немедленно проверен. Если ваш псевдоним соответствует критериям, вы получите уведомление на экране о том, что ваш псевдоним доступен для создания (Google). После создания ассоциация между вашим личным адресом электронной почты Эндрю и вашим новым псевдонимом электронной почты будет управляться автоматически. Следуйте инструкциям на экране для любого времени обработки или требований входа. Как только ваш псевдоним электронной почты будет готов, вы можете установить его в качестве предпочтительного адреса электронной почты.
Сколько псевдонимов я могу добавить?
Вы можете добавить ONE псевдоним электронной почты.
Могу ли я установить внешний адрес электронной почты (например, адрес Gmail) в качестве своего псевдонима электронной почты?
Нет. Все псевдонимы электронной почты должны заканчиваться на @cmu.edu.
Могу ли я удалить созданный псевдоним электронной почты?
Нет. Эта служба предназначена для того, чтобы студенты, преподаватели и сотрудники могли создавать псевдонимы электронной почты, которые можно использовать на долгосрочной основе для удовлетворения текущих академических или деловых потребностей.