# 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) на внешнем и классифицировать от него.
Воткнули сетевую карту, сигналов нет.. lshw -c network — узнать logical name (в примере enp17s10) До версии 18: nano /etc/network/interfaces — вписать в файл, например статический ip (сохранить — ctrl+o):
1
2
3
4
auto enp17s10#автозапуск интерфейса
iface enp17s10 inet static
address192.168.3.10
netmask255.255.255.0
sudo service networking restart — перезапуск сети
После версии 18: sudo su — root netplan generate — создать файл настроек (если ещё не создан) nano /etc/netplan/01-netcfg.yaml (имя файла может быть другим, отступы пробелами обязательны, внести настройки, добавить новый сетевой интерфейс):
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
address192.168.40.62
netmask255.255.255.0
network192.168.40.0
broadcast192.168.40.255
gateway192.168.40.254
dns-nameservers192.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:
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>
# <em>сбрасывать остальные соединения снаружи и логировать</em>
#$IPTABLES -A INPUT -i $WAN -j ULOG --ulog-prefix "IPFW-DENY:"
$IPTABLES-AINPUT-i$WAN-jDROP
# 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 (как выше).