Интернет. Настройки. Тарифы. Телефон. Услуги

Linux на службе у провайдера. Настройка локальной сети в Linux Аварийный Веб сервер

Просмотрев большинство тематических постов на хабре был безмерно удивлён тому факту, что крайне скудно освещена тема использования ОС Unix/Linux на службе интернет провайдеров (Internet service provider). Данной статьёй я частично попытаюсь восполнить данный пробел.

Почему в сети интернет наблюдается полное отсутствие таких статей догадаться не сложно - всех кто использует Linux/FreeBSD в ISP сразу же обвиняют в нищебродстве и советуют купить Cisco или уж на совсем крайний случай Juniper. Именно поэтому вторая цель данной статьи показать читателю, что некоторые технические решения на базе ОС Linux по многим показателям на порядки превосходят брэндовые решения от самых известных вендоров.

Шейпинг
Наш первый опыт «нестандартного» использования Linux появился сразу после начала предоставления услуг широкополосного доступа для физических лиц. Необходимо было чем-то «порезать» внешний канал каждого из наших пользователей. Здесь ввиду отсутствия собственных наработок на данную тему пришлось изобретать свой собственный велосипед применяя cbq и собственной обвязки к нему. Данная схема проработала пару месяцев пока мы не осознали всех ее минусов и не упёрлись в производительность машины.

Все дело в том, что система начала «съедать» слишком много soft interrupts даже при не большом трафике, на вскидку при транзитном трафике в 300 мегабит и 30 kpps при 1000 линейных правил cbq (по 2 правила вход/выход на пользователя) на каждом интерфейсе в top si достигал 100%.

Если бы в данный момент перед нами бы встала та же самая задача при тех де самых технических средствах мы бы решали ее с помошью Linux htb tc + хэш фильтры .

NAT
Так как на тот момент мы являлись небольшим местячковым домашним провайдером, то при подключении абонентов физических лиц у нас остро встал вопрос выдавать ли клиенту «белый» маршрутизируемый ip адрес, либо ограничиться выдачей «серых» ip адресов.

Остановились на «серых» адресах, т. к. при их использовании существенно экономился столько ценных на тот момент материал как реальные адреса. Также несколько повышалась безопасность и комфортность работы наших пользователей, т. к. извне их компьютеры не были доступны всей сети интернет «напрямую».

Собрали схему при которой мы «выгоняем» копию всего трафика пользователей (SPAN PORT) в нужные сетевые порты сервера с ОС Linux на борту, а далее с помощью ipt_NETFLOW формируем поток FLOWS на нужный сервер.

Более подробно вместе с конфигами схема работы приведена .

P.S. Мы в курсе, что большинство оборудования Cisco может лить уже сформированный NETFLOW поток в указанный Netflow коллектор, но в нашей схеме сети на тот момент такого оборудования просто не могло быть:)

Терминация пользовательских сетей.
Изначально хотелось дать пользователю ip адрес, маску подсети, и шлюз и не грузить его настройками PPPoE, PPTP, VPN что в конечном итоге должно было несколько разгрузить службу технической поддержки (что и произошло на практике), так как настройка сети становилась достаточно тривиальной в любой пользовательской ОС.

Решив применить наш предыдущий опыт использования ОС Linux пришли к следующей схеме, в ключевых местах сети устанавливаются Linux сервера с парой четырех-портовых сетевых адаптеров, один линк «уходит» в сторону ядра сети остальные в сторону «кластеров». В результате на каждом интерфейсе поднимается куча VLAN -ов с несколькими сетями в каждом из них.

Всего у нас на всю сеть было 4 сервера примерно по 10k абонентов на каждом.

Пиковый трафик достигаемый каждым сервером в часы пик стремился к полутора мегапакетам в секунду. Сервера обменивались друг с другом маршрутами по протоколу ospf .

Блокирование доступа пользователям осуществлялось с помошью ipset.

Бордер
Тут бы на этой счастливой ноте и закончить, но хочется написать о еще одном «не стандартном» применении Linux - в качестве бордера. Так получилось, что у нас вышла из строя Cisco ASR выполняющая функции бордера на который приходило 2 full view от двух аплинков.

