URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 90260
[ Назад ]

Исходное сообщение
"оут с двух внутренних сетевух на две внешние"

Отправлено TheMengzor , 10-Ноя-10 13:39 
Есть два интерфейса, которые смотрят во внутреннюю сеть (eth0 - 10.0.0.2 и eth2 - 10.0.0.3), и два внешних интерфейса (ppp0 и eth3). Как сделать NAT eth0<->ppp0 и eth2<->eth3?

Пробовал

sysctl net.ipv4.ip_forward=1
sysctl net.ipv4.conf.eth0.arp_filter=1
sysctl net.ipv4.conf.eth2.arp_filter=1

#Интернет 1, PPPoE
inet1='ppp0'
#Интернет 2, FTH static
inet2='eth3'
#LAN 1
lan1='eth0'
#LAN 2
lan2='eth2'

gate_inet1='195.5.5.203'
gate_inet2='217.12.196.125'

/sbin/iptables -F
/sbin/iptables -X

ip rule add iif $lan1 table 101 pref 101
ip rule add iif $lan2 table 102 pref 102

ip ro add default via $gate_inet1 dev $inet1 table 101
ip ro add default via $gate_inet2 dev $inet2 table 102

/sbin/iptables -t nat -A POSTROUTING -o $inet1 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o $inet2 -j MASQUERADE

Но с обоих интерфейсов вылет идет на inet1, если отключить его, то бросает всех на inet2. Но никак не получается бросить весь вход с lan1 на inet1, а lan2 на inet2.


Содержание

Сообщения в этом обсуждении
"оут с двух внутренних сетевух на две внешние"
Отправлено KobaLTD , 10-Ноя-10 13:53 
>[оверквотинг удален]
> /sbin/iptables -X
> ip rule add iif $lan1 table 101 pref 101
> ip rule add iif $lan2 table 102 pref 102
> ip ro add default via $gate_inet1 dev $inet1 table 101
> ip ro add default via $gate_inet2 dev $inet2 table 102
> /sbin/iptables -t nat -A POSTROUTING -o $inet1 -j MASQUERADE
> /sbin/iptables -t nat -A POSTROUTING -o $inet2 -j MASQUERADE
> Но с обоих интерфейсов вылет идет на inet1, если отключить его, то
> бросает всех на inet2. Но никак не получается бросить весь вход
> с lan1 на inet1, а lan2 на inet2.

а сделать
ip route add 10.0.0.0/24 dev eth0 table 101
ip route add 10.0.0.0/24 dev eth2 table 102

пробовал? без указание в доп таблицах о маршрутах к локальным сетям инфа о них береться из main насколько я понимаю у тебя одна и таже подсеть на обоих интерфейсах (смысла в этом не улавливаю) и срабатывает только самый первый из них т.е. пакет может придти на eth2 а ответ удет в eth0 - и соответственно ты получашь срабатывание в дальнейшем другой таблицы


"оут с двух внутренних сетевух на две внешние"
Отправлено TheMengzor , 10-Ноя-10 14:44 
>[оверквотинг удален]
>> с lan1 на inet1, а lan2 на inet2.
> а сделать
> ip route add 10.0.0.0/24 dev eth0 table 101
> ip route add 10.0.0.0/24 dev eth2 table 102
> пробовал? без указание в доп таблицах о маршрутах к локальным сетям инфа
> о них береться из main насколько я понимаю у тебя одна
> и таже подсеть на обоих интерфейсах (смысла в этом не улавливаю)
> и срабатывает только самый первый из них т.е. пакет может придти
> на eth2 а ответ удет в eth0 - и соответственно ты
> получашь срабатывание в дальнейшем другой таблицы

Это вместо
> ip ro add default via $gate_inet1 dev $inet1 table 101
> ip ro add default via $gate_inet2 dev $inet2 table 102

сделать?


"оут с двух внутренних сетевух на две внешние"
Отправлено PavelR , 10-Ноя-10 14:34 

