Никак не могу наладить маршрутизацию. Может кто подскажет?
Имеется роутер на Fedora Core 3 с тремя итерфейсами:
eth0 Link encap:Ethernet HWaddr 00:00:00:00:00:01
inet addr:83.237.68.8 Bcast:83.237.68.63 Mask:255.255.255.192
eth1 Link encap:Ethernet HWaddr 00:00:00:00:00:02
inet addr:10.0.0.1 Bcast:10.0.255.255 Mask:255.255.0.0
eth2 Link encap:Ethernet HWaddr 00:00:00:00:00:03
inet addr:192.168.0.2 Bcast:192.168.0.3 Mask:255.255.255.252Таблица маршрутизации:
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.252 U 0 0 0 eth2
83.237.68.0 * 255.255.255.192 U 0 0 0 eth0
10.0.0.0 * 255.255.0.0 U 0 0 0 eth1
169.254.0.0 * 255.255.0.0 U 0 0 0 eth2
default 83.237.68.1 0.0.0.0 UG 0 0 0 eth0Требуется, чтобы пакеты для хоста 83.237.68.9 уходили на eth2.
Пробовал создавать
eth0:9 Link encap:Ethernet HWaddr 00:00:00:00:00:01
inet addr:83.237.68.9 Bcast:83.237.68.9 Mask:255.255.255.255
и добавлять в таблицу маршрутизации
Destination Gateway Genmask Flags Metric Ref Use Iface
83.237.68.9 192.168.0.1 255.255.255.255 UGH 0 0 0 eth2Эффект нулевой!!! tcpdump -i eth0:1 icmp видит пинг из Интернета и ответы на него, а на eth2 полная тишина, значит пакеты не маршрутизируются. Что я сделал не так?
Я не телепат.
И если я правильно Вас понял, то Вы хотите, что бы из интернета трафик для хоста 83.237.68.9 перенаправлялся в сеть (Вам нужно точно указать на какой хост) интерфейса eth2.
Это так? Распишите подробнее что вы хотите получить!!!!!!!!!PS: Мне кажется Вам стоит почитать man ifconfig (переводы в инете есть), man route, man {Ваш фаервол} на предмет прохода и проброса трафика в частности. Да и вообще... почитайте...
Извините, что невнятно обозначил задачу... Писал в час ночи когда голова уже не соображала. Попробую еще раз.
Есть роутер на база Fedora Core 3 с тремя сетевыми картами. От провайдера получена подсеть 83.237.68.0/26 со шлюзом на 83.237.68.1 Эта подсеть подключена на eth0 роутера. Вот настройки интерфейса eth0:
[root@router ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static
TYPE=Ethernet
DEVICE=eth0
MTU=""
NETMASK=255.255.255.192
BROADCAST=83.237.68.63
IPADDR=83.237.68.8
NETWORK=83.237.68.0
ONBOOT=yesВся эта подсеть с помощью SNAT iptables маршрутизируется на интерфейс eth1.
Вот настройки нитерфейса eth1:
[root@router ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
BOOTPROTO=static
TYPE=Ethernet
DEVICE=eth1
MTU=""
NETMASK=255.255.0.0
BROADCAST=10.0.255.255
IPADDR=10.0.0.1
NETWORK=10.0.0.0
ONBOOT=yesВот команда для NATинга:
iptables -t nat -A POSTROUTING -s 10.0.0.0/16 -o eth0 -j SNAT --to-source 83.237.68.8На роутере есть еще один интерфейс:
[root@router sysconfig]# cat /etc/sysconfig/network-scripts/ifcfg-eth2
BOOTPROTO=static
TYPE=Ethernet
DEVICE=eth2
MTU=""
NETMASK=255.255.255.252
BROADCAST=192.168.0.3
IPADDR=192.168.0.2
NETWORK=192.168.0.0
ONBOOT=yesК eth2 подключена машина с адресом 192.168.0.1
На рисунке это выглядит таким образом:
------------------------------ 10.0.0.0/16
83.237.69/26 | (10.0.0.1) eth1 o<--------------------->
(gw:83.237.69.1) <------------------->o eth0 (83.237.69.8) | 192.168.0.0/30
| (192.168.0.2) eth2 o<---------------------> (192.168.0.1)
------------------------------Необходимо, чтобы пакеты из Интернета приходящие на адрес 83.237.68.9 маршрутизировались с интерфейса eth0 на eth2 и приходили на машину с адресом 192.168.0.1 без изменений. Т.е. чтобы в заголовке пакета оставался адрес назначения 83.237.68.9
Не знаю на сколько внятно я описал задачу, но может быть кто-то сможет разобраться и подказать как это сделать.
а поставить вторую сетевую карточку в комп с 192.168.0.1?
>а поставить вторую сетевую карточку в комп с 192.168.0.1?
Она там и так стоит, просто я не указал это, чтобы облегчить схему и задачу. Кстати, именно на эту карточку потом и должен поступать пакет с адресом назначения 83.237.68.9. Просто пока это не существенно.
eth0 (83.237.69.8)
сделать alias eth0:1 83.237.69.9
и прописать правила для 83.237.69.9
?
Именно это я и сделал в первую очередь. Сначала создал alias eth0:1
[root@router etc]# ifconfig eth0:1 add 83.237.68.9 netmask 255.255.255.255
[root@router etc]# ifconfig eth0:1
eth0:1 Link encap:Ethernet HWaddr 00:00:00:00:00:01
inet addr:83.237.68.9 Bcast:83.237.68.9 Mask:255.255.255.255
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Затем прописал маршрут:
[root@router etc]# route add -host 83.237.68.9 gw 192.168.0.1
[root@router etc]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
83.237.68.9 192.168.0.1 255.255.255.255 UGH 0 0 0 eth2
192.168.0.0 * 255.255.255.252 U 0 0 0 eth2
83.237.68.0 * 255.255.255.192 U 0 0 0 eth0
10.0.0.0 * 255.255.0.0 U 0 0 0 eth1
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 83.237.68.1 0.0.0.0 UG 0 0 0 eth0Далее пингую 83.237.68.9 из Интернета и смотрю интерфейсы:
tcpdump -i eth0:1 Вижу и request и reply
tcpdump -i eth2 Не вижу вообще ничего
>Именно это я и сделал в первую очередь. Сначала создал alias eth0:1
>
>[root@router etc]# ifconfig eth0:1 add 83.237.68.9 netmask 255.255.255.255
>[root@router etc]# ifconfig eth0:1
>eth0:1 Link encap:Ethernet HWaddr 00:00:00:00:00:01
> inet addr:83.237.68.9
> Bcast:83.237.68.9 Mask:255.255.255.255
> UP BROADCAST
>RUNNING MULTICAST MTU:1500 Metric:1
>Затем прописал маршрут:
>[root@router etc]# route add -host 83.237.68.9 gw 192.168.0.1
>[root@router etc]# route
>Kernel IP routing table
>Destination Gateway
> Genmask
>Flags Metric Ref Use Iface
>83.237.68.9 192.168.0.1 255.255.255.255 UGH
> 0 0
> 0 eth2
>192.168.0.0 *
> 255.255.255.252 U
> 0 0
> 0 eth2
>83.237.68.0 *
> 255.255.255.192 U
> 0 0
> 0 eth0
>10.0.0.0 *
>
>255.255.0.0 U 0
> 0
> 0 eth1
>169.254.0.0 *
> 255.255.0.0
> U 0
> 0 0
>eth0
>default 83.237.68.1
> 0.0.0.0
>UG 0 0
> 0 eth0
>
>Далее пингую 83.237.68.9 из Интернета и смотрю интерфейсы:
>tcpdump -i eth0:1 Вижу и request и reply
>tcpdump -i eth2 Не вижу вообще ничего
я не большой спец, но imho вместо route, надо прописать правило SNAT
>я не большой спец, но imho вместо route, надо прописать правило SNAT
>
Думал об этом.
При SNAT мы подменяем ip-адрес источника, так что в данном случае скорее уж подошел бы DNAT. Но в этом случае мы теряем ip-адрес назначения и заменяем его на тот который подставим вместо него - не годится. Адрес назначения должен остаться неизменным!
>>я не большой спец, но imho вместо route, надо прописать правило SNAT
>>
>Думал об этом.
>При SNAT мы подменяем ip-адрес источника, так что в данном случае скорее
>уж подошел бы DNAT. Но в этом случае мы теряем ip-адрес
>назначения и заменяем его на тот который подставим вместо него -
>не годится. Адрес назначения должен остаться неизменным!
83.237.68.9 192.168.0.1 255.255.255.255 UGH 0 0 0 eth2
- это - в таблице main. но local просматривается до нее, а когда ты поднимаешь ip алиас в local появляется строчка для собственного ip которая рутит его в lo.
ip ro ls tab local в студию!
там должно быть что-то вроде
local 83.237.68.9 dev eth0 proto kernel scope host src 83.237.68.9
- ее надо удалить (ip ro del ... tab local) _после_ того, как создаешь ip-алиас.в таком раскладе шансы на успех есть, однако трогать local "ядерщики" настоятельно не рекомендуют. связано это с тем, что весь "высокоуровневый" сетевой софт предполагает вполне определенное поведение ядра по отношению к собственным адресам, в т.ч. то, что пакеты в dest которых собств. ip - никогда не форвардятся, такчто мало ли что после этого может заглючить - короче, "фирма не гарантирует", USE AT YOUR OWN RISK!!!
судя по всему дальше оно будет пофорваржено снова, в другую сетевушку на 192.168.0.1 так? тогда не проще ли туда его стунелировать? или, скажем, на инетовском рутере 83.237.68.9 DNAT to 10.250.1.9, а на 192.168.0.1 настроить 10.250.1.9 DNAT to 83.237.68.9?
короче, решить _изначальную_ задачу так, чтобы не было необходимости в такой у%.ищной маршрутизации?\^P^/