Здесь следует небольшое лирическое отступление. Компания Cisco на 100% сдержала свои обязательства и выслала замену в течении нескольких часов после заполнения необходимых документов, но как Вы понимаете клиенты не будут ждать сутки пока новое железо прилетит в наши края. Решение было спонтанным.

Со склада взяли сервер установили на него Linux + quagga и благополучно поставили вместо вышедшей из строя Cisco.

В час пик это чудо инженерной мысли «прожевало» входящий поток 1.4Гбит/c, при суммарном kpps на всех интерфейсах порядка 400.

P.S. В ходе работы нами было собрано и протестировано множество RPM пакетов для дистрибутива CentOS 5 вот лишь небольшой их список:

  • ipset
  • connlimit
  • conntrack-tools
  • ipt_netflow
  • flow-tools
  • quagga

Cкачать их можно из данного репозитория.

P.P.S. Если у Вас есть свои собственные наработки или заметки по поводу использования *nix like OS на службе ISP, добро пожаловать.

Статья пользователя , к сожалению ему нахватает кармы на то чтобы самому запостить, поэтому все плюсы/минусы прошу оставлять в его карме

Linux

# ethtool eth0 # Показать Ethernet статус # ethtool -s eth0 speed 100 duplex full # Принудительная установка режима 100Mbit Full duplex # ethtool -s eth0 autoneg off # Отключить автоопределение # ethtool -p eth1 # Мигать индикатором сетевой карты - если поддерживается # ip link show # Список сетевых интерфейсов в Linux (подобна ifconfig ) # ip link set eth0 up # Активировать сетевой интерфейс (или отключить). Аналог "ifconfig eth0 up " # ip addr show # Список всех IP адресов в Linux (аналог ifconfig ) # ip neigh show # Тоже что и arp -a

Другие операционный системы

# ifconfig fxp0 # Проверить поле "media " во # arp -a # Показать таблицу маршрутизации сети, роутера (или хоста) (все OS) # ping cb.vu # Пинговать хост # traceroute cb.vu # Печатать путь маршрута до точки назначения # ifconfig fxp0 media 100baseTX mediaopt full-duplex # 100Mbit full duplex (FreeBSD) # netstat -s # Общесистемная статистика по всем сетевым протоколам Дополнительные инструменты для отладки сети, которые не всегда установлены по умолчанию, но найти их не трудно: # arping 192.168.16.254 # Пропинговать на уровне ethernet # tcptraceroute -f 5 cb.vu # Использует tcp вместо icmp что-бы отслеживать маршрут через фаервол

Маршрутизация сети

Печать таблицы маршрутизации

# route -n # Linux или используйте "ip route " # netstat -rn # Linux, BSD и UNIX # route print # Windows

Добавление и удаление маршрута

FreeBSD
# route add 212.117.0.0/16 192.168.1.1 # route delete 212.117.0.0/16 # route add default 192.168.1.1 Добавить постоянный маршрут сети в /etc/rc.conf
static_routes="myroute" route_myroute="-net 212.117.0.0/16 192.168.1.1"
Linux
# route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.16.254 # ip route add 192.168.20.0/24 via 192.168.16.254 # Как и выше с ip маршрутом # route add -net 192.168.20.0 netmask 255.255.255.0 dev eth0 # route add default gw 192.168.51.254 # ip route add default via 192.168.51.254 dev eth0 # Как и выше с ip маршрутом # route delete -net 192.168.20.0 netmask 255.255.255.0
Solaris
# route add -net 192.168.20.0 -netmask 255.255.255.0 192.168.16.254 # route add default 192.168.51.254 1 # 1 = прыгнуть на следующий шлюз # route change default 192.168.50.254 1 Постоянные записи устанавливаются в /etc/defaultrouter .

Windows

# Route add 192.168.50.0 mask 255.255.255.0 192.168.51.253 # Route add 0.0.0.0 mask 0.0.0.0 192.168.51.254 Используйте "add -p " что-бы сделать маршрут постоянным.

Настройка дополнительных IP адресов

Linux

