telnet -b 192.168.3.10 ya.ru 80 — попробовать подключиться к яндексу на 80 порт
htop — общая загруженность сервера
iftop — статистика сети, ip адреса (apt install iftop);
iftop -i eth0 — для конкретного интерфейса
tcpdump -i eth0 — дамп на интерфейсе (dump -i eth0 host mail.ru — фильтр по mail.ru)
Архив метки: Linux
Контроль пропускной способности в Ubuntu с помощью Traffic Control
htb — корневой способ фильтрации с идентификатором 1. Не классифицированный траффик отнести к классу 1:15 (удалить — delete вместо add):
|
1 |
tc qdisc add dev enp17s10 root handle 1: htb default 15</code><em> </em> |
создать родительский класс (для расширения канала, когда остальные не заняты):
|
1 |
tc class add dev enp17s10 parent 1: classid 1:1 htb rate 100MBit ceil 100MBit |
создать подкласс подсети 30MBit (ceil — расширение канала):
|
1 |
tc class add dev enp17s10 parent 1:1 classid 1:11 htb rate 30MBit ceil 100MBit |
создать подкласс подсети 20MBit (без расширения):
|
1 |
tc class add dev enp17s10 parent 1:1 classid 1:12 htb rate 20MBit |
40MBit для всех остальных:
|
1 |
tc class add dev enp17s10 parent 1:1 classid 1:15 htb rate 40MBit |
Подключить способ фильтрации «sfq» вместо «FIFO», для равномерного распределения:
|
1 2 3 |
tc qdisc add dev enp17s10 parent 1:11 handle 10:0 sfq perturb 10 tc qdisc add dev enp17s10 parent 1:12 handle 20:0 sfq perturb 10 tc qdisc add dev enp17s10 parent 1:15 handle 30:0 sfq perturb 10 |
Фильтры, по подсетям (для «всех остальных» уже всё задано):
|
1 2 |
# <code>tc filter add dev enp17s10 protocol ip parent 1:0 prio 1 u32 match ip src 172.16.1.0/24 flowid 1:11 # tc filter add dev enp17s10 protocol ip parent 1:0 prio 1 u32 match ip src 172.16.2.0/24 flowid 1:12 |
Всем 4, когда не занято, а кое-кому 100 (рабочий вариант):
|
1 2 3 4 |
# <code>tc qdisc add dev $DEV enp17s10 root handle 1: cbq avpkt 1000 bandwidth 100MBit # tc class add dev $DEV enp17s10 parent 1: classid 1:1 cbq rate 4MBit allot 1500 prio 5 bounded isolated # tc filter add dev $DEV enp17s10 parent 1: protocol ip prio 16 u32 match ip dst 192.168.3.0/24 flowid 1:1 # tc filter add dev $DEV enp17s10 parent 1: protocol ip prio 15 u32 match ip dst 192.168.3.104 flowid 1:0 |
При ограничении трафика на внутреннем интерфейсе, он скапливается на внешнем, по этому нужно использовать псевдо устройство IFB (ingress) на внешнем и классифицировать от него.
Добавление сетевой карты в Ubuntu
Воткнули сетевую карту, сигналов нет..
lshw -c network — узнать logical name (в примере enp17s10)
До версии 18:
nano /etc/network/interfaces — вписать в файл, например статический ip
(сохранить — ctrl+o):
|
1 2 3 4 |
auto enp17s10 #автозапуск интерфейса iface enp17s10 inet static address 192.168.3.10 netmask 255.255.255.0 |
sudo service networking restart — перезапуск сети
После версии 18:
sudo su — root
netplan generate — создать файл настроек (если ещё не создан)
nano /etc/netplan/01-netcfg.yaml
(имя файла может быть другим, отступы пробелами обязательны, внести настройки, добавить новый сетевой интерфейс):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
network: </code> <code>version: 2 </code> <code>renderer: networkd </code> <code>ethernets: </code> <code>eth0: </code> <code>addresses: [192.168.2.10/24] </code> <code>routes: </code> <code>- to: 0.0.0.0/0 </code> <code>via: 192.168.2.1 </code> <code>metric: 100 </code> <code>nameservers: </code> <code>addresses: [192.168.2.1, 8.8.8.8] enp17s10: addresses: [192.168.3.10/24] gateway4: 192.168.3.10 nameservers: search: [mydomain, otherdomain] addresses: [192.168.3.10] </code><strong><code>Либо для DHCP:</code></strong><code> network: version: 2 renderer: networkd ethernets: enp17s10: dhcp4: true |
netplan apply — применить и проверить.
sudo service networking restart — перезапуск сети
Проверка сети:
sudo ethtool enp17s10 — сведения, есть ли link
ip link set enp0s3 up — включить, если нет
mtr yandex.ru — трассеровка
Настройка DHCP и DNS в Linux Ubuntu с помощью dnsmasq:
apt-get install dnsmasq — установка
nano /etc/dnsmasq.conf
Вписать:
|
1 2 3 |
interface=</code>enp17s10<code> #имя интерфейса bind-interfaces dhcp-range=192.168.3.100-192.168.3.199,255.255.255.0,12h #диапазон, время резерва |
service dnsmasq restart — перезапуск службы
Web server в Linux Ubuntu 18.04
В видео Ubuntu 14.04
apt-get install apache2 — установить апач
apt-get install zip — установить zip
apt-get install libapache2-mod-auth-mysql php5.6-mysql mysql-server — установить mysql в Ubuntu до 15.10, дальше установить перезапись ссылок
add-apt-repository ppa:ondrej/php — репозиторий php 5.6, которого нет с 16 Linux’а
apt-get install php5.6 libapache2-mod-php5.6 php5.6-cli — установить php 5.6
wget https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb — скачать mysql репозиторий в текущий каталог
dpkg -i mysql-apt-config_0.8.13-1_all.deb — добавить репозиторий mysql
apt-get update — обновить список репозиториев
apt-get install php5.6-mysql mysql-server — Установить mysql сервер в Linux 15.10+
— Лучше задать пароль минимум 8 символов.
a2enmod rewrite — перезапись ссылок web-servera в понятный читабельный вид
apt-get install phpmyadmin — установить phpmyadmin
ln -s /usr/share/phpmyadmin /var/www/html — символьная ссылка для работы phpmyadmin
reboot — перезагрузить
вход по адресу http://192.168.2.6/phpmyadmin
Ошибки, проблемы
1. «The mbstring extension is missing. Please check your PHP configuration.» — установить: apt install -y php5.6-mbstring php-gettext
2. «(HY000/1045): Access denied for user ‘phpmyadmin'» — переустановить phpmyadmin:
dpkg-reconfigure -plow phpmyadmin
проверить пароль на root; проверить настройки mysql: mysql_secure_installation
FTP server в Linux Ubuntu
apt-get install ssh — Удалённый доступ ssh через putty
apt-get install vsftpd — установить ftp сервер
nano /etc/vsftpd.conf — редактировать файл конфигурации (поправить коменты):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
listen=YES </code><em><code>#служба </code></em> <em><code>vsftpd будет сама слушать порт входящих соединений.</code></em><code> anonymous_enable=NO </code><em><code>#запретить вход анонимам</code></em><code> local_enable=YES </code><em><code>#разрешить вход локальным пользователям</code></em><code> write_enable=YES </code><em><code>#разрешить загрузку файлов</code></em><code> local_umask=022 </code><em><code>#полный доступ владельцу, чтение группе и остальным.</code></em><code> use_localtime=YES </code><em><code>#использовать локальное время сервера</code></em><code> connect_from_port_20=YES </code><em><code>#подключаться с 20 порта</code></em><code> xferlog_enable=YES </code><em><code>#запись логов</code></em><code> xfrlog_file=/var/log/vsftpd.log </code><em><code>#файл с логами</code></em><code> xferlog_std_format=YES </code><em><code>#формат логов</code></em><code> iddle_session_timeout=600 </code><em><code>#отключение по таймауту неактивности.</code></em><code> data_connection_timeout=120 </code><em><code>#время ожидания возобновления неоконченной передачи.</code></em><code> ascii_upload_enable=YES </code><em><code>#автоматическая подмена символов переноса между</code></em><code> ascii_download_enable=YES </code><em><code>#разными ОС, для соответствия стандартам системы</code></em><code> chroot_local_user=YES </code><em><code>#запретить пользователям выходить из домашней папки</code></em><code> chroot_list_file=/etc/vsftpd.chroot_list </code><em><code>#список chroot</code></em><code> allow_writeable_chroot=YES </code><em><code>#разрешить запись в корень</code></em><code> pasv_enable=YES </code><em><code>#вкл. пассивный режим</code></em><code> pasv_min_port=62000 </code><em><code>#диапазон портов</code></em><code> pasv_max_port=62999 guest_enable=YES </code><em><code>#включение госетвых/виртуальных юзеров</code></em><code> guest_username=ftp </code><em><code>#их учётка, от её имени будут работать</code></em><code> virtual_use_local_privs=YES </code><em><code>#виртуальные используют привелегии локальных</code></em><code> user_sub_token=$USER </code><em><code>#префикс папки пользователя</code></em><code> local_root=/home/vsftpd/$USER </code><em><code>#домашний каталог пользователя</code></em><code> hide_ids=YES </code><em><code>#скрывать id юзеров</code></em><code> seccomp_sandbox=NO </code><em><code>#устранить ошибку 500 OOPS SECCOMP в Ubuntu</code></em><code> pam_service_name=vsftpd.virtual </code><em><code>#имя службы pam должно совпадать с именем соответствующего файла в /etc/pam.d</code></em><code> rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=NO |
service vsftpd status — сведения о vsftpd
systemctl start vsftpd — запустить vsftpd
systemctl enable vsftpd — автозапуск vsftpd
service vsftpd restart — перезапуск FTP vsftpd.
ufw allow 20/tcp — открыть порт FTP данных в фаерволе
ufw allow 21/tcp — открыть порт FTP команд в фаерволе
adduser user — добавить user’а с параметрами из /etc/adduser.conf и папками из /etc/skel
mkdir /home/user/ftp — создать папку в папке пользователя
chown user /home/user/ftp — дать полный доступ к папке user’у
Виртуальные пользователи
Чтобы отключить локальных и включить виртуальных, закоментить всё в /etc/pam.d/vsftpd и добавить:
|
1 2 3 |
auth required pam_pwdfile.so pwdfile /etc/vsftpwd #файл паролей account required pam_permit.so |
apt-get install vsftpd libpam-pwdfile apache2-utils — установить libpam-pwdfile и apache2-utils, если не установлены с апачем.
htpasswd -c -d /etc/vsftpwd user — создать виртуального пользователя. -c создаёт файл паролей, с перезаписью, -d — алгоритм шифрования хэша пароля. Следующие без -c
htpasswd -D /etc/vsftpwd user — удалить юзера
service vsftpd restart — перезапустить службу vsftpd.
htpasswd -bd /etc/vsftpwd user 1 && mkdir /home/vsftpd/user && chown ftp /home/vsftpd/user — создать user’а с паролем 1, папку и назначить права на папку локальному ftp пользователю.
Основные команды Linux Ubuntu
lsb_release -a — версия системы.
sudo reboot — Перезагрузить.
sudo poweroff — Выключить.
sudo su — root.
cd /etc/netplan/ — переход в папку /etc/netplan/
pwd — отобразить текущий каталог
LS — отобразить содержимое каталога.
nano /etc/file — открыть файл в редакторе (ctrl+K удалить строку)
apt-get update && apt-get upgrade — Обновление репозиториев.
при ошибке обновления в интерфесе, зайти в меню/администрирование/источники приложений. пробовать обновиться после каждой кнопки.
apt-get install zip — установить zip.
apt purge zip — удалить zip.
wget https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb — скачать файл
dpkg -i mysql-apt-config_0.8.13-1_all.deb — установить репозиторий из файла (-r — удалить)
dpkg —get-selections | grep -v deinstall — список установленных репозиториев
apt-get autoremove — удалить, что не используется
systemctl start vsftpd — запустить vsftpd (stop — отключить)
systemctl enable vsftpd — автозапуск vsftpd
systemctl list-units —type service — статус служб ( -all, —state running, —state falied)
ifconfig eth0 down — отключить интерфейс
apt-get install ssh — Удалённый доступ ssh через putty
cat /etc/vsftpd.conf | grep write — отобразить записи в файле со словом write
passwd user — сменить пароль user’у (просто passwd — сменить свой пароль)
passwd user -L/-u — Заблокировать/разблокировать пользователя
adduser user — добавить пользователя user
userdel user — удалить пользователя user
cat /etc/passwd — список пользователй
mkdir /home/user/ftp — создать папку в папке пользователя
chown user /home/user/ftp — дать полный доступ к папке
> file — создать файл
cp /etc/file /etc/folder/file — копировать файл (с -r папку)
rm /home/user/file* -i -Удалить файлы начинающиеся на file с подтверждением
rm -rf /home/user/ — удалить папку /home/user/
chmod ugo+rwx file — доступ к файлу всем на запись и т.д
проверка сети:
sudo ethtool eth0,3 — сведения, есть ли link
mtr yandex.ru — трассеровка
netstat -nr — маршруты
apt-get install zip — установить zip.
apt purge zip — удалить zip.
wget https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb — скачать файл
dpkg -i mysql-apt-config_0.8.13-1_all.deb — установить репозиторий из файла (-r — удалить)
dpkg —get-selections | grep -v deinstall — список установленных репозиториев
apt-get autoremove — удалить, что не используется
systemctl start vsftpd — запустить vsftpd (stop — отключить)
systemctl enable vsftpd — автозапуск vsftpd
systemctl list-units —type service — статус служб ( -all, —state running, —state falied)
ifconfig eth0 down — отключить интерфейс
apt-get install ssh — Удалённый доступ ssh через putty
cat /etc/vsftpd.conf | grep write — отобразить записи в файле со словом write
passwd user — сменить пароль user’у (просто passwd — сменить свой пароль)
passwd user -L/-u — Заблокировать/разблокировать пользователя
adduser user — добавить пользователя user
userdel user — удалить пользователя user
cat /etc/passwd — список пользователй
mkdir /home/user/ftp — создать папку в папке пользователя
chown user /home/user/ftp — дать полный доступ к папке
> file — создать файл
cp /etc/file /etc/folder/file — копировать файл (с -r папку)
rm /home/user/file* -i -Удалить файлы начинающиеся на file с подтверждением
rm -rf /home/user/ — удалить папку /home/user/
chmod ugo+rwx file — доступ к файлу всем на запись и т.д
проверка сети:
sudo ethtool eth0,3 — сведения, есть ли link
mtr yandex.ru — трассеровка
netstat -nr — маршруты
rm /home/user/file* -i -Удалить файлы начинающиеся на file с подтверждением
rm -rf /home/user/ — удалить папку /home/user/
chmod ugo+rwx file — доступ к файлу всем на запись и т.д
проверка сети:
sudo ethtool eth0,3 — сведения, есть ли link
mtr yandex.ru — трассеровка
netstat -nr — маршруты
Настройка сети в Linux Ubuntu
ifconfig -a — посмотреть интерфейсы (в примере eth0)
До версии 18:
sudo nano /etc/network/interfaces — вписать в файл
(сохранить — ctrl+o)
|
1 2 3 4 5 6 7 8 9 10 11 12 |
auto eth0 #автозапуск интерфейса iface eth0 inet static address 192.168.40.62 netmask 255.255.255.0 network 192.168.40.0 broadcast 192.168.40.255 gateway 192.168.40.254 dns-nameservers 192.168.40.52 #</code><strong><code>либо для DHCP:</code></strong> auto eth0 iface eth0 inet dhcp |
sudo service networking restart — перезапуск сети
После версии 18:
sudo su — root
netplan generate — создать файл настроек
nano /etc/netplan/01-netcfg.yaml
(имя файла может быть другим, отступы пробелами обязательны, внести настройки):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
network: version: 2 renderer: networkd </code> <code>ethernets: eth0: addresses: [192.168.1.5/24] gateway4: 192.168.1.1 nameservers: search: [mydomain, otherdomain] addresses: [8.8.8.8,4.4.4.4] enp17s10: addresses: [192.168.3.10/24] routes: - to: 192.168.3.0/24 via: 192.168.3.10 metric: 100 nameservers: addresses: [192.168.3.10] <strong>Либо для DHCP:</strong> network: version: 2 renderer: networkd ethernets: eth0: dhcp4: true</code> |
Если нужно прокси — вписать в файле
nano /etc/environment:
http_proxy=http://192.168.1.101
https_proxy=http://192.168.1.101
Для apt-get вписать в
nano /etc/apt/apt.conf:
Acquire::http::proxy "http://логин:пароль@ip_прокси:порт_прокси/";;
Acquire::https::proxy "https://логин:пароль@ip_прокси:порт_прокси/"
netplan apply — применить конфигурацию
service networking restart — перезапуск сети
Проверка сети:
sudo ethtool eth0 — сведения, есть ли link
mtr yandex.ru — трассеровка
Настройка DHCP и DNS в Linux Ubuntu с помощью dnsmasq:
apt-get install dnsmasq — установка
nano /etc/dnsmasq.conf
Вписать:
|
1 2 3 4 5 6 7 8 9 |
interface=</code>enp17s10<code> <em>#имя интерфейса</em> bind-interfaces dhcp-range=192.168.3.100-192.168.3.199,255.255.255.0,12h <em>#диапазон, время резерва</em> <em>#привязка по мак-адресу</em>: dhcp-host=4C:72:B9:4E:8B:3A,192.168.3.100 #Указать если основной DHCP. Клиент получит ip даже если получал ip c другого DHCP dhcp-authoritative log-dhcp # <em>Для поиска ctrl+W</em> |
service dnsmasq restart — перезапуск службы
Если фейлит при запуске (unknown interface) в файле nano /etc/init.d/dnsmasq
сделать значение Required-Start: $all — загружаться после всего
Настройка NAT и Masquarade
Возможно, нужно отключить firewalld
Включение IP-forwarding (для перемещения трафика между интерфейсами)
cat /proc/sys/net/ipv4/ip_forward — включён ли ip forwarding (0 — выключен)
nano /etc/sysctL.conf — задать net.ipv4.ip_forward=1
Создать bash файл c настройками nat и masquerade в init скриптах для iptables:
nano /etc/init.d/firewall
#!/bin/bash
### BEGIN INIT INFO
# Provides: firewall
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: adds iptables rules
### END INIT INFO#Выше указано системе, что запускается, запускать после всего, на каких уровнях
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#<code><em>переменная с путём к iptables</em> IPTABLES=/sbin/iptables # <em>переменные интерфейсов</em> LAN=enp17s10 WAN=enp0s25 WAN_IP=192.168.2.6 LAN_NET=192.168.3.0/24 # <em>очистка основных цепочек пакетного фильтра</em> $IPTABLES -F #<em> очистка таблиц ната</em> $IPTABLES -t nat -F # <em>разрешить входящие</em> $IPTABLES -A INPUT -p tcp -i $WAN -m state --state ESTABLISHED -j ACCEPT $IPTABLES -A INPUT -p udp -i $WAN -m state --state ESTABLISHED -j ACCEPT # <em>разрешить icmp (ping)</em> $IPTABLES -A INPUT -p icmp -j ACCEPT # <em>разрешить 22 порт на WAN'е для ssh</em> $IPTABLES -A INPUT -p tcp -i $WAN --dst $WAN_IP --dport 22 -j ACCEPT # <em>разрешить входящие с локалки</em> $IPTABLES -A INPUT -i $LAN -j ACCEPT # <em>nat с маскарадом (подбеной ip на внешний)</em> $IPTABLES -t nat -A POSTROUTING --src $LAN_NET -j MASQUERADE # <em>сбрасывать остальные соединения снаружи и логировать</em> #$IPTABLES -A INPUT -i $WAN -j ULOG --ulog-prefix "IPFW-DENY:" $IPTABLES -A INPUT -i $WAN -j DROP # ctrl+o <em>- сохранить</em> |
До Ubuntu 15:
chmod +x /etc/init.d/firewall — сделать файл исполняемым
update-rc.d firewall defaults — запускать по умолчанию (remove — удалить)
После Ubuntu 15, запускать как службу, и чтобы запускать файл после сети:
nano /etc/systemd/system/firewall.service — создать systemd unit файл
|
1 2 3 4 5 6 7 8 9 10 11 12 |
[Unit] Description=iptables rules Requires=network.target After=network.target [Service] Type=oneshot RemainAfterExit=True ExecStart=/etc/init.d/firewall [Install] WantedBy=multi-user.target |
systemctl enable firewall — запускать автоматически
Если не работает при включении, или выдаёт Default-Start contains no runlevels (Default-Start не содержит уровней запуска, прерывания), нужно добавить BEGIN INIT INFO (как выше).
Создание флешки с Линукс
- Скачать Linux Live USB Creator.
- Использовать предложенные образы, или добавить свой.
- Запустить программу. Флешка готова.
|
1 2 3 4 5 |
apt-get install ssh — <em>Удалённый доступ ssh через <a href="https://putty.org.ru/download.html">putty</a></em> sudo reboot - <em>Перезагрузка</em> sudo poweroff - <em>Выключить</em> sudo su - <em>root</em> nano /etc/file <em>- открыть файл в редакторе</em> (ctrl+K удалить строку) |