# 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 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"
# 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
# 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
.
# 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" что-бы сделать маршрут постоянным.
# 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
# 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"
Проверка настроек с 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...)
# 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
Проверить, запущен-ли фаервол (как правило в типичных конфигурациях)
# iptables -L -n -v # Статус Открыть iptables firewall # iptables -P INPUT ACCEPT # Открыть все # iptables -P FORWARD ACCEPT # iptables -P OUTPUT ACCEPT # iptables -Z # Сбросить счетчики во всех цепочках # iptables -F # Сбросить все цепочки # iptables -X # Удалить все цепочки
# ipfw show # Статус # ipfw list 65535 # Какого типа фаервол, закрытый или открытый # sysctl net.inet.ip.fw.enable=0 # Отключить # sysctl net.inet.ip.fw.enable=1 # Включить
Проверить и если нужно, включить форвардинг маршрутов
# 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
Проверить и если нужно включить:
# 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 если данный хост является шлюзом
# ndd -set /dev/ip ip_forwarding 1 # Включить форвардинг маршрутов 0=off, 1=on
# 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
# 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
В Unix DNS записи действительны для всех интерфейсов и хранятся в /etc/resolv.conf. Зона к которой принадлежит хост, так-же хранится в этом файле. Минимальная конфигурация:
nameserver 78.31.70.238 search sleepyowl.net intern.lab domain sleepyowl.net
Проверить доменное имя:
# hostname -d # Что и dnsdomainname
В Windows, DNS настраивается для каждого интерфейса. Что-бы посмотреть текущую конфигурацию и сбросить DNS кэш, используйте:
# ipconfig /? # Помощь по использованию команды # ipconfig /all # Посмотреть всю информацию, включая DNS
Вы можете очистить DNS кэш, но помните, некоторые приложения используют свой, персональный кэш(например Фаерфокс), и на них обнуление не подействует.
# /etc/init.d/nscd restart # Перезапустить nscd(демон кэширования имен) Linux/BSD/Solaris # lookupd -flushcache # OS X Tiger # dscacheutil -flushcache # OS X Leopard и более новые # ipconfig /flushdns # Windows
Dig, утилита для проверки настроек DNS. Например, используем для проверки публичный DNS server 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 # Проверить локальный сервер # dig @204.97.212.10 NS MX heise.de # Запрос к внешнему серверу # dig AXFR @ns1.xname.org cb.vu # Получить всю зону (пересылка зоны)
Еще одна полезная утилита, 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, вместо запуска named
, для разрешения имени в адрес. Формат следующий:
78.31.70.238 sleepyowl.net sleepyowl
Приоритет между файлом hosts и DNS запросом, может быть сконфигурирован в /etc/nsswitch.conf
И /etc/host.conf
. Подобный файл присутствует и в Windows, лежит как правило тут:
C:\Windows\System32\Drivers\Etc
Некоторые дистрибутивы (SuSE) используют в качестве клиента dhcpd. Интерфейс по-умолчанию eth0.
# dhcpcd -n eth0 # Обновить (не всегда работает) # dhcpcd -k eth0 # Освободить и выключить
"Срок аренды"(lease) и вся информация сохраняется в:
/var/lib/dhcpcd/dhcpcd-eth0.info
FreeBSD (и Debian) использует dhclient. Для настройки нужного сетевого интерфейса (например bge0):
# dhclient bge0
"Срок аренды"(lease) и вся информация сохраняется в:
/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"; }
ipconfig
:
# ipconfig /renew # Обновить все адаптеры # ipconfig /renew LAN # Обновить сетевой адаптер с именем "LAN" # ipconfig /release WLAN # Освободить сетевой адаптер с именем "WLAN"
Неплохой идеей будет дать сетевым адаптерам более внятные имена
# 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
Показать все активные сетевые интерфейсы # 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
(www.hping.org), сборщик/анализатор IP пакетов, fping
(fping.sourceforge.net), проверка хостов round-robin.
Traffic control управляет очередностью, порядком, планированием и другими параметрами трафика в сети. Следующие примеры, небольшие практические приемы для Linux and FreeBSD позволяющие лучше использовать пропускную способность.
Для 512kbit Кбитного модема.
# 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 использует dummynet
, шейпер трафика, конфигурирыемый в IPFW. 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 # Отклонять излишний трафик
Приоритет очередей в 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 # Удалмть все QoS
# 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 # Удалмть все правила кроме дефолтовых
# 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.
# cat /etc/yp.conf ypserver servername domain domain.net broad cast
netcat
, можно использовать сокращение nc
. Так-же можете посмотреть socat.
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 сокет. Текст передается по нажатию Enter.alice# nc -lp 4444 bob # nc 192.168.1.1 4444