201311051000


    -- 1, 2, 3, 4, 5 -- охотник
    -- 1, 2, много   -- "сетунь"-код
    -- 1, много      -- поклонница двоичного счета

Сетевой интерфейс
-----------------

Не вдаваясь в подробности технологий расщепления песка на кремний и кислород, следует подчеркнуть, что индивидуальным номером сетевого интерфейса является его MAC адрес. В популярной сегодня ОС Windows 8.1 для определения адреса своего компьютера правой кнопкой мыши я щелкнул на иконку сетевого интерфейса (notification area on the right side of the taskbar) [1]. Далее

  Network and Sharing Center
    Connections: Ethernet -> 
    
  Ethernet Status
    [ Details ] ->
                               
  Network Connection Details
  Property        Value
  ...
  Physical Address: 08-00-27-B3-A1-AF <<< MAC адрес

В случае Интернет-сетей программно устанавливается соответствие вашего физического адреса с адресом, назначенным по протоколу IPv4, например 192.168.1.67 либо по протоколу IPv6 -- например fe80::bcd5:1964:d903:35c1. Далее устройство, получившее адрес IP, через шлюзы (gateway) хабы (hub) коммутаторы (switch) и маршрутизаторы (router) -- все перечисленное часто входит в комплект называемый "локальной сетью" и в простейшем случае упрятано в смартофон , связанный через Wi-Fi и коробочкой, соединяющей вас с Интернет провайдером -- устанавливает связь с удаленной стороной путем передачи фрагментов информации (datagram). На пути следования датаграммы, как правило, находится десяток-другой узлов передачи информации, которые удобно посмотреть командой traceroute.

Чтобы одновременно работающие под одним IP адресом программы не мешали друг другу, заголовок датаграммы (конверт письма) должен содержать еще одно число -- номер порта (связан с используемым интернет протоколом, имеет значение по умолчанию). Часто о выбранном номере порта стороны предварительно договариваются на этапе установления связи [2].

Для ограничения доступа к компьютеру посредством сетевого доступа служат firewall программы. Если настройка firewall не создает в вас чувства уверенности в надежности изоляции компьютера от нежелательного проникновения извне можно использовать различные сценарии поведения:

  -- Интеллектуальный робот активно общается в чатах и социальных сетях (Элиза [3]), участвует в опросах и онлайн лотереях, в то время как в глубоком подвале, владелец соединения совершенствует робота на отключенном от сети компьютере, программируя в основном на им же созданном языке FMEOL (for my eyes only).

  -- Не могу (или не хочу) объяснить почему, но я слепо верю firewall от фирмы "Рога и Копыта" [4] и намереваюсь использовать решения только от названной фирмы.
  
  -- ...

  -- Поклонник театрального искусства, в 3D-среде типа "Second Life" сутки напролет играет социальную личность, рисует нового аватара и его виртуальный гардероб. "Но на самом то деле я...", постепенно забывая свое первое "Я".
  
В общем случае можно порекомендовать начать изучение темы сетевых коммуникаций с устаревших коммерческих проектов типа DOS или ранних версий Linux. Поняв что-зачем, переходим к настройкам в современных системах, пытаясь понять семантику фразы [2]:

Remote Procedure Call (RPC) dynamic port allocation is used by remote administration applications such as Dynamic Host Configuration Protocol (DHCP) Manager, Windows Internet Name Service (WINS) Manager, and so on. RPC dynamic port allocation will instruct the RPC program to use a particular random port above 1024.

Также полезно проверять найденные в форумах решения для имеющихся в наличии виртуальных или реальных компьютеров, так как с переходом на новые версии многое меняется. Например [5]:

  Ответ на: комментарий от fdeadalf 18.11.2010 22:29:47
  > Не могли бы вы поподробнее описать
    http://www.opennet.ru/docs/RUS/iptables/
  anonymous (18.11.2010 22:37:24)

  Ответ на: комментарий от anonymous 18.11.2010 22:32:42
  > А не могли бы вы с первой по последнюю строчку написать так как это должно быть вписано?

    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -A INPUT -m state --state NEW -p tcp -s 109.107.123.13 --dport 20 -j ACCEPT
    iptables -A INPUT -m state --state NEW -p tcp -s 109.107.123.13 --dport 80 -j ACCEPT
    iptables -A INPUT -j REJECT

  это закрыто вообще все, но открыто два порта для нужного ИП и для локалхоста открыто все
  alexa_k (18.11.2010 23:22:33)

  > А не могли бы вы с первой по последнюю строчку написать так как это должно быть вписано?

    # запретить всё, что не разрешено для входящих
    iptables -P INPUT DROP 

    # разрешить подключаться с IP-адреса 1.2.3.4 по протоколу TCP на порт 20
    iptables -A INPUT -s 1.2.3.4 -p tcp --dport 20 -j ACCEPT

    # разрешить подключаться с IP-адреса 1.2.3.4 по протоколу TCP на порт 80
    iptables -A INPUT -s 1.2.3.4 -p tcp --dport 80 -j ACCEPT

    # посмотреть таблицу установленных правил
    iptables -nL
  ...
  вводить строчки в консоли от рута, по одной. Если уже че-то чудили, то сперва ввести: iptables -F iptables -X
  как более хитрый вариант можете посмотреть knockd,
  он открывает доступ к порту по секретной комбинации тыканий по другим портам
  ...
  @def $HOSTS = (1.2.3.4 1.2.3.5)
  @def $PORTS = (20 www)

  table filter {
    chain INPUT {
      policy DROP;
      proto tcp saddr $HOSTS dport $PORTS ACCEPT;
    }

    chain OUTPUT policy ACCEPT;
  }

  Впервые увидел человеческую программу на IPTABLES вместо тупой последовательности команд..
  Ну, сам iptables так не умеет. Это ferm, парсер к нему такой.
  