# ifconfig eth0 192.168.50.254 netmask 255.255.255.0 # Первый IP адрес # ifconfig eth0:0 192.168.51.254 netmask 255.255.255.0 # Второй IP адрес # ip addr add 192.168.50.254/24 dev eth0 # Эквивалентные команды для ip # ip addr add 192.168.51.254/24 dev eth0 label eth0:1

FreeBSD

# ifconfig fxp0 inet 192.168.50.254/24 # Основной IP адрес сетевого интерфейса # ifconfig fxp0 alias 192.168.51.254 netmask 255.255.255.0 # Добавить второй IP адрес в виде псевдонима # ifconfig fxp0 -alias 192.168.51.254 # Удалить псевдоним для второго IP адреса Постоянные записи в /etc/rc.conf
ifconfig_fxp0="inet 192.168.50.254 netmask 255.255.255.0" ifconfig_fxp0_alias0="192.168.51.254 netmask 255.255.255.0"

Solaris

Проверка настроек с ifconfig -a # ifconfig hme0 plumb # Установить сетевую карту # ifconfig hme0 192.168.50.254 netmask 255.255.255.0 up # Первый IP адрес # ifconfig hme0:1 192.168.51.254 netmask 255.255.255.0 up # Второй IP адрес

Смена MAC адреса

Для начала вы должны деактивировать сетевой интерфейс.. и не говорите никому для чего вы хотите сменить MAC...) # ifconfig eth0 down # ifconfig eth0 hw ether 00:01:02:03:04:05 # Linux # ifconfig fxp0 link 00:01:02:03:04:05 # FreeBSD # ifconfig hme0 ether 00:01:02:03:04:05 # Solaris # sudo ifconfig en0 ether 00:01:02:03:04:05 # Mac OS X Tiger # sudo ifconfig en0 lladdr 00:01:02:03:04:05 # Mac OS X Leopard Под Windows существует масса инструментов для смены MAC адреса, например etherchange или обратитесь у гуглу на тему "Mac Makeup", "smac".

Сетевые порты

Список открытых портов: # netstat -an | grep LISTEN # lsof -i # Ссписок всех интернет соединений Linux # socklist # Список открытых портов Linux # sockstat -4 # Список приложений слушающих на отррытых портах # netstat -anp --udp --tcp | grep LISTEN # Linux # netstat -tup # Список активных соединений входящие/исходящие Linux # netstat -tupl # Список слушающих портов Linux # netstat -ano # Windows

Фаерволы

Linux

# iptables -L -n -v # Статус Открыть iptables firewall # iptables -P INPUT ACCEPT # Установить политику по умолчанию лоя цепочки INPUT - "открыть все" # iptables -P FORWARD ACCEPT # что и строкой выше только для цепочки FORWARD # iptables -P OUTPUT ACCEPT # аналогично для цепочки OUTPUT # iptables -Z # Сбросить счетчики во всех цепочках # iptables -F # Сбросить все цепочки # iptables -X # Удалить все цепочки

FreeBSD

# ipfw show # Статус # ipfw list 65535 # Epyfnm тип фаервол, закрытый или открытый # sysctl net.inet.ip.fw.enable=0 # Отключить штатный фаервол IPFW # sysctl net.inet.ip.fw.enable=1 # Включить штатный фаервол IPFW

Форвардинг маршрутов

Linux

Проверить и если нужно, включить форвардинг маршрутов # cat /proc/sys/net/ipv4/ip_forward # Проверить включен или нет форвардинг, 0=off, 1=on # echo 1 > /proc/sys/net/ipv4/ip_forward или добавьте в /etc/sysctl.conf:

FreeBSD

Проверить состояние форвардинга и если нужно включить: # sysctl net.inet.ip.forwarding # Проверить включен форвардинг или нет, 0=off, 1=on # sysctl net.inet.ip.forwarding=1 # sysctl net.inet.ip.fastforwarding=1 # Для выделенного маршрута или фаервола Запись в /etc/rc.conf:
gateway_enable="YES" # Установите YES если данный хост является шлюзом

Solaris

# ndd -set /dev/ip ip_forwarding 1 # Включить форвардинг маршрутов 0=off, 1=on

Трансляция сетевых адресов NAT

