# 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" во FreeBSD
# 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
# 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
Используйте "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 адреса
# 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:
net.ipv4.ip_forward = 1
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 если данный хост является шлюзом
В Unix, DNS записи действительны для всех интерфейсов и хранятся в /etc/resolv.conf. Зона к которой принадлежит хост, так-же хранится в этом файле. Минимальная конфигурация:
В 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:
Отдельные хосты могут быть настроены в файле /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 для добавления опций или изменения существующих:
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]]>, это многофункциональный сканер безопасности с возможностью определения установленной операционной системы. Работает во всех Unix дистрибутивах, так-же существует версия под 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, так называемые трубы для трафика, ограничивают пропускную способность в [K|M]{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.
]]>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]]>.