?

Log in

No account? Create an account
Previous Entry Поделиться Next Entry
[решено] Два интернет подключения на сервере
tos4 wrote in ru_linux
Как сделать так, чтобы у сервера было два независимых интернет подключения? Не балансировка, не запасной в случае аварии - два одновременно работающих. Чтоб одни юзеры подключались по к одному IP и работали, а другие подключались ко второму IP

Детальнее:

Две сетевые карты 192.168.0.х и 192.168.1.х, обе за NAT с доступом в интернет
У каждой свой default gateway 192.168.0.1 и 192.168.1.1
Есть два внешних IP которые пробрасывают 443 порт на внутренний IP
По факту же работает только один IP, тот - чей шлюз указан по умолчанию
Как сделать, чтобы работали оба внешних IP одновременно?


Какое самое изящное решения для Ubuntu, чтоб не шаманить костылей со скриптами?

UPD
https://habrahabr.ru/post/107267/
Метки: , , ,

  • 1
Чтоб одни юзеры подключались по к одному IP

что имеется в виду?

имеется ввиду, что поскольку есть два подключения, то есть и два внешних IP у каждого из подключений. и одни юзеры будут подключаться по одному IP, например, 8.8.8.8:443, а другие - под второму IP - 9.9.9.9:443
TCP подключение на адрес 8.8.8.8:443 будут переброшено на 192.168.0.103:443, а 9.9.9.9:443 - пробрасывается на 192.168.1.103:443

По факту же это работает только один внешний адрес. На второй SYS прилетает, но ответ не уходит, поскольку шлюз по умолчанию чужой

да, похоже оно, сейчас проверю...

да, проверил - оно самое. спасибо

ip rule add from 192.168.0.х table eth0_table
ip rule add from 192.168.0.х table eth1_tale

ip r add default 192.168.0.1 table eth0_table
ip r add default 192.168.1.1 tab1e eth1_table

если я правильно понял вопрос, конечно.

Можно даже одним правилом/таблицей обойтись, а другой адрес типа как обычно по умолчанию будет.
И в вашем втором правиле очевидно имелось ввиду "from 192.168._1_.х"

Ну да, так проще и логичнее, незачем все default route добавлять, надо только один - для дополнительного интерфейса.

Могу только добавить что это все надо добавить в ifup скрипты или конфиги (хз как это в убунте принято), иначе придется каждый раз после поднятия руками писать.

Ну в скрипты, конечно, имеет смысл добавить, чтоб оно после перезагрузки автоматически срабатывало.

Про убунту точно не знаю, я ею давно не пользовался, а в дебиане я такие вещи обычно записываю в свой собственный скрипт /usr/local/sbin/iptables.sh , и добавляю его в /etc/rc.local

rc.local для маршрутов, как показывает лично мой опыт - не самая хорошая идея. флап интерфейса или service wicked restart - и роутер превращается в тыкву. для такого есть ifup скрипты.

Ну это где как, у меня rc.local более-менее нормально работает.
Хотя в общем да, куда-нибудь в /etc/network/interfaces или /etc/network/if-up.d/ добавить логичнее

Edited at 2018-02-14 10:27 (UTC)

Да, вы правы по обоим пунктам, смысл коммента был в указании топикстартеру на общий принцип.

default gateway у каждого интерфейса свой - это нормально, а вот default route обычно только один, и даже если запрос пришёл через другой интерфейс, то ответ пойдёт по default route, а там он может потеряться.

Так что надо добавить правило маршрутизации, основанное не на адресе получателя, а на адресе отправителя. Для этого надо вписать название новой таблицы в /etc/iproute2/rt_tables ,
добавить маршрутизацию для исходного адреса в эту таблицу: ip rule add from ip-адрес table новая-таблица
и вписать в эту таблицу другой default route : ip route add default via какой-надо-gateway dev интерфейс table новая-таблица

а можно вкратце поподробнее?

вам пересказать своими словами соответствующу часть?

http://www.lartc.org/howto/lartc.rpdb.multiple-links.html
могу зачитать по ролям и с выражением, но не просто так :)

Ну да, "читайте доку, она рулез!"

  • 1