Linux

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # Включить NAT # iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 20022 -j DNAT \ --to 192.168.16.44:22 # Перебросить порт 20022 на внутренний IP порт ssh # iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 993:995 -j DNAT \ --to 192.168.16.254:993-995 # Переброс портов из диапазона 993-995 # ip route flush cache # iptables -L -t nat # Проверить статус таблицы NAT

FreeBSD

# natd -s -m -u -dynamic -f /etc/natd.conf -n fxp0 Или добавьте в /etc/rc.conf: firewall_enable="YES" # YES - Включить фаервол firewall_type="open" # Тип фаервола (см. /etc/rc.firewall ) natd_enable="YES" # Включить natd (если firewall_enable == YES ) natd_interface="tun0" # Сетевой интерфейс или IP адрес, который будет использовать natd natd_flags="-s -m -u -dynamic -f /etc/natd.conf" Для переброски портов: # cat /etc/natd.conf same_ports yes use_sockets yes unregistered_only # redirect_port tcp insideIP:2300-2399 3300-3399 # Диапазон портов redirect_port udp 192.168.51.103:7777 7777

DNS

В Unix, DNS записи действительны для всех интерфейсов и хранятся в /etc/resolv.conf . Зона к которой принадлежит хост, так-же хранится в этом файле. Минимальная конфигурация:
nameserver 78.31.70.238 search sleepyowl.net intern.lab domain sleepyowl.net
Проверить доменное имя: # hostname -d # Аналог dnsdomainname

Windows

В Windows, DNS настраивается для каждого интерфейса. Что-бы посмотреть текущую конфигурацию и сбросить DNS кэш, используйте: # ipconfig /? # Помощь по использованию команды # ipconfig /all # Посмотреть всю информацию, включая DNS

Очистка DNS кэша

Вы можете очистить DNS кэш, но помните, некоторые приложения используют свой, персональный кэш (например Фаерфокс), и на них обнуление не подействует. # /etc/init.d/nscd restart # Перезапустить nscd (демон кэширования имен) Linux/BSD/Solaris # lookupd -flushcache # OS X Tiger # dscacheutil -flushcache # OS X Leopard и более новые # ipconfig /flushdns # Windows

Пересылка DNS запросов

Dig , утилита для проверки настроек DNS. Например, используем для проверки публичный DNS сервер 213.133.105.2 ns.second-ns.de . Обратите внимание с какого сервера клиент получит ответ (упрощенный ответ). # dig sleepyowl.net sleepyowl.net. 600 IN A 78.31.70.238 ;; SERVER: 192.168.51.254#53(192.168.51.254) Маршрутизатор 192.168.51.254 , прислал в качестве ответа, запись типа А . Запись определенного типа для запроса и DNS сервер, могут быть указаны с символом @: # dig MX google.com # dig @127.0.0.1 NS sun.com # Проверить локальный dns сервер # dig @204.97.212.10 NS MX heise.de # Запрос к внешнему dns серверу # dig AXFR @ns1.xname.org cb.vu # Получить всю зону (пересылка зоны) с dns сервера Еще одна полезная утилита, host : # host -t MX cb.vu # Получить записть типа MX (Mail Exchange ) # host -t NS -T sun.com # Получить NS запись через TCP соединение # host -a sleepyowl.net # Получить все

Обратные запросы

Узнать имя по IP адресу можно с помощью таких утилит как dig , host или nslookup : # dig -x 78.31.70.238 # host 78.31.70.238 # nslookup 78.31.70.238

файл /etc/hosts

Отдельные хосты могут быть настроены в файле /etc/hosts , вместо запуска named , для разрешения имени в адрес. Формат следующий: 78.31.70.238 sleepyowl.net sleepyowl Приоритет между файлом hosts и DNS запросом, может быть сконфигурирован в /etc/nsswitch.conf И /etc/host.conf . Подобный файл присутствует и в Windows, и расположен как правило по адресу c:\windows\system32\drivers\etc

Протокол динамической адресации сети - DHCP

h4>Linux Некоторые дистрибутивы (SuSE ) используют в качестве клиента dhcpd . Интерфейс по-умолчанию eth0 . # dhcpcd -n eth0 # Обновить (не всегда работает) # dhcpcd -k eth0 # Освободить и выключить Lease (cрок аренды - это время, на которое IP адрес может быть выдан определенному хосту сети) и вся информация сохраняется в: /var/lib/dhcpcd/dhcpcd-eth0.info

