LINUX.ORG.RU
ФорумAdmin

Как пустить весь исходящий трафик через определенный интерфейс?

 , , ,


2

1

Есть интерфейсы ppp0,ppp1,ppp2. Нужно, каждые 5 минут пускать весь траф сервера через следующий интерфейс. Это можно сделать, добавив строку в крон, но какую строку - не знаю.

Пустить трафик через определенный ip я могу с помощью команды:
ip route add tab 2 default via 192.168.1.1 src 192.168.10.2
и iptables -t nat -A POSTROUTING -s ip моего сервера -o ppp0 -j SNAT --to-source 192.168.10.2

Но как пустить именно через интерфейс? мой ifconfig:

ppp3      Link encap:Point-to-Point Protocol
          inet addr:192.168.10.2  P-t-P:192.168.127.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1446  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:742 (742.0 B)  TX bytes:92 (92.0 B)

ppp1      Link encap:Point-to-Point Protocol
          inet addr:192.168.10.2  P-t-P:192.168.127.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1446  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:742 (742.0 B)  TX bytes:92 (92.0 B)

ppp2      Link encap:Point-to-Point Protocol
          inet addr:192.168.10.2  P-t-P:192.168.127.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1446  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:98 (98.0 B)  TX bytes:92 (92.0 B)

Через L2 интерфейс (eth, tap) - только через ip. Через L3 интерфейс (gre, tun) можно сделать ip route add default dev tun0.

Также некоторые провайдеры делают такую вещь (не знаю названия), что их шлюз отвечает на ARP who-has для любого ip своим mac-адресом. Теоретически, это позволило бы делать маршруты типа ip route add default dev eth0 для L2 интерфейса, но на практике твоя ARP таблица слишком быстро будет заполняться ;)

anonymous ()
Ответ на: комментарий от bossuvarkin

L2, грубо говоря, - это где есть MAC адрес. В ppp только ip, поэтому пойдет.

anonymous ()

Что-то не сходится:

Есть интерфейсы eth0,eth1,eth2

в ifconfig видны eth1,eth2,eth3 с одинаковыми адресами

в iptables используется интерфейс ppp0

Где правда ?

Далее, зачем-то используется policy-routing (нафига ?)

Одинаковые адреса для P-t-P это не проблема, да и адрес удаленной стороны вообще не нужен.

Что мешает менять имя устройства в маршруте по-умолчанию ? Только в убогих системах нет возможности указать p-t-p устройство в качестве шлюза.

ip ro add default dev XXXX src 192.168.10.2
ip ro del default dev YYYY src 192.168.10.2
#для старых ядер нужно
ip ro flush 0/0 table cache
vel ★★★★★ ()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от anonymous

Через L3 интерфейс (gre, tun) можно сделать ip route add default dev tun0.

Только это называется не L3, а PtP (Point-to-Point).

AS ★★★★★ ()
Ответ на: комментарий от vel
ip ro add default dev XXXX src 192.168.10.2
ip ro del default dev YYYY src 192.168.10.2

ip - штука продвинутая. Потому проще надо быть:

ip ro change default dev XXXX src 192.168.10.2

AS ★★★★★ ()

Нужно, каждые 5 минут пускать весь траф сервера через следующий интерфейс.

А зачем ? Если, вдруг, речь про балансировку, то можно и одновременно.

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

я все время забываю какие параметры маршрута можно менять через change, а какие через replace :)

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

после этих комманд связь с сервером теряется. Так как я меняю дефолтные интерфейсы на что-либо еще. А мне этого делать не нужно. Есть интерфейс eth0. На нем статический ip и я захожу на сервер через ssh, соединяясь с этим ip.
Есть pptp соединение и интерфейс ppp0. Нужно пустить исходящий трафик сервера через ppp0, оставив старый ip(eth0). Я этого достиг перенаправляя определенные порты. Вот настройки, которые я делал:

iptables -t mangle -A OUTPUT -p tcp --dport 1892 -j MARK --set-mark 0x2[br]
ip route add tab 2 default via 192.168.1.1 src 192.168.10.2[br]
ip rule add prio 100 fwmark 0x2/0x2 lookup 2 [br]
iptables -t nat -A POSTROUTING -s 111.111.111.111(айпи моего сервера) -o ppp0 -j SNAT --to-source 192.168.10.2[br]
Но как мне сделать, что бы трафик шел не через ppp0, а через ppp1 или ppp2?
iptables -t nat -A POSTROUTING -s 111.111.111.111(айпи моего сервера) -o ppp1 -j SNAT --to-source 192.168.10.2 [br]
Эта команда ничего не меняет. ip ro flush 0/0 table cache - это тоже ничего не дает

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

Так как я меняю дефолтные интерфейсы на что-либо еще.
А мне этого делать не нужно.

Именно это и нужно. Тебе же надо произвольный трафик пускать через ppp.

после этих комманд связь с сервером теряется.

А связь теряется, очевидно, потому, что маршрут(ы) до PPtP-сервера (или серверов) не прописаны отдельно, мимо ppp.

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

Что бы пустить произвольный трафик через ppp, я выполняю команды:

iptables -t mangle -A OUTPUT -p tcp --dport 1892 -j MARK --set-mark 0x2
ip route add tab 2 default via 192.168.1.1 src 192.168.10.2
ip rule add prio 100 fwmark 0x2/0x2 lookup 2 
iptables -t nat -A POSTROUTING -s 111.111.111.111(айпи моего сервера) -o ppp0 -j SNAT --to-source 192.168.10.2
Весь исходящий трафик с порта 1892 идет через 192.168.10.2

Все работает на ура. Загвоздка в том, что у меня 2 интерфейса ppp

ppp1      Link encap:Point-to-Point Protocol
          inet addr:192.168.10.2  P-t-P:192.168.127.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1446  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:742 (742.0 B)  TX bytes:92 (92.0 B)

ppp2      Link encap:Point-to-Point Protocol
          inet addr:192.168.10.2  P-t-P:192.168.127.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1446  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:98 (98.0 B)  TX bytes:92 (92.0 B)
И как пустить трафик через ppp2 я не приложу ума. Так как у него один и тот же ip как у ppp1. Что бы я не делал, трафик продолжает идти через ppp1 (помогает только положить интерфейс ppp1 и пустить трафик через ppp2). Но это не вариант, так как через 3-5 таких манипуляций на сервере начинаются зависания pptp

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

Что бы пустить произвольный трафик через ppp, я выполняю команды:

Ещё раз: Как пустить весь исходящий трафик через определенный интерфейс? (комментарий). У меня стойкое ощущение, что делается что-то через не то место.

Кстати, зачем и почему там одинаковые IP ?

AS ★★★★★ ()
Последнее исправление: AS (всего исправлений: 1)
Ответ на: комментарий от anc

да, именно по этому :) Раньше были рандомные, а теперь всегда один и тот же ip адрес...

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