Итоги. Настройка firewall современной операционной системы либо сложна в изучении, либо нет информации, почему упрощенная настройка либо состояние по умолчанию заслуживает доверия. Достаточно просто однако достроить сложную часть так, что выход в глобальную сеть организован через некоторый дешевый компонент, изучение которого оказывается более посильной задачей. Например, можно использовать компьютер Raspberry PI за 60$, подключенный в сторону сети Интернет через разъем ethernet, а к смартофону/планшету/лаптопу.. через NIC USB WiFi (еще 10$). Совсем дешево можно решить проблему с помощью рутера (например TP-Link TL-R402M, Hind: 12,00 €), но возможно захочется подправить и зашить свою прошивку). Общий подход -- установить понятное* решение между зонами "Cruel World" и DMZ (demilitarized zone [6]):

  Cruel World --- [Simple Box] --- DMZ (Demilitarized Zone)
  
*) Или такое которому можно доверять.

В качестве упражнения предлагаю построить барьер проникновения NAT на двух виртуальных компьютерах (приложение А, ТПТ 2008 год, предмет "Компьютерные сети").

[1]. http://windows.microsoft.com/is-is/windows-vista/the-taskbar-overview
[2]. http://support.microsoft.com/kb/154596
[3]. http://en.wikipedia.org/wiki/ELIZA
[4]. http://ru.wikipedia.org/wiki/Золотой_телёнок
[5]. http://www.linux.org.ru/forum/admin/5578751
[6]. http://en.wikipedia.org/wiki/DMZ_%28computing%29

------------------------------------------------------------------------

Приложение А. 

Простой NAT

I. Настройка VirtualBox

Первый компьютер, Router имя F19

   VirtualBox Fedora 19 ( NIC1 -->  WAN *,
                          NIC2 -->  LAN **
                          RAM  --> 64M
                          HD   --> 4G f19.vdi ***
                          Linux 2.6)

Второй компьютер, LAN клиент Damn Small Linux DSL x.x.x, имя DSL

       ( NIC1 --> LAN **, RAM --> 128, HD отсутствует,
         смонтированный образ CDROM dsl-x.x.x.iso,
         Linux 2.4)
                                
*) WAN предложен в данном случае программой VirtualBox 
   Соединение через NAT VirtualBox
       10.0.2.2  - VBox NAT Gateway
       10.0.2.15 - адрес получен через DHCP
                   клиент VIrtualBox
**) LAN в данном случае, это "Internal Network" VirtualBox
    (их может быть 1-9, каждая подсеть должна иметь индивидуальное имя. 
    Имя для LAN1 например "Cisco")

***) f19.vdi можно построить основываясь на 

  http://nelus.tpt.edu.ee/txt/D2550%28fedora18-lxde%29.txt

II. F19.

  1. Распаковать 

        7za x f19-...7z
 
  2. Настроить виртуальное железо (п.I), загрузить ОС.

  3. настройка eth0 (DHCP)

     cd /etc/sysconfig/network-scripts/
     nano ifcfg-eth0
     ...

     Вариант 1 (eth0 WAN)     Вариант 2 (eth0 LAN)

     DEVICE=eth0              DEVICE=eth1   
     BOOTPROTO=dhcp           BOOTPROTO=none
     ONBOOT=yes               IPADDR=192.168.1.1
                              NETWORK=192.168.1.0
                              NETMASK=255.255.255.0
                              ONBOOT=yes

     Вариант 1 (eth0 LAN)     Вариант 2 (eth0 WAN)

     DEVICE=eth0              DEVICE=eth1
     BOOTPROTO=none           BOOTPROTO=dhcp
     IPADDR=192.168.1.1       ONBOOT=yes
     NETWORK=192.168.1.0
     NETMASK=255.255.255.0
     ONBOOT=yes

  4. Проверить соединение по интерфейсу eth0.

     service network status  - показывает текущее состояние
     service network start   - стартует eth0, eth1

     ifconfig eth0

     elinks neti.ee - должно быть возможно

  5. ifconfig eth1

     ping 192.168.1.1  (ping-уем сами себя в LAN сети)

  6  NAT

     iptables -t nat -F   flush
     iptables -t nat -X   flush
     iptables -t nat -L   покажет состояние (должен быть пустой список)

  7. Разрешить проброс (forwarding) пакетов

     cat /proc/sys/net/ipv4/ip_forward       показать состояние (0)

     echo 1 > /proc/sys/net/ipv4/ip_forward  активировать (1)
     echo 0 > /proc/sys/net/ipv4/ip_forward  отключить (0)

III. DSL

   1. wget -c http://.../dsl-x.x.x.iso
   2. Монтировать CDROM DSL на виртуальный клиент
      (Linux 2.4, 128M RAM, no HD)
   3. Загрузить ОС.
   4. Настроить интерфейс eth0

     sudo su -                           ; теперь рутом

     ifconfig eth0 192.168.1.111 up      ; некоторый адрес LAN1

     route add default gw 192.168.1.1    ; шлюз LAN1

   5. ping 192.168.1.111                 ; себя
      ping 192.168.1.1                   ; шлюз

   6. Показать наличие соединения с сетью Интернет в браузере Dillo

       neti.ee