FreeBSD

FreeBSD (и Debian) использует dhclient . Для настройки нужного сетевого интерфейса (например bge0 ): # dhclient bge0 Срок аренды и вся информация сохраняется в: /var/db/dhclient.leases.bge0 Используйте /etc/dhclient.conf для добавления опций или изменения существующих: # cat /etc/dhclient.conf interface "rl0" { prepend domain-name-servers 127.0.0.1; default domain-name "sleepyowl.net"; supersede domain-name "sleepyowl.net"; }

Windows

Dhcp аренда(lease) может быть обновлена с помощью ipconfig : # ipconfig /renew # Обновить все адаптеры # ipconfig /renew LAN # Обновить сетевой адаптер с именем "LAN" # ipconfig /release WLAN # Освободить сетевой адаптер с именем "WLAN" Неплохой идеей будет дать сетевым адаптерам более внятные имена

Анализ трафика

Анализ трафика с помощью tcpdump

# tcpdump -nl -i bge0 not port ssh and src \(192.168.16.121 or 192.168.16.54\) # tcpdump -n -i eth1 net 192.168.16.121 # Выборка входящий/исходящий по одному IP адресу # tcpdump -n -i eth1 net 192.168.16.0/24 # Выборка входящий/исходящий по адресу сети # tcpdump -l > dump && tail -f dump # Вывод через буфер # tcpdump -i rl0 -w traffic.rl0 # Писать заголовки пакетов в бинарный файл # tcpdump -i rl0 -s 0 -w traffic.rl0 # Писать в бинарник полные пакеты # tcpdump -r traffic.rl0 # Прочитать из файла (так-же для ethereal) для дальнейшего анализа # tcpdump port 80 # Классические команды # tcpdump host google.com # tcpdump -i eth0 -X port \(110 or 143\) # Проверить защищенность pop или imap # tcpdump -n -i eth0 icmp # Выборка icmp (ping ) пакетов # tcpdump -i eth0 -s 0 -A port 80 | grep GET # -s 0 для полных пакетов, -A для ASCII Некоторые важные опции:
  • -A - Печатать текст из пакетов (без заголовков)
  • -X - Печатать пакеты в hex и ASCII
  • -l - Включить буферизацию вывода
  • -D - Показать все активные сетевые интерфейсы
В операционных системах Windows для анализа трафика можно воспользоваться windump с www.winpcap.org . Windump -D выведет список интерфейсов.

Сканирование сети с помощью программы nmap

Nmap , это многофункциональный сканер безопасности с возможностью определения установленной операционной системы. Работает во всех , так-же существует версия под Windows. Если вы не просканируете свои сервера, за вас это сделают доброжелатели.) # nmap cb.vu # Просканировать все зарезервированные порты хоста # nmap -sP 192.168.16.0/24 # Выяснить какой IP каким хостом используется в сети 0/24 # nmap -sS -sV -O cb.vu # Провести stealth SYN сканирование с определением типа и версии OS PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 3.8.1p1 FreeBSD-20060930 (protocol 2.0) 25/tcp open smtp Sendmail smtpd 8.13.6/8.13.6 80/tcp open http Apache httpd 2.0.59 ((FreeBSD) DAV/2 PHP/4. [...] Running: FreeBSD 5.X Uptime 33.120 days (since Fri Aug 31 11:41:04 2007) Другие полезные инструменты: hping , конструктор/анализатор IP пакетов, fping (fping.sourceforge.net), проверка хостов round-robin.

Контроль трафика (QoS)

Traffic control управляет очередностью, порядком, планированием и другими параметрами трафика в сети. Следующие примеры, небольшие практические приемы для Linux и FreeBSD позволяющие оптимизировать использование пропускной способности.

Ограничение загрузок(upload)

