- Извечный вопрос: Как настроить две сетевые карты на Linux?
- tabletka99
- tiger_by
- BMW M6
- tabletka99
- ZloyMonah
- TolikCorp
- tiger_by
- LEII4A
- TolikCorp
- tiger_by
- TolikCorp
- tiger_by
- TolikCorp
- tiger_by
- TolikCorp
- tabletka99
- tiger_by
- TolikCorp
- TolikCorp
- Одновременная работа двух сетевых карт
- Русские форумы такие форумы?
- Re: Русские форумы такие форумы?
- Объединение сетевых интерфейсов в linux
Извечный вопрос: Как настроить две сетевые карты на Linux?
Не получилось и так.
Далее вернул к прежнему. Ребят, помогите настроить.
Комп, подключенный к eth1 настроен так: ip: 10.0.0.2 маска стандарт 255.255.255.0
Подключился через путти к 10.0.0.1.
Так как я клонировал мак адрес роутера, на который настроен инет — ifconfig выдал верные значения ип, шлюза. (когда использовал стандартный мак — настройки не выдавались). Писал в путти ping -c 4 google.ru ответ на это вроде бы unknown host, что очень странно!
Смотрю инфу: http://blog.aloneunix.ru/2011/11/debian.html то же самое.
Я только не пойму — если ип выдался верный, и я с путти пытался пинговать гугол, не получилось. хммм
«Теперь применим только что отредактированный конфиг:
~$ sudo sysctl -p» эта команда разорвет соединения игроков с сервом?
tabletka99
Участник
Них не понял, понаписал кучу всего, а вопроса так и не задал ;)))
что значит настроить две сетевые карты? просто ипы им дать или там два шлюза еще.
tiger_by
Гл. Админ SourceGames.RU
BMW M6
Участник
1) Добавляем блок в /etc/network/interface
auto eth1 iface eth1 inet static address 192.168.2.1 netmask 255.255.255.0
2. в /etc/sysctl.conf раскомменчиваем строчку (или добавляем если нет): net.ipv4.ip_forward=1
3. в /etc/rc.local перед exit 0:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
4. Узнаём свои dns адреса командой. У меня лежат тут /etc/resolv.conf
5.Настраиваем роутер на статику:
ip 192.168.2.2
маска: 255.255.255.0
шлюз: 192.168.2.1
tabletka99
Участник
ZloyMonah
Dark Guardian
TolikCorp
Участник
tiger_by
Гл. Админ SourceGames.RU
Я полагаю что есть eth0 — это WAN, он же внешний IP.
eth1 — это LAN, оно же локальный интерфейс, раздающий сеть еще неким хостам.
Или не так?
LEII4A
Участник
TolikCorp,
Пажалста я надеюсь, цель сего безобразия я понял правильно:-D
только там нужно морозить rc.local иначе dns слетают при отключении eth1, вот команды в консоль:
$ sudo touch /etc/network/if-up.d charge_dns $ sudo nano /etc/network/if-up.d/charge_dns #! /bin/sh echo "nameserver ip" > /etc/resolv.conf echo "nameserver ip" >> /etc/resolv.conf sudo chmod +x /etc/network/if-up.d/charge_dns
Вместо ip естественно твои dns сервера. На debian 6 все вышеуказанное работало прекрасно, хоть и громоздко все.
TolikCorp
Участник
Я полагаю что есть eth0 — это WAN, он же внешний IP.
eth1 — это LAN, оно же локальный интерфейс, раздающий сеть еще неким хостам.
Или не так?
Добавлено через 3 минуты
Капец какой-то, на етх0 ип выдался верный, вроде даже всё ок. Пишу ping -c 4 google.ru — просто не хочет ответ — unknown host. Подключаю обратно к роутеру — пинг нормально рабит.
tiger_by
Гл. Админ SourceGames.RU
TolikCorp
Участник
tiger_by
Гл. Админ SourceGames.RU
TolikCorp
Участник
tiger_by
Гл. Админ SourceGames.RU
TolikCorp
Участник
хмм, прочитал статью, смотрю «5.3.4. /etc/resolv.conf» и немного недопонял, что в нем быть должно.
Вот сейчас, когда сервер подключен к роутеру содержание данного файла такое
$ sudo touch /etc/network/if-up.d charge_dns
$ sudo nano /etc/network/if-up.d/charge_dns
#! /bin/sh
echo «nameserver ip» > /etc/resolv.conf
echo «nameserver ip» >> /etc/resolv.conf
sudo chmod +x /etc/network/if-up.d/charge_dns
tabletka99
Участник
сотри все и добавь две строки
nameserver 8.8.8.8
nameserver 8.8.4.4
это днс гугла и попробуй. должно работать все. в сети что ты раздаешь на етх1 так же указывай эти днс.
tiger_by
Гл. Админ SourceGames.RU
TolikCorp
Участник
tabletka99, «в сети что ты раздаешь на етх1 так же указывай эти днс.» это приписать в компе, подключенному к етх1?
TolikCorp
Участник
1) Когда сервер подключен к роутеру, то на етх1 инет есть (в свойствах подключения клиента указал ДНС провайдера).
Пинги:
Last login: Sun Jun 10 07:34:14 2012 from 192.168.5.2
[email protected]:~# ping -c 4 178.49.245.129
PING 178.49.245.129 (178.49.245.129) 56(84) bytes of data.
64 bytes from 178.49.245.129: icmp_req=1 ttl=64 time=1.29 ms
64 bytes from 178.49.245.129: icmp_req=2 ttl=64 time=1.19 ms
64 bytes from 178.49.245.129: icmp_req=3 ttl=64 time=1.20 ms
64 bytes from 178.49.245.129: icmp_req=4 ttl=64 time=1.49 ms
— 178.49.245.129 ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 1.196/1.296/1.492/0.121 ms
[email protected]:~# ping -c 4 hlmod.ru
PING hlmod.ru (94.127.69.212) 56(84) bytes of data.
64 bytes from s094127069212.m.truevds.ru (94.127.69.212): icmp_req=1 ttl=52 time=59.1 ms
64 bytes from s094127069212.m.truevds.ru (94.127.69.212): icmp_req=2 ttl=52 time=52.8 ms
64 bytes from s094127069212.m.truevds.ru (94.127.69.212): icmp_req=3 ttl=52 time=52.5 ms
64 bytes from s094127069212.m.truevds.ru (94.127.69.212): icmp_req=4 ttl=52 time=53.4 ms
— hlmod.ru ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 52.507/54.488/59.194/2.750 ms
[email protected]:~#
Содержание resolv.conf
domain cn.ru
search cn.ru novotelecom.ru
nameserver 192.168.0.1
2) Когда сервер подключен напрямую к инету, то на етх1 инета (в свойствах подключения клиента указал ДНС провайдера)., как и на етх0 нету.
3) Сделал
$ sudo touch /etc/network/if-up.d charge_dns
$ sudo nano /etc/network/if-up.d/charge_dns
#! /bin/sh
echo «nameserver ip» > /etc/resolv.conf
echo «nameserver ip» >> /etc/resolv.conf
sudo chmod +x /etc/network/if-up.d/charge_dns
— 178.49.245.129 ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 1.196/1.296/1.492/0.121 ms
Когда это перепробовал, изменил charge_dns:
#! /bin/sh
echo «domain cn.ru» >> /etc/resolv.conf
echo «search cn.ru novotelecom.ru» >> /etc/resolv.conf
echo «nameserver 178.49.132.66» >> /etc/resolv.conf
echo «nameserver 178.49.132.67» >> /etc/resolv.conf
До гугла с его ДНСами и провайдера не смог достучаться во всех случаях, кроме первого, где сервер подключен к роутеру.
Добавлено через 49 минут
Все же интересно, почему даже шлюз не пингуется.
Одновременная работа двух сетевых карт
если прописывать по отдельности, то работает и eth0 и eth1 соответственно.
auto eth0 iface eth0 inet static address 192.168.0.121 gateway 192.168.0.228 netmask 255.255.252.0
auto eth1 iface eth0 inet static address 192.168.0.122 netmask 255.255.252.0
Подозреваю, что дело в шлюзе, так? Вроде бы шлюз прописывается только для первого интерфейса, а для второго надо прописывать маршрут. Но никак не могу разобраться, как правильно. Подскажите, пожалуйста, что сделать, чтобы заработало )
Зачем две сетевые карты? Тем более в одной подсети IPv4? Если нужна избыточность, то нужна агрегация LACP, если нужно два айпишника, то можно привязать к одной сетевухе, алиасингом или еще чем-то.
Опечатка же во втором конфиге?
auto eth1 iface eth0 inet static address 192.168.0.122 netmask 255.255.252.0
Русские форумы такие форумы?
Только тут тебе расскажут, почему ты -мудак- не прав?
Раскажи чего ты хочешь этим добиться?
Чтобы понять почему идея гавно, надо чутка почитать как именно линукс роутит пакеты, в реальном мире, для каждого сконфигурированного интерфейса создаётся маршрут x.x.x.x/netmask означающий, что на адреса в этой подсети слать пакеты напрямую получателям, в твоём примере создастся: 192.168.0.0/22 dev eth0 proto kernel scope link src 192.168.0.121
Это значит, что всё исходящее в 192.168.0.0/22 должно уходить с eth0, а всё приходящее на eth0 из 192.168.0.0/22 адресовано нам. Когда ты создаешь второй интерфейс с адресом в той же сети, ещё один маршрут для подсети 192.168.0.0/22 создасться не может, т.к. её уже обслуживает eth0. Все входящие пакеты на 192.168.0.122 будут приходить на eth1, а в соотвествии с таблицей маршрутизации за 192.168.0.0/22 ответственный eth0, такие пакеты по дефолту считаются не парвильными и называются «марсианскими» (martian), если проверишь dmesg то наверняка увидишь там такие записи. Кароче в реальном мире твоя схема кривая и работать не должно, но обойти эти ограничения можно, но это ппц костыли и я бы за такое ими тебя и ***покарал***, например ты можешь включить Promiscuous режим на eth1, тогда ядро будет пропускать марсианские пакеты и твоё поделие начнёт подавать признаки жизни, но исходящий трафик всё равно будет ходить через eth0 по умолчанию.
sparks ★★★ ( 06.11.19 15:52:18 MSK )
Последнее исправление: sparks 06.11.19 15:54:01 MSK (всего исправлений: 1)
Re: Русские форумы такие форумы?
На украинских форумах такая же история, на англоязычных ресурсах также песня.
но исходящий трафик всё равно будет ходить через eth0 по умолчанию
А что мешает сделать «ip ro add 192.168.0.32/28 dev eth1 scope link src 192.168.0.122» ? Пусть к .32-.47 ходят через eth1 !
PS любимые грабли нужно знать по именам: rp_filter, arp_accept, arp_announce, arp_filter, arp_ignore
Чёта не понял про грабли))) Я бы в ситуации ТС создал ещё одну таблицу маршрутизации в /etc/iproute2/rt_tables и загнал туда eth1 правилом. Хотя всё равно решение плохое и так делать не надо
sparks ★★★ ( 06.11.19 20:43:33 MSK )
Последнее исправление: sparks 06.11.19 20:50:30 MSK (всего исправлений: 1)
Я бы в ситуации ТС создал ещё одну таблицу маршрутизации
Он пока с одной не разобрался.
В такой ситуации ТС может просто реализовать только статическую схему, в которой часть хостов в сети будет адресоваться через eth0, а часть через eth1, просто добавив маршруты. Например, dgw через eth1, а все остальное через eth0, или половину сети через один интерфейс, а остальных через другой.
Но ему нужно пройти грабли которые специально разложены на пути для тех, кто начинает использовать несколько самостоятельных интерфейсов в одной подсети. Это не запрещено, но ты должен доказать системе, что ты понимаешь на что подписался. Это как раз и нужно выразить через sysctl net.ipv4.conf..
Объединение сетевых интерфейсов в linux
Так уже получилось что писал статью для howtoforge. И естественно тут же все это оказалось в русском варианте на других сайтах. Только вот незадача: в статье были допущены неточности, и публицисты с других «сайтов» вставили as-is.
Хочу попробовать исправить это оплошность.
Для чего это надо?
Объясню на примере: был у меня фтп с 2мя сетевыми картами, но использовалась одна. Со временем весь 1Гб/с начал забиваться по вечерам — и людям плохо, и у меня iowait растет. Но есть вторая сетевая карта. Так вот такое объединение позволит использовать 2 (3, 4, 5. ) как одну с 2Гб/с.
Но это не «потолок», вот полный список режимов:
mode=0 (balance-rr)
Последовательно кидает пакеты, с первого по последний интерфейс.
mode=1 (active-backup)
Один из интерфейсов активен. Если активный интерфейс выходит из строя (link down и т.д.), другой интерфейс заменяет активный. Не требует дополнительной настройки коммутатора
mode=2 (balance-xor)
Передачи распределяются между интерфейсами на основе формулы ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.
mode=3 (broadcast)
Все пакеты на все интерфейсы
mode=4 (802.3ad)
Link Agregation — IEEE 802.3ad, требует от коммутатора настройки.
mode=5 (balance-tlb)
Входящие пакеты принимаются только активным сетевым интерфейсом, исходящий распределяется в зависимости от текущей загрузки каждого интерфейса. Не требует настройки коммутатора.
mode=6 (balance-alb)
Тоже самое что 5, только входящий трафик тоже распределяется между интерфейсами. Не требует настройки коммутатора, но интерфейсы должны уметь изменять MAC.
Настройка
Очень простая. Вы выбираете режим, втыкаете в коммутатор второй кабель.
Дальше в зависимости от системы, я делал это на Debian Lenny
#apt-get install ifenslave-2.6
Дальше есть 2 варианта:
Вариант №1 Подправить /etc/network/interfaces к примеру так.
iface bond0 inet static
address 10.0.1.5
netmask 255.255.255.0
network 10.0.1.0
gateway 10.0.1.254
up /sbin/ifenslave bond0 eth0 eth1
down /sbin/ifenslave -d bond0 eth0 eth1
и подправить /etc/modprobe.d/arch/i386 примерно так
alias bond0 bonding
options bonding mode=5 miimon=100 downdelay=200 updelay=200
Естественно указать свой режим и настройки сети.
# update-modules
# ifdown eth0 eth1
# ifup bond0
# /etc/init.d/networking restart
Вариант №2 Все настройки через /etc/network/interfaces
iface bond0 inet static
address 10.0.1.5
netmask 255.255.255.0
network 10.0.1.0
gateway 10.0.1.254
bond_mode balance-tlb
bond_miimon 100
bond_downdelay 200
bond_updelay 200
slaves eth0 eth1
Сохраняем и пишем:
update-modules
# ifdown eth0 eth1
# ifup bond0
# /etc/init.d/networking restart
После этого должен появится один интерфейс bond0. Далее можно плодить интерфейсы bon0:0 и т.д.
UPD: Перенес из своего блога в нужный
UPD 2: Спасибо infotim, за правки.