LINUX.ORG.RU
ФорумAdmin

Роутинг в GRE

 , , , ,


1

1

Доброго времени.

Суть проблемы - есть две машины в сети С. 1 машина с одним интерфейсом (eth0:5.5.5.5), просто висит в инете. 2 машина имеет два интерфейса, одним (vmbr0) смотрит в инет (IP:20.20.20.20), вторым (vmbr2) в локалку (192.168.0.0/24).

Нужно из локалки второй машины (192.168.0.0/24) пускать все пакеты через GRE-туннель между первой и второй машиной в интернет, чтобы 1 машина выступала в качестве шлюза.

Собственно туннель:

1 машина:

ip tunnel add tunnel0 mode gre local 5.5.5.5 remote 20.20.20.20 ttl 255 key 0xffafdfdf
ip link set tunnel0 up
ip addr add 10.0.0.1/24 peer 10.0.0.2/24 dev tunnel0
ip route add 192.168.0.0/24 via 10.0.0.2 dev tunnel0

2 машина:

ip tunnel add tunnel0 mode gre local 20.20.20.20 remote 5.5.5.5 ttl 255 key 0xffafdfdf
ip link set tunnel0 up
ip addr add 10.0.0.2/24 peer 10.0.0.1/24 dev tunnel0

Пытаюсь использовать TPROXY, но что-то подсказывает что можно без него:

1 машина:

iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

2 машина

iptables -t mangle -I PREROUTING -p tcp -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j TPROXY --on-ip 10.0.0.1 --on-port 0

tcpdump -I tunnel0 #молчит на обоих машинах

Так же выключен rp_filter на второй машине:

cat /proc/sys/net/ipv4/conf/all/rp_filter
0

Прошу помощи, что не хватает данной конфигурации? Если «tcpdump -I tunnel0» молчит даже на второй машине, то что-то именно на ней настроено не так?



Последнее исправление: kof (всего исправлений: 1)

Т.е. ты хочешь чтобы клиенты выходили во внешку с адресом первой машины?

Зарули их в туннель через PBR на второй машине:

ip route add default via 10.0.0.1 table 5
ip rule add from 192.168.0.0/24 table 5

blind_oracle ★★★★★
()

Если у вас в локалке 192.168.0.0/24, то почему в MASQUERADE правиле ″-s 192.168.222.0/24″ ?

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

TPROXY вам не нужен, только маршрутизация.

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

Не нужен, зачем? Обычный роутинг + нужен маскарадинг на тачке1 для выхода в инет (он судя по тому что написано и так есть).

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

Спасибо, заработало.

Но есть момент - не все сайты открываются... Может быть связано с https.

Гугл и по http и по https открывается нормально.

А вот такие сайты как privat24.ua и aval.ua уже молчат.

ovh.com если открывать первый раз - нормально. Обновить страницу - уже не работает.

GRE может плохо работать с https? Или куда копать? Машина 1 - территориально - во Франции.

kof
() автор топика
Ответ на: комментарий от blind_oracle

Спс, MTU поправил на туннеле (ifconfig tunnel0 mtu 1350 up && ip route add default via 10.0.0.1 table 5 mtu 1350 advmss 1310), но это не помогло. Поправил на конечных машинах в локалке, уменьшил до 1350 (windows cmd - netsh interface ipv4 set subinterface «network interface name» mtu=1350 store=persistent) - помогло. Многие машины в локалке на винде, есть некоторые телефоны на андроиде, есть маки...

Потом вернул MTU на конечной машине до 1460, и по вашему совету нашел правило iptables принудительно дающее меньший MSS при запросе к интернет-ресурсу:

iptables -A FORWARD -p tcp -s 192.168.0.0/24 ! -d 192.168.0.0/24 --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Так как я раньше ифконфигом применил MTU 1350 для всего туннеля то работает и это правило, но если для туннеля не задавать MTU, то нужно добавить еще одно правило:

iptables -A FORWARD -p tcp -s 192.168.0.0/24 ! -d 192.168.0.0/24 --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1310

Спасибо!

Теперь бы еще завернуть GRE в IPsec. В инете много манов для циски, а для Линукс не вижу... Можете подсказать куда копать?

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