Добрый день. Прошу помощи в поиске проблемы.
Есть два провайдера и локальная сеть. Клиенты локальной сети ходят в интернет через основного провайдера с толстым каналом, но динамическим IP. Необходимо пробросить порт 3389 на сервер локальной сети через резервного провайдера, на котором статический IP.
Исходные данные: Centos6.4
#uname -a
Linux border 2.6.33.2 #1 SMP Sun May 19 20:44:41 MSK 2013 x86_64 x86_64 x86_64 GNU/LinuxРезервный канал:
#cat ifcfg-eth0
IPADDR=1.2.3.4
PREFIX=23
GATEWAY=1.2.3.1Локальная сеть:
# cat ifcfg-eth1
IPADDR=192.168.68.1
NETMASK=255.255.255.0Основной канал:
# cat ifcfg-eth2
IPADDR=192.168.67.4
NETMASK=255.255.255.0
GATEWAY=192.168.67.1Правила маршрутизации:
# cat /etc/iproute2/rt_tables | grep T
10 T1 # eth0
12 T2 # eth2# ip rule
0: from all lookup local
32763: from all fwmark 0xa lookup T1
32764: from 192.168.67.4 lookup T2
32765: from 1.2.3.4 lookup T1
32766: from all lookup main
32767: from all lookup default# ip route
192.168.68.0/24 dev eth1 proto kernel scope link src 192.168.68.1
192.168.67.0/24 dev eth2 proto kernel scope link src 192.168.67.4
1.2.3.0/23 dev eth0 proto kernel scope link src 1.2.3.4
169.254.0.0/16 dev eth0 scope link metric 1002
169.254.0.0/16 dev eth1 scope link metric 1003
169.254.0.0/16 dev eth2 scope link metric 1004
default via 192.168.67.1 dev eth2# ip route show table T1
192.168.68.0/24 dev eth1 scope link src 192.168.68.1
192.168.67.0/24 dev eth2 scope link src 192.168.67.4
1.2.3.0/23 dev eth0 scope link src 1.2.3.4
127.0.0.0/8 dev lo scope link
default via 1.2.3.1 dev eth0# ip route show table T2
192.168.68.0/24 dev eth1 scope link src 192.168.68.1
192.168.67.0/24 dev eth2 scope link src 192.168.67.4
1.2.3.0/23 dev eth0 scope link src 1.2.3.4
127.0.0.0/8 dev lo scope link
default via 192.168.67.1 dev eth2# Конфиг iptables:
# iptables -L -vnt mangle
Chain PREROUTING (policy ACCEPT 63923 packets, 8941K bytes)
pkts bytes target prot opt in out source destination
6982 2664K MARK tcp -- eth1 * 192.168.68.2 0.0.0.0/0 tcp spt:3389 MARK set 0xa# iptables -L -vnt nat
Chain PREROUTING (policy ACCEPT 9844 packets, 1013K bytes)
pkts bytes target prot opt in out source destination
11 560 DNAT tcp -- * * 0.0.0.0/0 1.2.3.4 tcp dpt:3389 /* RDP */to:192.168.68.2:3389Chain POSTROUTING (policy ACCEPT 2 packets, 104 bytes)
pkts bytes target prot opt in out source destination
7484 891K SNAT all -- * eth0 0.0.0.0/0 0.0.0.0/0 to:1.2.3.4
12433 1567K SNAT all -- * eth2 0.0.0.0/0 0.0.0.0/0 to:192.168.67.4# iptables -vnt filter -L FORWARD
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
5 260 ACCEPT tcp -- * * 0.0.0.0/0 192.168.68.2 tcp dpt:3389tcpdump видит пакеты падающие на внешний интерфейс eth0, но до eth1 они не доходят.
Собственно вопрос, где поправить, чтоб заработало или хотя бы в какую сторону копать?
http://sys-adm.org.ua/net/smart-dnatработает без нареканий
> http://sys-adm.org.ua/net/smart-dnat
> работает без нареканийнеужели без нареканий? ДНС что выдаст? x.x.x.x или y.y.y.y? давайте с этого начнем.
>> http://sys-adm.org.ua/net/smart-dnat
>> работает без нареканий
> неужели без нареканий? ДНС что выдаст? x.x.x.x или y.y.y.y? давайте с этого
> начнем.Какой ДНС? ТС вроде RDP нужно пробросить
>>> http://sys-adm.org.ua/net/smart-dnat
>>> работает без нареканий
>> неужели без нареканий? ДНС что выдаст? x.x.x.x или y.y.y.y? давайте с этого
>> начнем.
> Какой ДНС? ТС вроде RDP нужно проброситьестественно ДНС обслуживающий зону.
ИМХО проброс порта с внешнего IP на внутренний явно проблем не представляет.
>>>> http://sys-adm.org.ua/net/smart-dnat
>>>> работает без нареканий
>>> неужели без нареканий? ДНС что выдаст? x.x.x.x или y.y.y.y? давайте с этого
>>> начнем.
>> Какой ДНС? ТС вроде RDP нужно пробросить
> естественно ДНС обслуживающий зону.какую зону? Кто то из нас пьяный :D
> ИМХО проброс порта с внешнего IP на внутренний явно проблем не представляет.
так можно сказать о чем угодно
> http://sys-adm.org.ua/net/smart-dnat
> работает без нареканийк сожалению тоже самое, пакет проходит цепочки PREROUTING mangle и nat и пропадает на этапе принятия решения о маршрутизации.
>> http://sys-adm.org.ua/net/smart-dnat
>> работает без нареканий
> к сожалению тоже самое, пакет проходит цепочки PREROUTING mangle и nat и
> пропадает на этапе принятия решения о маршрутизации.нашел проблему
если кому интересно, схема заработала после выполнения скрипта
for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do
echo 0 > $i
doneALex_hha спасибо за линк, натолкнул на решение :)
>>> http://sys-adm.org.ua/net/smart-dnat
>>> работает без нареканий
>> к сожалению тоже самое, пакет проходит цепочки PREROUTING mangle и nat и
>> пропадает на этапе принятия решения о маршрутизации.
> нашел проблему
> если кому интересно, схема заработала после выполнения скрипта
> for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do
> echo 0 > $i
> done
> ALex_hha спасибо за линк, натолкнул на решение :)Я этот момент специально выделил в статье ;)
>> for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do
>> echo 0 > $i
>> done
>> ALex_hha спасибо за линк, натолкнул на решение :)
> Я этот момент специально выделил в статье ;)ИМХО хреновое решение.
>>> for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do
>>> echo 0 > $i
>>> done
>>> ALex_hha спасибо за линк, натолкнул на решение :)
>> Я этот момент специально выделил в статье ;)
> ИМХО хреновое решение.есть альтернатива?
> # iptables -vnt filter -L FORWARD
> Chain FORWARD (policy DROP 0 packets, 0 bytes)
> pkts bytes target prot opt in out source destination
> 5 260 ACCEPT tcp -- * * 0.0.0.0/0 192.168.68.2 tcp dpt:3389Сдаётся мне, что Ваша проблема здесь - вы разрешили проброс пакетов внутрь, но не наружу. Нужно ещё одно правило - для исходящего трафика. Или универсальное с "-m state --state RELATED,ESTABLISHED -j ACCEPT" первым в цепочке.
> tcpdump видит пакеты падающие на внешний интерфейс eth0, но до eth1 они не доходят.
А вот это уже странно... Вроде бы ничего не мешает.
>> # iptables -vnt filter -L FORWARD
>> Chain FORWARD (policy DROP 0 packets, 0 bytes)
>> pkts bytes target prot opt in out source destination
>> 5 260 ACCEPT tcp -- * * 0.0.0.0/0 192.168.68.2 tcp dpt:3389
> Сдаётся мне, что Ваша проблема здесь - вы разрешили проброс пакетов внутрь,
> но не наружу. Нужно ещё одно правило - для исходящего трафика.
> Или универсальное с "-m state --state RELATED,ESTABLISHED -j ACCEPT" первым в
> цепочке.
>> tcpdump видит пакеты падающие на внешний интерфейс eth0, но до eth1 они не доходят.
> А вот это уже странно... Вроде бы ничего не мешает.Не-не-не. Понятно, что это правило есть, просто не указано, т.к. не имеет смысловой нагрузки.