Показывайте вывод

ip ru sh

ip ro sh table 101
ip ro sh table 102
ip ro sh table main
ip ro sh table default

iptables -t nat -nvL --line
iptables -t mangle -nvL --line
iptabbles -nvL --line


"оут с двух внутренних сетевух на две внешние"
Отправлено TheMengzor , 10-Ноя-10 14:41 
> Показывайте вывод
> ip ru sh
> ip ro sh table 101
> ip ro sh table 102
> ip ro sh table main
> ip ro sh table default
> iptables -t nat -nvL --line
> iptables -t mangle -nvL --line
> iptabbles -nvL --line

root@gate:~# ip ru sh
0:    from all lookup local
101:    from all iif eth0 lookup 101
102:    from all iif eth2 lookup 102
32766:    from all lookup main
32767:    from all lookup default

root@gate:~# ip ro sh table 101

root@gate:~# ip ro sh table 102
10.0.0.0/24 dev eth3  scope link

root@gate:~# ip ro sh table main
195.5.5.204 dev ppp0  proto kernel  scope link  src 178.94.108.38
217.12.196.124/30 dev eth3  proto kernel  scope link  src 217.12.196.126
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.2
10.0.0.0/24 dev eth1  proto kernel  scope link  src 10.0.0.3
default via 217.12.196.125 dev eth3  metric 100

root@gate:~# ip ro sh table default

