LINUX.ORG.RU
ФорумAdmin

Не разберусь с маршрутизацией (ip route)


0

1

Есть шлюз. Вот некоторые настройки:

# ip route
xx.xx.xx.0/24 dev eth1.20  proto kernel  scope link  src xx.xx.xx.207 
xx.xx.xx.0/24 dev eth1  proto kernel  scope link  src xx.xx.xx.205 
192.168.1.0/24 dev eth2  proto kernel  scope link  src 192.168.1.240 
default via xx.xx.xx.205 dev eth1  scope link

xx.xx.xx.205 - наш внешний IP 192.168.1.240 - внутренний адрес шлюза

# iptables -L -t nat -n
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  192.168.1.0/24       0.0.0.0/0           mark match !0x1 to:xx.xx.xx.205 

На шлюзе есть ipsec, который соединяет нашу 192.168.1.0/24 подсеть с 192.168.3.0/24 подсетью.

Суть задачи: в сети есть второй роутер с адресом 192.168.1.250, на который надо направить весь интернет трафик. А по текущему каналу оставить только ipsec и один сайт: yy.yy.yy.yy.

Делаю что:

# ip route add 192.168.3.0/24 via xx.xx.xx.205 table 100
# ip route add yy.yy.yy.yy via xx.xx.xx.205 table 100
# ip route add default via 192.168.1.250 table 100
# iptables -t nat -F
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -m mark ! --mark 0x1 -j SNAT --to-source 192.168.1.240
# ip rule add from 192.168.1.0/24 table 100
В результате не работает интернет. По ipsec пакеты ходят, к сайту yy.yy.yy.yy - тоже. Пробую по-другому:
# ip route add 192.168.3.0/24 via xx.xx.xx.205 table 100
# ip route add yy.yy.yy.yy via xx.xx.xx.205 table 100
# ip route add default via 192.168.1.250 table 100
# ip route del default table main
# iptables -t nat -F
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -m mark ! --mark 0x1 -j SNAT --to-source 192.168.1.240
# ip rule add from 192.168.1.0/24 table 100
Не работает ни интернет, ни ipsec.

Оставляю первый вариант, но без правки iptables:

# ip route add 192.168.3.0/24 via xx.xx.xx.205 table 100
# ip route add yy.yy.yy.yy via xx.xx.xx.205 table 100
# ip route add default via 192.168.1.250 table 100
# iptables -t nat -F
# ip rule add from 192.168.1.0/24 table 100
Все пакеты ходят через xx.xx.xx.205

Как надо написать правила, чтобы решить задачу?



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

а зачем так сложно?

добавляем маршрут по умолчани для всего трафика наружу

route add defaut gw 192.168.1.250

добавляем маршрут к хосту который должен висеть на другом канале

route add -host yyy.yyy.yyy.yyy gw xxx.xxx.xxx.205

добавляем маршрут к сетке за тунелем (шлюз - IP на этой стороне)

route add -net 192.168.3.0/24 gw <ip тунеля>

натим весь тафик, который идёт через интерфейс, смотрящий в инет

iptables -t nat -A POSTROUTING -o <eth который в инет> -j MASQUERADE

не забываем про MTU дя пакетов, ходящих через тунель

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

У ipsec нет ip тунеля и SNAT (MASQUERADE) на трафик, который должен пойти в ipsec делать не надо. И не надо делать MASQERADE на весь исходящий трафик, так как там на eth1 два реальных ip-адреса:

iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -d 192.168.3.0/24
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j ACCEPT

Если ipsec на openswan, то он сам пропишет маршрут, а чтобы в отсутствии тунеля трафик не лез куда не надо, можно:

ip route add 192.168.3.0/24 reject metric 5

mky ★★★★★
()

Когда приводите правила iptables, либо двайте команде ключ -v, либо iptables-save. Иначе у вас не указываются интерфейсы в правиле.

на который надо направить весь интернет трафик

Непонятно к какой трафик — от шлюза или от сети 192.168.1.0/24? Если от сети, то трафик может пойти по петле:

192.168.1.X->192.168.1.240->192.168.1.250->Z.Z.Z.Z
Z.Z.Z.Z->192.168.1.250->192.168.1.X
И будут возникать icmp-redirect.

Вроде, вы для избавления от петли делаете SNAT, не знаю, хорошо ли это, ведь 192.168.1.250 будет ещё раз делать NAT. И не понятно как у вас сейчас работает доступ к сайту yy.yy.yy.yy с компьютеров локалки, вы ведь отправляете через eth1 пакеты, отNATченые от адреса 192.168.1.240.

Не понятно, зачем 192.168.1.250 в той же сети, ведь тогда на компьютерах сети можно просто вместо шлюза 192.168.1.240 указать 192.168.1.250.

И ещё не понятно, зачем отдельная таблица маршрутизации table 100 понадобилась.

В результате не работает интернет.

Здесь надо разбиратся подробнее, запускать с компьютера сети ping хоста в интернете и ловя tcpdump'ом пакеты на интерфейсах шлюза определять куда идут пакеты.

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