LINUX.ORG.RU

Ответ на: комментарий от zolden

Как я понимаю задачу

Есть два интернета на сервере. Мне нужно делать коннект на определенный смтп сервер и порт* не с основного интерфейса, а с запасного! То есть нужна подмена*. Посоветовали использовать сокат. Это не фантазии - просто любые иные пути сложнее будут. Я тут на днях писал о phpmailer и smtp.gmail.com но воз и ныне там(

hybridshell ()

so-bindtodevice=eth1, но нужен рут. Ещё придётся настроить побочные таблицы маршрутизации и ip rule с iif eth1 и oif eth1, чтобы трафик в обе стороны ходил правильно.

Ещё можно биндится не к интерфейсу, а к IP (bind=192.0.2.33), тогда рут не нужен, но придётся либо в фаерволе настроить покраску соединений, либо в ip rule добавить поход в побочную таблицу для from 192.0.2.33.

Подробности есть в LARTC.

kmeaw ★★★ ()
Ответ на: Как я понимаю задачу от hybridshell

Если нужно ходить на некоторый smtp-сервер всегда с запасного интерфейса (а не чтобы решение принимала клиентская программа каждый раз, когда ей надо туда сходить), то достаточно будет добавить специфичный маршрут до smtp.gmail.com через правильный интерфейс (и периодически кронячкой или ещё как-то следить за тем, а не поменялся ли IP у smtp.gmail.com).

ip route add 173.194.76.108 src 192.0.2.33 dev eth1 via 192.0.2.1

kmeaw ★★★ ()
Ответ на: комментарий от kmeaw

Спасибо

Да именно так и нужно! Постараюсь сделать так как Вы написали. Пока используется простой UFW.

hybridshell ()
Ответ на: комментарий от kmeaw

default via 192.168.1.1 dev enp3s0 proto dhcp src 192.168.1.220

metric 100 default via 192.168.2.1 dev enp2s0 proto dhcp src192.168.2.169 metric 200 173.194.76.108 via 192.168.2.169 dev enp2s0 src 192.168.2.169 192.168.1.0/24 dev enp3s0 proto kernel scope link src 192.168.1.220 192.168.1.1 dev enp3s0 proto dhcp scope link src 192.168.1.220 metric 100 192.168.2.0/24 dev enp2s0 proto kernel scope link src 192.168.2.169 192.168.2.1 dev enp2s0 proto dhcp scope link src 192.168.2.169 metric 200

enp2s0 запасной enp3s0 основной

Работает как и раньше то есть без изменений. Подскажите в чем загвоздка. Спасибо.

hybridshell ()
Ответ на: комментарий от hybridshell
ip route add 192.168.2.0/24 dev enp2s0 table 100
ip route add default via 192.168.2.1 dev enp2s0 table 100
ip rule add from 192.168.2.0/24 table 100 priority 10000
ip rule add to 173.194.76.108/32 table 100 priority 10000

После этого появится побочная таблица маршрутизации с номером 100, которая будет правильно машрутизировать трафик для enp2s0.

Удалить добавленные ip rule можно с помощью ip rule show priority 10000 | cut -d: -f1 | sudo xargs -r -i ip rule del priority {}

kmeaw ★★★ ()
Ответ на: комментарий от kmeaw

ОГРОМНОЕ СПАСИБО!

Заработало, просто сделал nslookup smtp и заменил ip!)

hybridshell ()
Ответ на: комментарий от kmeaw

Новые трудности(

Так как правила работают исключительно до перезгрузки, начал редактировать свой нетплан по интуицыи) но видимо мне это не под силу(

network:

version: 2

ethernets:

enp3s0:

dhcp4: yes

dhcp4-overrides:

route-metric: 100

enp2s0:

dhcp4: yes

dhcp4-overrides:

route-metric: 200

routing-policy:

  • from: 192.168.2.169 table: 100 priority: 10000 routes:
  • to: 173.194.76.108 via: 192.168.1.220 table: 100 priority: 10000 on-link: True
  • to: 108.177.15.109 via: 192.168.1.220 table: 100 priority: 10000 on-link: True
  • to: 108.177.122.108 via: 192.168.1.220 table: 100 priority: 10000 on-link: True
  • to: 108.177.14.109 via: 192.168.1.220 table: 100 priority: 10000 on-link: True
  • to: 108.177.14.108 via: 192.168.1.220 table: 100 priority: 10000 on-link: True
  • to: 108.177.122.109 via: 192.168.1.220 table: 100 priority: 10000 on-link: True
hybridshell ()
Ответ на: Новые трудности( от hybridshell

Похоже, что netplan не умеет притаскивать роуты DHCP-клиента в побочные таблицы. Я бы использовал systemd-networkd для настройки enp2s0:

/etc/systemd/network/enp2s0.network:

[Match]
Name=enp2s0

[Network]
DHCP=ipv4

[DHCP]
RouteTable=100
RouteMetric=200

[RoutingPolicyRule]
From=192.168.2.0/24
Table=100
Priority=10000

[RoutingPolicyRule]
To=173.194.76.108/32
Table=100
Priority=10000

[RoutingPolicyRule]
To=108.177.15.109/32
Table=100
Priority=10000

и так далее для всех необходимых IP, повторяя секции [RoutingPolicyRule].

kmeaw ★★★ ()
25 января 2022 г.
Ответ на: комментарий от kmeaw

Добрый день, подскажите пожалуйста как добавить ipv6 к этим правилам. Команда ip rule show priority 10000 показывает все правила ipv4 а правила с такими адресами 2001:4860:4000::/36 игнорирует DHCP=ipv4 ставил DHCP=ipv4,ipv6 и даже DHCP=ipv6. Но безуспешно(

hybridshell ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.