root@gate:~# iptables -t nat -nvL --line
Chain PREROUTING (policy ACCEPT 10087 packets, 932K bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain OUTPUT (policy ACCEPT 16 packets, 1590 bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain POSTROUTING (policy ACCEPT 8 packets, 986 bytes)
num   pkts bytes target     prot opt in     out     source               destination        
1        0     0 MASQUERADE  all  --  *      ppp0    0.0.0.0/0            0.0.0.0/0          
2     9021  849K MASQUERADE  all  --  *      eth3    0.0.0.0/0            0.0.0.0/0          

root@gate:~# iptables -t mangle -nvL --line
Chain PREROUTING (policy ACCEPT 58811 packets, 18M bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain INPUT (policy ACCEPT 1740 packets, 130K bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain FORWARD (policy ACCEPT 56794 packets, 18M bytes)
num   pkts bytes target     prot opt in     out     source               destination        
1        0     0 TCPMSS     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0           tcp flags:0x06/0x02 tcpmss match 1400:65495 TCPMSS clamp to PMTU

Chain OUTPUT (policy ACCEPT 1390 packets, 116K bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain POSTROUTING (policy ACCEPT 58184 packets, 18M bytes)
num   pkts bytes target     prot opt in     out     source               destination        

root@gate:~# iptables -nvL --line
Chain INPUT (policy ACCEPT 1841 packets, 138K bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain FORWARD (policy ACCEPT 63548 packets, 23M bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain OUTPUT (policy ACCEPT 1473 packets, 125K bytes)
num   pkts bytes target     prot opt in     out     source               destination  


"оут с двух внутренних сетевух на две внешние"
Отправлено PavelR , 10-Ноя-10 18:36 

Ну и что?
Вывод этих команд вас ни на какие мысли не наводит ?

Если нет, то это epic fail.

Вернитесь к проблеме через пару дней, может недельку, если не получится решить проблему - прекратите заниматься администрированием серверов.


"оут с двух внутренних сетевух на две внешние"
Отправлено TheMengzor , 10-Ноя-10 20:04 
> Ну и что?
> Вывод этих команд вас ни на какие мысли не наводит ?
> Если нет, то это epic fail.
> Вернитесь к проблеме через пару дней, может недельку, если не получится решить
> проблему - прекратите заниматься администрированием серверов.

Я вообще веб-программист, поэтому не шибко-то и разбираюсь в этом. Есть задача раскинуть двух провайдеров на пользователей (определенному юзеру - определенный инет) на существующем железе. Подумал и решил сделать это методом подброса пользователям по DHCP нужного шлюза (10.0.0.3 или 10.0.0.2). Полностью читать огромные маны по iptables и ip route за пару дней не получится, а задачу решать нужно еще вчера.

Я пришел на ресурс за помощью в решении данной проблемы. Огромное вам спасибо за подкидывание пищи для ума (пусть и такой скудной), но буду еще более признателен, если поясните в какой части аутпутов собака порылась. А коли скажете, в чем конкретно проблема, так вообще цены вам не будет.

И да, каждый должен заниматься своим делом, но не всегда же :)

Насколько я понял, проблема в перекрытии первой таблицы второй:
>root@gate:~# ip ro sh table 101
>
>root@gate:~# ip ro sh table 102
>10.0.0.0/24 dev eth3  scope link

И что в такой ситуации делать?


"оут с двух внутренних сетевух на две внешние"
Отправлено PavelR , 11-Ноя-10 07:24 
> Насколько я понял, проблема в перекрытии первой таблицы второй:
>>root@gate:~# ip ro sh table 101
>>
>>root@gate:~# ip ro sh table 102
>>10.0.0.0/24 dev eth3  scope link

Нет, не так. таблицы абсолютно не связанная вещь.
ПРоблема в том, что таблица пуста.
Это потому, что соединение динамическое, pppoe.
Оно имеет свойство пропадать/подыматься, подыматься поздно и т п.

Т.е. в скрипте в котором выполняется

ip ro add default via $gate_inet1 dev $inet1 table 101


в тот момент нет устройства/соединения пппое.

=====

как это работает:

система собирается промаршрутизировать пакет

>root@gate:~# ip ru sh
>0:    from all lookup local
>101:    from all iif eth0 lookup 101
>102:    from all iif eth2 lookup 102
>32766:    from all lookup main
>32767:    from all lookup default

она перебирает правила (ru) до совпадения, затем пытается найти маршрут в соответствующей таблице. Если не находит, идет к следующему правилу.
Поскольку 101 пуста, то пакеты маршрутизируются по правилу default таблицы main.


Правильное решение - прописать команду добавления маршрута

ip ro add default via $gate_inet1 dev $inet1 table 101

в скрипты ip-up.local (или как он там называется для ppp соединения).


"оут с двух внутренних сетевух на две внешние"
Отправлено TheMengzor , 11-Ноя-10 16:33 
Сейчас поставил все правильно, вроде, но все-равно идут все через 1 шлюз,  вывод команд:
-----------------------------------------------------------
root@gate:~# ip ru sh
0:    from all lookup local
101:    from all iif eth0 lookup 101
102:    from all iif eth1 lookup 102
32766:    from all lookup main
32767:    from all lookup default
-----------------------------------------------------------
root@gate:~# ip ro sh table 101
default via 195.5.5.203 dev ppp0
-----------------------------------------------------------
root@gate:~# ip ro sh table 102
default via 217.12.196.125 dev eth3
-----------------------------------------------------------
root@gate:~# ip ro sh table main
195.5.5.203 dev ppp0  proto kernel  scope link  src 94.179.102.123
217.12.196.124/30 dev eth3  proto kernel  scope link  src 217.12.196.126
10.0.0.0/24 dev eth1  proto kernel  scope link  src 10.0.0.3
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.2
default via 217.12.196.125 dev eth3  metric 100
-----------------------------------------------------------
root@gate:~# ip ro sh table default
-----------------------------------------------------------
root@gate:~# iptables -t nat -nvL --line
Chain PREROUTING (policy ACCEPT 8125 packets, 632K bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain OUTPUT (policy ACCEPT 10 packets, 3020 bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain POSTROUTING (policy ACCEPT 20 packets, 3552 bytes)
num   pkts bytes target     prot opt in     out     source               destination        
1     3015  330K MASQUERADE  all  --  *      eth3    0.0.0.0/0            0.0.0.0/0          
2        0     0 MASQUERADE  all  --  *      ppp0    0.0.0.0/0            0.0.0.0/0          
-----------------------------------------------------------
root@gate:~# iptables -t mangle -nvL --line
Chain PREROUTING (policy ACCEPT 37871 packets, 8205K bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain INPUT (policy ACCEPT 3908 packets, 296K bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain FORWARD (policy ACCEPT 26027 packets, 7408K bytes)
num   pkts bytes target     prot opt in     out     source               destination        
1        0     0 TCPMSS     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0           tcp flags:0x06/0x02 tcpmss match 1400:65495 TCPMSS clamp to PMTU

Chain OUTPUT (policy ACCEPT 3430 packets, 275K bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain POSTROUTING (policy ACCEPT 29457 packets, 7683K bytes)
num   pkts bytes target     prot opt in     out     source               destination        
-----------------------------------------------------------
root@gate:~# iptables -nvL --line
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination      

А вот файлы настроек:
-----------------------------------------------------------
/etc/network/interfaces

auto lo
iface lo inet loopback

#ITL
auto eth3
iface eth3 inet static
        address 217.12.196.126
        netmask 255.255.255.252
        gateway 217.12.196.125
        pre-up ifconfig eth1 up
        #post-up /etc/network/nat.itl.sh

#LAN 2
auto eth0
iface eth0 inet static
        address 10.0.0.2
        netmask 255.255.255.0

#LAN 3
auto eth1
iface eth1 inet static
        address 10.0.0.3
        netmask 255.255.255.0

auto provider
iface provider inet ppp
        pre-up ifconfig eth2 up
        pre-up ifconfig eth0 up
        #post-up /etc/network/nat.utel.sh
        provider provider
-----------------------------------------------------------
/etc/network/nat.itl.sh

sysctl net.ipv4.ip_forward=1
sysctl net.ipv4.conf.eth0.arp_filter=1
sysctl net.ipv4.conf.eth2.arp_filter=1

ip rule add iif eth1 table 102 pref 102

ip ro add default via 217.12.196.125 dev eth3 table 102

/sbin/iptables -t nat -A POSTROUTING -o eth3 -j MASQUERADE
-----------------------------------------------------------
/etc/network/nat.utel.sh

sysctl net.ipv4.ip_forward=1
sysctl net.ipv4.conf.eth0.arp_filter=1
sysctl net.ipv4.conf.eth2.arp_filter=1

ip rule add iif eth0 table 101 pref 101

ip ro add default via 195.5.5.203 dev ppp0 table 101

/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE


"оут с двух внутренних сетевух на две внешние"
Отправлено PavelR , 11-Ноя-10 22:00 
То, что вы программист, а не системный администратор, еще не значит, что надо забить на внимательность.


Рекомендую поднять систему  с нуля, всю конфигурацию. В конфигах "легкие нестыковки".
Подымете конфигурацию с нуля, при наличии внимательности, этих тупых ошибок не допустите.

За время существования темы можно было перепахать всё на раз десять. Занимайтесь.


"оут с двух внутренних сетевух на две внешние"
Отправлено Гусище , 14-Ноя-10 01:23 
>Есть два интерфейса, которые смотрят во внутреннюю сеть (eth0 - 10.0.0.2 и eth2 - 10.0.0.3), и два внешних интерфейса (ppp0 и eth3). Как сделать NAT eth0<->ppp0 и eth2<->eth3?

Может так получится:

echo 1 ppptun >> /etc/iproute2/rt_tables
echo 2 direct >> /etc/iproute2/rt_tables

ip ru a iif eth0 table ppptun
ip ru a iif eth2 table direct

ip r a default via [ip провайдерского шлюза ppp] table ppptun
ip r a default via [ip провайдерского ethernet шлюза] table direct

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth3 -j MASQUERADE