Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Kак перенаправить локальный трафик http соединения по другому маршруту в Ubuntu?  (Прочитано 2233 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн VVXXS

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Здравствуйте!
В Ubuntu нужно перенаправить локальный трафик с 80 порта (или например 143) на другой интерфейс, т. е. НЕ через дефолтный маршрут.

В системе: eth0: 192.168.15.20 подсеть 255.255.255.0 шлюз дефолтный 192.168.15.1
Нужно перенаправить на VPN-соединение PPP2: 192.168.50.2 шлюз 192.168.10.1

Пробовал так:
создал таблицу в /etc/iproute2/rt_tables "100 redir"

ip route add default via 192.168.10.1 dev ppp2 table 100
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 80 -j MARK --set-mark 0x2
ip rule add fwmark 0x2/0x2 lookup 100
(взято отсюда: https://habrahabr.ru/post/108690/)

Для теста использовал броузер - после применения вышенаписаного перестает открывать страницы.
Смотрел tcpdump -i ppp2 port 80 - пакеты уходят с интерфейса.
На получателя ничего не приходит(
Если прописать дефолтным маршрут "ip route add default via 192.168.10.1 dev ppp2" все работает отлично.

Спасибо за совет!

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Вы исходящий трафик со входящим не путаете?…
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн VVXXS

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Как раз нет. Трафик со всех приложений с моей машины (сгенерированый прилоениями на моем хосте) идет по стандартному маршруту. А обращение к внешнему почтовому среверу  с моей машины, мне нужно перенаправить через VPN-канал PPP2. То есть трафик исходящий.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
А за VPN вообще есть интернет?…
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Судя по
Если прописать дефолтным маршрут "ip route add default via 192.168.10.1 dev ppp2" все работает отлично.
да, хотя очень странно, не арбайтает.
Самое банальное - попробовать замаскарадить ppp2

Оффлайн VVXXS

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Пробовал маскарадить - делал вот так:

ip route add default via 192.168.10.1 dev ppp2 table 100
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 80 -j MARK --set-mark 0x2
ip rule add fwmark 0x2/0x2 lookup 100
iptables -t nat -A POSTROUTING -o ppp2 -j MASQUERADE
Не заработало  :-\


Пользователь решил продолжить мысль [time]25 Январь 2016, 14:02:31[/time]:
Сделал:
ip route add default via 192.168.10.1 dev ppp2 table 100
iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 4
ip rule add fwmark 4 lookup 100
iptables -t nat -A POSTROUTING -o ppp2 -j MASQUERADE

В броузере ввел несколько адресов с https. Ответы не пришли
Вот фрагмент прослушки PPP2 соединения с помощью команды "tcpdump -i ppp2 port 443"


(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 25 Января 2016, 20:15:19 от VVXXS »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
откройте для себя тег [сode][/сode]. Внутри него вся эта чехарда будет выглядеть правильно

Пользователь решил продолжить мысль 25 Января 2016, 19:03:17:
стоп-стоп-стоп... а разве для ppp указывается IP-адрес шлюза?
« Последнее редактирование: 25 Января 2016, 19:03:17 от fisher74 »

Оффлайн VVXXS

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
По PPP2 я подключаюсь к другому роутеру, поддерживаещиму VPN-соединение. Я попробовал прописать как Вы и сказали - без указания шлюза "ip route add default dev ppp2 table 100" - тот же эффект.
Кстати в системе ставил его шлюзом по умолчанию, так работает
"ip route add default via 192.168.10.1 dev ppp2" и
"ip route add default dev ppp2"  :)

По моей задаче: ответы уходят, но не приходят. Т.е. Ставлю к примеру в системе по умолчанию маршрут на PPP1. Потом:
ip route add default dev ppp2 table 100
iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 3
ip rule add fwmark 3 lookup 100

Итог - данные уходят в одностороннем порядке с нужного мне интерфейса PPP2. То есть правило таки заворачивает данные. На всякий случай слушал 443 порт интерфейса дефолтного маршрута - так на нем все тихо. Ни отсылов ни приемов. Вот срез с PPP2 - только отправка данных:
(Нажмите, чтобы показать/скрыть)

Пользователь решил продолжить мысль [time]25 Январь 2016, 22:18:49[/time]:
Хочу уточнить: недумаю, что влияет на работу, но у меня еще прописаны правила для отдачи трафика с того же интерфейса, на который пришел запрос - как здесь в примере доступом к веб-серверу с 2 интерфейсов. Абзац: "Доступность сервера через несколько аплинков" https://habrahabr.ru/post/108690/

При запуске интерфейсов в /etc/ppp/ip-up.d/startmy у меня прописано:
(Нажмите, чтобы показать/скрыть)
Пробовал убирать строки - на решение задачи не повлияло.
« Последнее редактирование: 25 Января 2016, 21:20:15 от VVXXS »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Может всё-таки тогда покажете полный список правил?

Оффлайн VVXXS

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Правильно ли понимаю - полный список правил выведет команда "ip rule" и "ip route show table all"?
Я немного новичек в Ubuntu  ::)
ip rule:
(Нажмите, чтобы показать/скрыть)

ip route show table all type unicast:
(Нажмите, чтобы показать/скрыть)

И fisher74, спасибо за активное участие! Уже 3-ий день хожу вокруг да около...
« Последнее редактирование: 25 Января 2016, 22:11:33 от VVXXS »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
ip route show table all type unicastА то мусора много.
И iptables-save забыли.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн VVXXS

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
AnrDaemon, исправил в прошлом сообщении под спойлером.
На счет  iptables-save не заыл, а не знал. Вторую неделю осваиваю только.
Вы имели в виду сохранить единожды таблицы, а потом просто вызывать их при поднятии PPP из файла /etc/ppp/ip-up.d/startmy командой iptables-restore?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Мы имели в виду показать их нам!…
Стандартная дигностика сети.
ip a; ip -s l; ip r s table all type unicast; iptables-save
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн VVXXS

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Извините, еще молодой зеленый  :D
(Нажмите, чтобы показать/скрыть)
Еще - дополнительные маршруты прописаны мною. На решение задачи не влияют.
Это пускаю запросы к DNS по другим маршрутам.
ip route add 77.88.8.1 via 192.168.1.1 dev ppp1
ip route add 194.50.85.2 via 192.168.1.1 dev ppp1
ip route add 194.50.85.1 via 192.168.1.1 dev ppp1


Пользователь решил продолжить мысль [time]26 Январь 2016, 20:15:52[/time]:
Дополняю. Все же пакеты ходят!
Играл с командой: "openssl s_client -connect pop.ukr.net:995"

Вот дамп при нормальном соединении через маршрут по умолчанию:
(Нажмите, чтобы показать/скрыть)

А вот дамп после команд после:
ip route add default via 192.168.10.1 table 100
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 995 -j MARK --set-mark 0x3
ip rule add fwmark 0x3/0x3 lookup 100
iptables -t nat -A POSTROUTING -o 192.168.10.1 -j MASQUERADE

(Нажмите, чтобы показать/скрыть)

Как видно - данные уходят и приходят на интерфейс тоннеля PPP2! Только вот вопрос - почему их приложение не видит  :-[
Судя по нулевой длинне пакетов - клиент и сервер немогут договориться. Скорее все-го из-за того, что клиент отсылает запрос по дефолтному маршруту, а ответ приходит с другого интерфейса. Может нужно сменить адрес отправителя в источнике ответа? Правильна ли команда -
iptables -t nat -A POSTROUTING --src 192.168.50.2 -p tcp --dport 80 -j SNAT --to-source 192.168.15.1 ???
« Последнее редактирование: 27 Января 2016, 12:29:21 от VVXXS »

Оффлайн VVXXS

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
РЕШЕНО! Нехватало знаний.
Нужно было разрешить переадресацию и отключить филры в ядре:

/etc/sysctl.conf:

net.ipv4.conf.default.rp_filter=0 
net.ipv4.conf.all.rp_filter=0 
net.ipv4.conf.eth0.rp_filter=0 
net.ipv4.ip_forward=1 
net.ipv4.conf.all.force_igmp_version=2
Спасибо всем за участие!

 

Страница сгенерирована за 0.057 секунд. Запросов: 25.