Linux
Для 512 Кбитного модема. # tc qdisc add dev eth0 root tbf rate 480kbit latency 50ms burst 1540 # tc -s qdisc ls dev eth0 # Статус # tc qdisc del dev eth0 root # Удалить очередь # tc qdisc change dev eth0 root tbf rate 220kbit latency 50ms burst 1540
FreeBSD
FreeBSD использует dummynet - шейпер трафика, встроенный в штатный фаервол операционной системы, IPFW или подгружаемый как модуль ядра FreeBSD. Pipes , так называемые трубы для трафика, ограничивают пропускную способность в {bit/s|Byte/s}, 0 означает безлимитный. Например, ограничим пропускную способность в 500 Кбит. # kldload dummynet # Загрузить модуль если необходимо # ipfw pipe 1 config bw 500Kbit/s # Создать трубу с ограничением трафика 500Кбит/с # ipfw add pipe 1 ip from me to any # Отклонять излишний трафик

QoS Quality of service

Linux

Приоритет очередей в tc для оптимизации VoIP трафика. Полные примеры можно посмотреть на voip-info.org или www.howtoforge.com . Следующий пример демонстрирует использование QoS для VoIP трафика. # tc qdisc add dev eth0 root handle 1: prio priomap 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 0 # tc qdisc add dev eth0 parent 1:1 handle 10: sfq # tc qdisc add dev eth0 parent 1:2 handle 20: sfq # tc qdisc add dev eth0 parent 1:3 handle 30: sfq # tc filter add dev eth0 protocol ip parent 1: prio 1 u32 \ match ip dport 10000 0x3C00 flowid 1:1 # Использовать диапазон портов match ip dst 123.23.0.1 flowid 1:1 # или/и использовать IP сервера Проверить состояние или удалить: # tc -s qdisc ls dev eth0 # Проверить состояние очереди # tc qdisc del dev eth0 root # Удалмть все очереди

FreeBSD

Максимальная пропускная способность соединения 500Кбит/с, мы назначаем 3 очереди с приоритетами 100:10:1 для VoIP:ssh:всего остального , соответственно. # ipfw pipe 1 config bw 500Kbit/s # ipfw queue 1 config pipe 1 weight 100 # ipfw queue 2 config pipe 1 weight 10 # ipfw queue 3 config pipe 1 weight 1 # ipfw add 10 queue 1 proto udp dst-port 10000-11024 # ipfw add 11 queue 1 proto udp dst-ip 123.23.0.1 # или/и используем IP # ipfw add 20 queue 2 dsp-port ssh # ipfw add 30 queue 3 from me to any # Все остальное Состояние и удаление: # ipfw list # Посмотреть состояние # ipfw pipe list # Состояние Pipes # ipfw flush # Очистить все правила кроме дефолтовых

NIS (Информационная служба сети)

Некоторые команды для конфигурирования NIS клиента: # ypwhich # Получитьимя имя подключенного NIS сервера # domainname # Доменное имя NIS # ypcat group # Показать группу из NIS # cd /var/yp && make # Пересобрать базу данных yp # rpcinfo -p servername # Отчет RPC служб сервера Ypbind запущен? # ps auxww | grep ypbind /usr/sbin/ypbind -s -m -S servername1,servername2 # FreeBSD /usr/sbin/ypbind # Linux # yppoll passwd.byname Map passwd.byname has order number 1190635041. Mon Sep 24 13:57:21 2007 The master server is servername.domain.net.

Linux

# cat /etc/yp.conf ypserver servername domain domain.net broad cast

Сетевая утилита netcat

(nc), известна так-же как "network Swiss Army Knife", предназначена для создания, чтения, записи TCP/IP соединений. Вот несколько полезных примеров, в сети их можно найти массу, например: или . Вместо netcat , можно использовать сокращение nc . Так-же можете посмотреть socat .

Передача файлов

