Есть два интерфейса, которые смотрят во внутреннюю сеть (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 -Xip rule add iif $lan1 table 101 pref 101
ip rule add iif $lan2 table 102 pref 102ip 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.
>[оверквотинг удален]
> /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 - и соответственно ты получашь срабатывание в дальнейшем другой таблицы
>[оверквотинг удален]
>> с 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сделать?
Показывайте вывод
ip ru sh
ip ro sh table 101
ip ro sh table 102
ip ro sh table main
ip ro sh table defaultiptables -t nat -nvL --line
iptables -t mangle -nvL --line
iptabbles -nvL --line
> Показывайте вывод
> 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 --lineroot@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 defaultroot@gate:~# ip ro sh table 101
root@gate:~# ip ro sh table 102
10.0.0.0/24 dev eth3 scope linkroot@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 100root@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 destinationChain OUTPUT (policy ACCEPT 16 packets, 1590 bytes)
num pkts bytes target prot opt in out source destinationChain 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/0root@gate:~# iptables -t mangle -nvL --line
Chain PREROUTING (policy ACCEPT 58811 packets, 18M bytes)
num pkts bytes target prot opt in out source destinationChain INPUT (policy ACCEPT 1740 packets, 130K bytes)
num pkts bytes target prot opt in out source destinationChain 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 PMTUChain OUTPUT (policy ACCEPT 1390 packets, 116K bytes)
num pkts bytes target prot opt in out source destinationChain POSTROUTING (policy ACCEPT 58184 packets, 18M bytes)
num pkts bytes target prot opt in out source destinationroot@gate:~# iptables -nvL --line
Chain INPUT (policy ACCEPT 1841 packets, 138K bytes)
num pkts bytes target prot opt in out source destinationChain FORWARD (policy ACCEPT 63548 packets, 23M bytes)
num pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 1473 packets, 125K bytes)
num pkts bytes target prot opt in out source destination
Ну и что?
Вывод этих команд вас ни на какие мысли не наводит ?Если нет, то это epic fail.
Вернитесь к проблеме через пару дней, может недельку, если не получится решить проблему - прекратите заниматься администрированием серверов.
> Ну и что?
> Вывод этих команд вас ни на какие мысли не наводит ?
> Если нет, то это 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И что в такой ситуации делать?
> Насколько я понял, проблема в перекрытии первой таблицы второй:
>>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 соединения).
Сейчас поставил все правильно, вроде, но все-равно идут все через 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 destinationChain OUTPUT (policy ACCEPT 10 packets, 3020 bytes)
num pkts bytes target prot opt in out source destinationChain 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 destinationChain INPUT (policy ACCEPT 3908 packets, 296K bytes)
num pkts bytes target prot opt in out source destinationChain 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 PMTUChain OUTPUT (policy ACCEPT 3430 packets, 275K bytes)
num pkts bytes target prot opt in out source destinationChain 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 destinationChain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destinationА вот файлы настроек:
-----------------------------------------------------------
/etc/network/interfacesauto 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.0auto 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.shsysctl net.ipv4.ip_forward=1
sysctl net.ipv4.conf.eth0.arp_filter=1
sysctl net.ipv4.conf.eth2.arp_filter=1ip 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.shsysctl net.ipv4.ip_forward=1
sysctl net.ipv4.conf.eth0.arp_filter=1
sysctl net.ipv4.conf.eth2.arp_filter=1ip 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
То, что вы программист, а не системный администратор, еще не значит, что надо забить на внимательность.
Рекомендую поднять систему с нуля, всю конфигурацию. В конфигах "легкие нестыковки".
Подымете конфигурацию с нуля, при наличии внимательности, этих тупых ошибок не допустите.За время существования темы можно было перепахать всё на раз десять. Занимайтесь.
>Есть два интерфейса, которые смотрят во внутреннюю сеть (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_tablesip ru a iif eth0 table ppptun
ip ru a iif eth2 table directip r a default via [ip провайдерского шлюза ppp] table ppptun
ip r a default via [ip провайдерского ethernet шлюза] table directiptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth3 -j MASQUERADE