Редирект порта для alias-интерфейса

openSUSE, SUSE Linux Enterprise

Модератор: Модераторы разделов

Аватара пользователя
IL-84
Сообщения: 133
ОС: openSUSE 11.2, KDE 4.4.0

Редирект порта для alias-интерфейса

Сообщение IL-84 »

Добрый день.

Есть сервер с одной сетевой картой. Для интерфейса eth0 задан дополнительный IP-адрес.

Код: Выделить всё

eth0      Link encap:Ethernet  HWaddr 00:50:56:89:0E:19
          inet addr:192.168.0.53  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1771692 errors:0 dropped:590 overruns:0 frame:0
          TX packets:2001039 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:223554228 (213.1 Mb)  TX bytes:353507305 (337.1 Mb)

eth0:FWIC Link encap:Ethernet  HWaddr 00:50:56:89:0E:19
          inet addr:192.168.0.44  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1


На alias'e висит сервис:

Код: Выделить всё

tcp        0      0 192.168.0.44:7443       0.0.0.0:*               LISTEN      5105/java


Мне нужно сделать редирект с 192.168.0.44:443 на 192.168.0.44:7443 - потому что сервис не может слушать 443й порт, т.к. запущен не от рута. Для чего задаю редирект в SuSEfirewall2:

Код: Выделить всё

FW_REDIRECT="0/0,192.168.0.44/32,tcp,443,7443"


Проблема в том что редирект идет на IP-адрес, указанный для интерфейса eth0 (192.168.0.53)

Код: Выделить всё

Oct 16 11:32:01 weblogic-ict kernel: [1531225.352073] SFW2-INext-ACC-REDIR IN=eth0 OUT= MAC=00:50:56:89:0e:19:00:13:80:95:88:c2:08:00 SRC=10.0.1.5 DST=192.168.0.53 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=23720 DF PROTO=TCP SPT=3174 DPT=7443 WINDOW=65535 RES=0x00 SYN URGP=0 OPT (020405B401010402) MARK=0x1
Oct 16 11:32:01 weblogic-ict kernel: [1531225.819100] SFW2-INext-ACC-REDIR IN=eth0 OUT= MAC=00:50:56:89:0e:19:00:13:80:95:88:c2:08:00 SRC=10.0.1.5 DST=192.168.0.53 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=23785 DF PROTO=TCP SPT=3174 DPT=7443 WINDOW=65535 RES=0x00 SYN URGP=0 OPT (020405B401010402) MARK=0x1
Oct 16 11:32:02 weblogic-ict kernel: [1531226.255341] SFW2-INext-ACC-REDIR IN=eth0 OUT= MAC=00:50:56:89:0e:19:00:13:80:95:88:c2:08:00 SRC=10.0.1.5 DST=192.168.0.53 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=24003 DF PROTO=TCP SPT=3174 DPT=7443 WINDOW=65535 RES=0x00 SYN URGP=0 OPT (020405B401010402) MARK=0x1
Oct 16 11:32:05 weblogic-ict kernel: [1531229.835464] SFW2-INext-ACC-REDIR IN=eth0 OUT= MAC=00:50:56:89:0e:19:00:13:80:95:88:c2:08:00 SRC=10.0.1.5 DST=192.168.0.53 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=25195 DF PROTO=TCP SPT=3232 DPT=7443 WINDOW=65535 RES=0x00 SYN URGP=0 OPT (020405B401010402) MARK=0x1
Oct 16 11:32:06 weblogic-ict kernel: [1531230.291285] SFW2-INext-ACC-REDIR IN=eth0 OUT= MAC=00:50:56:89:0e:19:00:13:80:95:88:c2:08:00 SRC=10.0.1.5 DST=192.168.0.53 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=25285 DF PROTO=TCP SPT=3232 DPT=7443 WINDOW=65535 RES=0x00 SYN URGP=0 OPT (020405B401010402) MARK=0x


Как быть? Смущает еще комментарий в конфиге:

Код: Выделить всё

#
# Note: alias interfaces (like eth0:1) are ignored
#
FW_DEV_EXT='any eth0'
Спасибо сказали:
Аватара пользователя
Stauffenberg
Сообщения: 2041
Статус: ☮ PEACE ☮
ОС: открытая и свободная

Re: Редирект порта для alias-интерфейса

Сообщение Stauffenberg »

А что за 10.0.1.5?

Код: Выделить всё

SRC=10.0.1.5 DST=192.168.0.53

Labor omnia vincit

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
Спасибо сказали:
Аватара пользователя
IL-84
Сообщения: 133
ОС: openSUSE 11.2, KDE 4.4.0

Re: Редирект порта для alias-интерфейса

Сообщение IL-84 »

10.0.1.5 - это сервер мониторинга, который проверяет жив ли сервис на 443м порту. Но главное в том, что redirect не работает и соединиться не получается c любого ip.

Я протестировал redirect на сервере, где только один IP адрес и там все работает. Дело, как мне кажется, в alias'e.
Спасибо сказали:
Аватара пользователя
IL-84
Сообщения: 133
ОС: openSUSE 11.2, KDE 4.4.0

Re: Редирект порта для alias-интерфейса

Сообщение IL-84 »

Разобрался в чем было дело. В мане iptables написано:

REDIRECT
This target is only valid in the nat table, in the PREROUTING and OUTPUT
chains, and user-defined chains which are only called from those
chains. It redirects the packet to the machine itself by changing the
destination IP to the primary address of the incoming interface


Т.е. редирект возможет только для основного IP адреса. В моем случае я сделал так:


Код: Выделить всё

FW_ROUTE="yes"
FW_MASQUERADE="yes"
FW_FORWARD_MASQ="0/0,192.168.0.44,tcp,443,7443,192.168.0.44"


И открыл в файрволе порт 7443, и все заработало.
Спасибо сказали:
Аватара пользователя
IL-84
Сообщения: 133
ОС: openSUSE 11.2, KDE 4.4.0

Re: Редирект порта для alias-интерфейса

Сообщение IL-84 »

Еще одно замечание: локальные вызовы не используют цепочку PREROUTING, поэтому описанный выше способ форвардинга не работает. Для локальных вызовов нужно сделать так:

1) Очистить таблицу iptables raw - т.к. по умолчанию локальные пакеты не обрабатываются файрволом (NOTRACK)
2) Добавить перенаправление для исходящих пакетов

/etc/sysconfig/scripts/SuSEfirewall2-custom

Код: Выделить всё

...

fw_custom_before_antispoofing() {
    # clear NOTRACK option for lo interface
    # вручную очищаем таблицу raw, т.к. в SLES11/SuSEfirewall2 нет настройки FW_LO_NOTRACK="no"
    iptables -t raw -F
}

...

fw_custom_before_masq() { # could also be named "after_port_handling()"
...
    # перенаправление порта 443 -> 7443 для исходящих пакетов
    iptables -t nat -A OUTPUT -d 192.168.0.44/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.0.44:7443
...
}
Спасибо сказали: