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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: [РЕШЕНО] Не могу перенаправить трафик на другой интерфейс  (Прочитано 11482 раз)

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

Оффлайн Andeee

  • Автор темы
  • Участник
  • *
  • Сообщений: 106
    • Просмотр профиля
Привет!
На сервере-шлюзе 2 физических интерфейса eth0 - интернет, eth1 - локалка. И один интерфейс ppp10 (vpn до другого сервера).

Локальный интерфейс eth1 подключен к роутеру, который раздает интернет по wi-fi. Все клиенты подключены через роутер.

Нужно трафик который идет от любого компа из локалки на адрес 111.111.111.111 отправить через ppp10. По умолчанию весь трафик уходит через eth0.

Как только не пробовал. После добавления правил, пакет с сервера уходит через ppp10, пинг тоже проходит. А из локалки не проходит ни пинг, ни tracepath.

Делал так.

ip route add default via 10.10.5.5 dev ppp10 table 120
ip rule add to 111.111.111.111 table 120

10.10.5.5 это ip сервера, к которому подключаюсь по vpn.

Также пробовал через CONNMARK (но результат тот же)
iptables -t mangle -A INPUT -i eth1 -d 111.111.111.111 -j CONNMARK --set-mark 0x2
iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark

ip route add default via 10.10.5.5 dev ppp10 table 102
ip rule add fwmark 0x2/0x2 lookup 102

В общем пока ничего не получилось,
кто видит в чем ошибка, подскажите пожалуйста. Спасибо.
« Последнее редактирование: 25 Июня 2014, 20:51:34 от Andeee »

Оффлайн AnrDaemon

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

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

Оффлайн Andeee

  • Автор темы
  • Участник
  • *
  • Сообщений: 106
    • Просмотр профиля
Трафик вроде как оказывается видно:
Во время пинга с локалки:

# tcpdump -i ppp10
21:16:44.385656 IP 192.168.10.11 > 111.111.111.111: ICMP echo request, id 4984, seq 135, length 64

Но пакеты все теряются:
142 packets transmitted, 0 received, 100% packet loss, time 142127ms
« Последнее редактирование: 22 Июня 2014, 22:03:07 от Andeee »

Оффлайн koshev

  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Просто маршрутом до целевого хоста через ppp10 разве нельзя это реализовать? Судя по той топологии, что Вы описали это то, что надо.
Если действительно хотите, так как хотите, то где правила для локалки?
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 22 Июня 2014, 21:41:34 от koshev »
OpenWrt 19.07

Оффлайн Andeee

  • Автор темы
  • Участник
  • *
  • Сообщений: 106
    • Просмотр профиля
Я прописывал просто маршрут, но результат был такой же. В локалке даже пинг не проходил.
Просто не пойму, видимо что-то упускаю.

Точно не помню уже ... но вроде прописывал так:
route add -host 111.111.111.111 netmask 255.255.255.255 gw 10.10.5.5 ppp10
У меня так тоже ничего не получилось, и я стал пробовать policy-routing.

Какие правила для локалки нужно прописать?
Разве пакеты которые придут из локалки на 111,111,111,111 автоматом не должны перенаправиться по прописанному маршруту?
« Последнее редактирование: 22 Июня 2014, 22:10:47 от Andeee »

Оффлайн koshev

  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Я прописывал просто маршрут, но результат был такой же. В локалке даже пинг не проходил. Какие правила для локалки нужно прописать?
ip -4 r s t all type unicast и iptables-save показывайте. Без конспироложества.
Разве пакеты которые придут из локалки на 111,111,111,111 автоматом не должны перенаприться по прописанному маршруту?
Как у Вас реализована отдельная таблица с маршрутом и правила iptables, то нет.
Во первых пакет не маркируется, Вы можете посмотреть это через таблесы с действием -j LOG
Во вторых у Вас в целевой таблице нет маршрута на локальную сеть.
« Последнее редактирование: 22 Июня 2014, 22:16:10 от koshev »
OpenWrt 19.07

Оффлайн Andeee

  • Автор темы
  • Участник
  • *
  • Сообщений: 106
    • Просмотр профиля
ip -4 r s t all type unicast
default via 10.10.5.5 dev ppp10  table 120
default via 217.12.12.233 dev eth0
10.10.5.5 dev ppp10  proto kernel  scope link  src 10.10.5.55
78.47.47.206 via 217.12.83.233 dev eth0  src 217.12.12.234
192.168.10.0/24 dev eth1  proto kernel  scope link  src 192.168.10.10
217.12.12.232/30 dev eth0  proto kernel  scope link  src 217.12.12.234

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

Оффлайн koshev

  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Ясно-понятно.
Разрешаете в правилах iptables прохождение пакетов на заданный адрес, в таблице main задаёте нужный маршрут.
Сложная маршрутизация в Вашем случае не требуется.
OpenWrt 19.07

Оффлайн Andeee

  • Автор темы
  • Участник
  • *
  • Сообщений: 106
    • Просмотр профиля
Проблема значит в iptables?

Значит такого правила будет достаточно?
route add -host 111.111.111.111 netmask 255.255.255.255 gw 10.10.5.5 ppp10
А где именно нужно пропустить пакеты. Я честно не совсем понимаю где они режутся.
И насколько я понял, они же уходят, просто не возвращаются!?


« Последнее редактирование: 22 Июня 2014, 22:31:55 от Andeee »

Оффлайн koshev

  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
Проблема значит в iptables?
Судя по тому что Вы предоставили - да.
Значит такого правила будет достаточно?
route add -host 111.111.111.111 netmask 255.255.255.255 gw 10.10.5.5 ppp10
Достаточно такого.
ip route add 111.111.111.111 dev ppp10, протокол точка-точка всё-таки.
А где именно нужно пропустить пакеты. Я честно не совсем понимаю где они режутся.
Цепочка FORWARD таблицы filter.
И насколько я понял, они же уходят, просто не возвращаются!?
Уходят только до vpn-сервера, который скорее всего понятия не имеет что делать с адресом из сети 192.168.10/24. Т.е не уходят. Смотрите адрес источника в Вашем выхлопе tcpdump. В таблице nat цепочку POSTROUTING проверяйте.



OpenWrt 19.07

Оффлайн Andeee

  • Автор темы
  • Участник
  • *
  • Сообщений: 106
    • Просмотр профиля
Спасибо, koshev.

Правило добавил, правда не понимаю правильно ли. Сейчас ничего не изменилось.
Пробовал с политикой по умолчанию во всех цепочках ACCEPT, все так же.

Сейчас добавил правило
-A FORWARD -i $LAN_IFACE -d 111,111,111,111 -j ACCEPT

Цитировать
Уходят только до vpn-сервера, который скорее всего понятия не имеет что делать с адресом из сети 192.168.10/24. Т.е не уходят. Смотрите адрес источника в Вашем выхлопе tcpdump. В таблице nat цепочку POSTROUTING проверяйте.
tcpdump показывает источник 192,168,10,11. Надо подменять адрес отправителя? Как это сделать?

Оффлайн koshev

  • Старожил
  • *
  • Сообщений: 1709
  • חתול המדען
    • Просмотр профиля
NAT, в ответе #3 под спойлером, есть пример цепочки.
OpenWrt 19.07

Оффлайн Andeee

  • Автор темы
  • Участник
  • *
  • Сообщений: 106
    • Просмотр профиля
Спасибо за помощь, koshev.

Разобрался!

В общем, проблема была именно в адресе отправления.
Добавил правило:
iptables -t nat -A POSTROUTING -o ppp10 -j SNAT --to-source 10.10.5.55
Теперь все работает.

Спасибо!
« Последнее редактирование: 24 Июня 2014, 20:37:38 от Andeee »

Оффлайн Andeee

  • Автор темы
  • Участник
  • *
  • Сообщений: 106
    • Просмотр профиля
При этих настройках пинг с самого сервера не проходит.

tcpdump показывает, что пакеты уходят и возращаются, т.е. видно и request и reply.
А ping говорит, что все пакеты потеряны. Адрес отправителя подменяется нормально.

При этом из локалки все ходит как надо.
Где они могут теряться когда пакеты идут от самого сервера?

Оффлайн Andeee

  • Автор темы
  • Участник
  • *
  • Сообщений: 106
    • Просмотр профиля
Цитировать
При этих настройках пинг с самого сервера не проходит.

tcpdump показывает, что пакеты уходят и возращаются, т.е. видно и request и reply.
А ping говорит, что все пакеты потеряны. Адрес отправителя подменяется нормально.

При этом из локалки все ходит как надо.
Где они могут теряться когда пакеты идут от самого сервера?

Решилось добавлением правила
iptables -A INPUT -i ppp10 -d 10.10.5.0/24 -j ACCEPT

 

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