Копирование большого файла через TCP соединение. Передача происходит очень быстро и не требует поднятия NFS, SMB, FTP и т.д... просто сделайте файл доступным на сервере и заберите его с клиента. В данном случае 192.168.1.1 , IP адрес сервера. server# tar -cf - -C VIDEO_TS . | nc -l -p 4444 # Заархивировать директорию и выставить архив на порт 4444 client# nc 192.168.1.1 4444 | tar xpf - -C VIDEO_TS # забрать файл с порта 4444 и разархивировать в дмректорию server# cat largefile | nc -l 5678 # Приготовить к отправке один файл client# nc 192.168.1.1 5678 > largefile # Забрать файл server# dd if=/dev/da0 | nc -l 4444 # Приготовить к отправке файл образа раздела client# nc 192.168.1.1 4444 | dd of=/dev/da0 # Забрать файл образа для создания дублеката раздела client# nc 192.168.1.1 4444 | dd of=da0.img # или забрать файл образа и сохранить как файл server# nc -l 5555 < ./test.file # Файл выставляется в сокет nc с адресом 192.168.1.1 , порт 5555 client# nc 192.168.1.1 5555 > ~/test.file # На другой машине, забираем файл, с 192.168.1.1 порт 5555

Другие трюки

Тут будьте осторожней, вы открываете доступ к своей системе.
Удаленный shell
Опция -e только для Windows версии или используйте nc 1.10 . # nc -lp 4444 -e /bin/bash # Предоставить удаленную оболочку # nc -lp 4444 -e cmd.exe # Удаленная оболочка в Windows
Аварийный Веб сервер
Обслуживать один файл на 80 порту в цикле. # while true; do nc -l -p 80 < unixtoolbox.xhtml; done
Простой TCP чат
Элис и Боб могут общаться через простой TCP сокет. Текст передается по нажатию Enter. alice # nc -lp 4444 bob # nc 192.168.1.1 4444

В Linux существует множество инструментов для мониторинга сетевой активности. Но большинство из них позволяют контролировать только сетевой трафик от вашего компьютера или конкретного интерфейса. Бывают случаи когда нужно понять какая программа наиболее активно использует сетевое соединение, например если у вы со своим медленным интернетом хотите спокойно посмотреть любимые сайты, а тут какая-то программа начинает что-то качать при чем какая не понятно. Вот для таких случаев есть инструмент NetHogs.

В этой статье мы обсудим установку, настройку и особенности работы с NetHogs.

Как сказано на man странице утилиты, NetHogs - небольшой сетевой монитор. Программа группирует сетевую активность не по протоколу или сети, а по группам процессов.

Если вдруг что-то начинает активно использовать интернет соединение, можно просто запустить NetHogs и вы сразу увидите PID виновника. Так как работа утилиты основана на подсистеме proc, на данный момент есть версия только для Linux.

Пользователи Debian подобных систем, в том числе и Ubuntu могут установить утилиту с помощью следующей команды:

sudo apt-get install nethogs

Если вы используете другой дистрибутив, посмотрите детали установки на официальном сайте NetHogs. Для работы утилиты необходимы библиотеки pcap и ncurses, убедитесь что пакеты libncurses5-dev и libpcap0.8-dev установлены.

Кто же использует сеть

NetHogs очень просто использовать. Просто выполните команду nethogs в терминале без каких либо параметров и утилита отобразит сетевую активность для каждого процесса.

Как вы видите программа показывает такие детали как PID, пользователя, сетевой интерфейс, количество данных и скорость передачи или приема.

Обновление данных

По умолчанию NetHogs обновляет информацию каждую секунду, но вы можете использовать опцию -d для указания интервала обновления. Например для обновления каждые три секунды наберите:

sudo nethogs -d 3

Указываем сетевой интерфейс

Вы можете указать NetHogs с каким сетевым интерфейсом работать, просто набрав имя интерфейса в командной строке. Например для мониторинга трафика на eth1 используйте:

sudo nethogs eth1

Можно использовать опцию -p для перехвата трафика в неразборчивом режиме (так называемый monitor mode), но это не рекомендуется.

Горячие клавиши

В утилите предусмотрены горячие клавиши с помощью которых можно контролировать способ представления. Например нажмите M во время выполнения программы чтобы поменять формат представления приема или передачи данных. Возможны варианты в kb/s, kb, b mb.

Например, отображение в мегабайтах:

Также вы можете нажать R или S для сортировки по количеству принятых или переданных данных. И как всегда Q для выхода из программы.

Выводы

NetHogs идеально подходит для случаев, когда вы хотите, поймать и уничтожить процесс, который съедает много интернет трафика. Плюс - это утилита с открытым исходным кодом, что означает что вы можете попытаться понять как она работает или даже переписать ее под себя.

