Для Debian (и соответственно Ubuntu) подходит такой рецепт:
в файле 70-persistent-net.rules
, находящемся по адресу /etc/udev/rules.d/70-persistent-net.rules
, в спецификации нужной сетевой карты изменяем в конце строки параметр NAME=
, вписывая туда нужное имя интерфейса для сетевой карты с нужным MAC-адресом
.
Например вместо NAME=eth2
– NAME=eth1
.
Код:
wget http://downloads.sourceforge.net/project/igmpproxy/igmpproxy/0.1/igmpproxy-0.1.tar.gz?use_mirror=sunet tar zxf igmpproxy-0.1.tar.gz cd igmpproxy-0.1
Затем скомпилируйте и установите программу
Код:
./configure && make && make install
Теперь надо создать и отредактировать конфигурационный файл для программы, пример ниже
Код:
vim /etc/igmpproxy.conf
Содержимое конфигурационного файла
Код:
##------------------------------------------------------ ## Enable Quickleave mode (Sends Leave instantly) ## Эту строчку раскомментируют только в том случае, ## если внути всего лишь один клиент IP TV ##------------------------------------------------------ #quickleave ##------------------------------------------------------ ## Configuration for eth0 (Upstream Interface) ## Здесь указаны параметры для публичного интерфейса, ## на который придет поток от провайдера ## и указаны сети, с которых возможно будут подключаться клиенты ##------------------------------------------------------ phyint eth0 upstream ratelimit 0 threshold 1 altnet 10.0.0.0/8 altnet 172.20.20.0/24 altnet 192.168.0.0/24 ##------------------------------------------------------ ## Configuration for eth1 (Downstream Interface) ## Типовая конфигурация для внутреннего интерфейса ## смотрящего в домашнюю сеть ##------------------------------------------------------ phyint eth1 downstream ratelimit 0 threshold 1
После создания конфига запускаем демона командой
Код:
/usr/local/sbin/igmpproxy /etc/igmpproxy.conf
Добавляем в автозагрузку
igmpproxy /etc/igmpproxy.conf & в /etc/rc.local
Сначала нужно узнать, какое ядро используется в Ubuntu.
uname -r
Эта команда выведет версию текущего ядра Linux. Его нельзя удалять.
root@server:~$ uname -r 3.0.0-25-generic
Далее нужно вывести список всех пакетов с установленными ядрами.
dpkg --list | grep linux-image
В результате мы увидим что-то подобное:
root@server:~$ dpkg --list | grep linux-image ii linux-image-3.0.0-14-generic 3.0.0-14.23 Linux kernel image for version 3.0.0 on x86/x86_64 ii linux-image-3.0.0-15-generic 3.0.0-15.26 Linux kernel image for version 3.0.0 on x86/x86_64 ii linux-image-3.0.0-16-generic 3.0.0-16.29 Linux kernel image for version 3.0.0 on x86/x86_64 ii linux-image-3.0.0-17-generic 3.0.0-17.30 Linux kernel image for version 3.0.0 on x86/x86_64 ii linux-image-3.0.0-19-generic 3.0.0-19.33 Linux kernel image for version 3.0.0 on x86/x86_64 ii linux-image-3.0.0-20-generic 3.0.0-20.34 Linux kernel image for version 3.0.0 on x86/x86_64 ii linux-image-3.0.0-21-generic 3.0.0-21.35 Linux kernel image for version 3.0.0 on x86/x86_64 ii linux-image-3.0.0-22-generic 3.0.0-22.36 Linux kernel image for version 3.0.0 on x86/x86_64 ii linux-image-3.0.0-23-generic 3.0.0-23.39 Linux kernel image for version 3.0.0 on x86/x86_64 ii linux-image-3.0.0-24-generic 3.0.0-24.40 Linux kernel image for version 3.0.0 on x86/x86_64 ii linux-image-3.0.0-25-generic 3.0.0-25.41 Linux kernel image for version 3.0.0 on x86/x86_64 ii linux-image-generic 3.0.0.25.29 Generic Linux kernel image
Для того, чтобы удалить ненужное ядро, нужно выполнить следующую команду (предварительно указав название нужного пакета из списка выше):
sudo apt-get purge linux-image-3.0.0-14-generic
После того, как мы удалим все ядра, которые хотим, не забудьте выполнить команду update-grub2
, чтобы обновить конфигурацию загрузчика.
Предполагается, что операционная система уже установлена, на сервере который имеет 2 сетевых интерфейса и будет выполнять функцию шлюза.
eth0 — подключение к интернет. (может получать IP адрес динамически, может иметь статический)
eth1 — подключение к локальной сети, будет иметь статический IP 192.168.10.1 и маску 255.255.255.0
Редактируем настройки сетевых интерфейсов:
vi /etc/network/interfaces
Настраиваем eth0 (по которому осуществляется подключение к интернет)
Вариант №1- Получение IP по DHCP от провайдера:
auto eth0 iface eth0 inet dhcp
Вариант №2-Статический IP
auto eth0 iface eth0 inet static address XXX.XXX.XXX.XXX netmask 255.YYY.YYY.YYY gateway XXX.XXX.XXX.XXX dns-nameservers ZZZ.ZZZ.ZZZ.ZZZ
Где:
Вместо XXX.XXX.XXX.XXX вписываем IP адрес, который мы получили от провайдера
Вместо 255.YYY.YYY.YYY - вписываем маску подсети.
Ну и вместо ZZZ.ZZZ.ZZZ.ZZZ вписываем IP адрес DNS сервера.
Настраиваем eth1 (по которому подключается локальная сеть)
auto eth1 iface eth1 inet static address 192.168.10.1 netmask 255.255.255.0
interfaces, примерно, следующего содержания:
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address XXX.XXX.XXX.XXX netmask 255.YYY.YYY.YYY gateway XXX.XXX.XXX.XXX auto eth1 iface eth1 inet static address 192.168.10.1 netmask 255.255.255.0
Перезапустим сеть:
/etc/init.d/networking restart
В локальной сети адрес шлюза и dns сервера, будет 192.168.10.1.
На тестовой клиентской машине, прописываем IP адрес в ручную.
Присваиваем клиенту:
IP 192.168.10.2 маска подсети 255.255.255.0 шлюз 192.168.10.1 DNS 192.168.10.1
пробуем с клиента пинговать 192.168.10.1 — запросы должны бегать нормально.
Переходим на наш шлюз.
Установим пакет dnsmasq, он необходим для перенаправления DNS запросов, вышестоящим серверам.
apt-get install dnsmasq
разрешаем перенаправление пакетов:
vi /etc/sysctl.conf
необходимо найти строку и снять с нее комментарий:
net.ipv4.ip_forward=1
Сохраняем изменения и выходим.
Теперь, нам необходимо добавить правила для маршрутизации пакетов:
vi /etc/rc.local
Добавляемим перед строкой exit 0
iptables -F iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i eth1 -o eth0 -j REJECT iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Сохраняем изменения, и перезагружаем сервер.
reboot