Вы использовали раньше NetHogs или другой подобный инструмент? Поделитесь своими мыслями в комментариях.

Похожие записи:


This is the default welcome page used to test the correct operation of the Apache2 server after installation on Ubuntu systems. It is based on the equivalent page on Debian, from which the Ubuntu Apache packaging is derived. If you can read this page, it means that the Apache HTTP server installed at this site is working properly. You should replace this file (located at /var/www/html/index.html) before continuing to operate your HTTP server.

If you are a normal user of this web site and don"t know what this page is about, this probably means that the site is currently unavailable due to maintenance. If the problem persists, please contact the site"s administrator.

Configuration Overview

Ubuntu"s Apache2 default configuration is different from the upstream default configuration, and split into several files optimized for interaction with Ubuntu tools. The configuration system is fully documented in /usr/share/doc/apache2/README.Debian.gz . Refer to this for the full documentation. Documentation for the web server itself can be found by accessing the manual if the apache2-doc package was installed on this server.

The configuration layout for an Apache2 web server installation on Ubuntu systems is as follows:

/etc/apache2/ |-- apache2.conf | `-- ports.conf |-- mods-enabled | |-- *.load | `-- *.conf |-- conf-enabled | `-- *.conf |-- sites-enabled | `-- *.conf

  • apache2.conf is the main configuration file. It puts the pieces together by including all remaining configuration files when starting up the web server.
  • ports.conf is always included from the main configuration file. It is used to determine the listening ports for incoming connections, and this file can be customized anytime.
  • Configuration files in the mods-enabled/ , conf-enabled/ and sites-enabled/ directories contain particular configuration snippets which manage modules, global configuration fragments, or virtual host configurations, respectively.
  • They are activated by symlinking available configuration files from their respective *-available/ counterparts. These should be managed by using our helpers a2enmod, a2dismod, a2ensite, a2dissite, and a2enconf, a2disconf . See their respective man pages for detailed information.
  • The binary is called apache2. Due to the use of environment variables, in the default configuration, apache2 needs to be started/stopped with /etc/init.d/apache2 or apache2ctl . Calling /usr/bin/apache2 directly will not work with the default configuration.

Document Roots

By default, Ubuntu does not allow access through the web browser to any file apart of those located in /var/www , public_html directories (when enabled) and /usr/share (for web applications). If your site is using a web document root located elsewhere (such as in /srv) you may need to whitelist your document root directory in /etc/apache2/apache2.conf .

The default Ubuntu document root is /var/www/html . You can make your own virtual hosts under /var/www. This is different to previous releases which provides better security out of the box.

Reporting Problems

Please use the ubuntu-bug tool to report bugs in the Apache2 package with Ubuntu. However, check before reporting a new bug.

Please report bugs specific to modules (such as PHP and others) to respective packages, not to the web server itself.

Linux изначально создавался для работы с сетью, поэтому, работа с сетью -- это одна из сильных сторон Linux.

Linux поддерживает популярные сетевые протоколы, такие как TCP/IP и SMB (NetBIOS), обладает усовершенствованными инструментами для мониторинга и фильтрации сетевого трафика. В Linux доступны такие службы как FTP, web-сервер, Windows файл- и принтсервер. Linux даже предоставляет возможность централизованного управления службами, Virtual Private Networking (VPN) и удаленного вызова процедур.

Linux может работать с любым сетевым оборудованием, для которого у него есть драйвер. Драйвера Linux либо встраиваются в ядро, либо компилируются как загружаемые модули. Многие распространенные сетевые карты по умолчанию поддерживаются ядром Linux. При выборе сетевого оборудования стоит использовать устройства, перечисленные в списке совместимых устройств "Hardware Compatibility List". Используйте самые последние версии дистрибутивов Linux.


Как правило, если вы используете совместимое сетевое оборудование, ваша карта будет автоматически распознана при инсталляции системы. Вы можете проверить сетевое оборудование, обнаруженное системой, используя команду ifconfig. По умолчанию ifconfig демонстрирует вам активные сетевые устройства. Для того чтобы увидеть все сетевые устройства, добавьте ключ -a:

Оставьте свой комментарий!