Я надеюсь, что здесь есть что-то очевидное, что я упустил. У меня есть правила NAT, настроенные для переадресации нескольких разных портов на внутреннюю машину. Когда приходит запрос из Интернета, все работает по плану.
Однако, если я попадаю на свой внешний IP-адрес изнутри сети с тем же портом, запрос завершается на компьютере с брандмауэром, а не перенаправляется в нужное место.
Есть ли что-то очевидное, что я делаю не так? Сгенерированные правила iptables приведены ниже.
# Generated by iptables-save v1.4.4 on Wed Sep 7 20:36:37 2011
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:Cid4488E49C.0 - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 10.0.0.11/32 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i lo -m state --state NEW -j ACCEPT
-A INPUT -s XXX.XXX.XXX.XXX/32 -m state --state NEW -j ACCEPT
-A INPUT -s 10.0.0.1/32 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp -m multiport --dports 5050,22,5900 -m state --state NEW -j ACCEPT
-A INPUT -p udp -m udp --dport 67 -m state --state NEW -j ACCEPT
-A INPUT -s 10.0.0.0/24 -m state --state NEW -j ACCEPT
-A INPUT -j DROP
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 10.0.0.11/32 -p tcp -m tcp --dport 5900 -m state --state NEW -j ACCEPT
-A FORWARD -d 10.0.0.10/32 -p tcp -m tcp --dport 5050 -m state --state NEW -j ACCEPT
-A FORWARD -s 10.0.0.0/24 -m state --state NEW -j ACCEPT
-A FORWARD -j DROP
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -d 10.0.0.11/32 -p tcp -m tcp --sport 22 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -m state --state NEW -j ACCEPT
-A OUTPUT -m state --state NEW -j ACCEPT
-A OUTPUT -p tcp -m tcp -m multiport --dports 5050,22,5900 -m state --state NEW -j Cid4488E49C.0
-A OUTPUT -p udp -m udp --dport 67 -m state --state NEW -j Cid4488E49C.0
-A OUTPUT -d 10.0.0.11/32 -p tcp -m tcp --dport 5900 -m state --state NEW -j ACCEPT
-A OUTPUT -d 10.0.0.10/32 -p tcp -m tcp --dport 5050 -m state --state NEW -j ACCEPT
-A OUTPUT -s 10.0.0.0/24 -m state --state NEW -j ACCEPT
-A OUTPUT -j DROP
-A Cid4488E49C.0 -d XXX.XXX.XXX.XXX/32 -j ACCEPT
-A Cid4488E49C.0 -d 10.0.0.1/32 -j ACCEPT
COMMIT
# Completed on Wed Sep 7 20:36:37 2011
# Generated by iptables-save v1.4.4 on Wed Sep 7 20:36:37 2011
*nat
:PREROUTING ACCEPT [114:15633]
:POSTROUTING ACCEPT [1:48]
:OUTPUT ACCEPT [1:48]
-A PREROUTING -d XXX.XXX.XXX.XXX/32 -p tcp -m tcp --dport 5050 -j DNAT --to-destination 10.0.0.10:5050
-A PREROUTING -d XXX.XXX.XXX.XXX/32 -p tcp -m tcp --dport 5900 -j DNAT --to-destination 10.0.0.11:5900
-A POSTROUTING -s 10.0.0.0/24 -o eth1 -j MASQUERADE
-A OUTPUT -d XXX.XXX.XXX.XXX/32 -p tcp -m tcp --dport 5050 -j DNAT --to-destination 10.0.0.10:5050
-A OUTPUT -d XXX.XXX.XXX.XXX/32 -p tcp -m tcp --dport 5900 -j DNAT --to-destination 10.0.0.11:5900
COMMIT
# Completed on Wed Sep 7 20:36:37 2011
Если вы подключаетесь к серверу 10.0.0.10 с другого компьютера в сети 10.0.0.0/24, может возникнуть проблема с маршрутизацией пакетов. Например, если ваш источник - 10.0.0.99 и вы подключаетесь к 10.0.0.10 через общедоступный IP-адрес, ответные пакеты с сервера 10.0.0.10 будут отправлены непосредственно на 10.0.0.99, который их отбросит, поскольку у него нет полуоткрытое соединение с 10.0.0.10 (полуоткрытое соединение с публичным IP).
Одно из возможных решений - двойной NAT. Вот пример:
http://www.fwbuilder.org/4.0/docs/users_guide5/double_nat.html
Кстати, лучше всего получить поддержку fwbuilder в списке рассылки fwbuilder или на форуме для обсуждения на SF.
http://sourceforge.net/projects/fwbuilder/forums/forum/16372
https://lists.sourceforge.net/lists/listinfo/fwbuilder-discussion
Если он открыт для всего мира и вы можете получить доступ к серверу через его внутренний IP-адрес, я не вижу проблем. Если вы действительно хотите получить к нему доступ с внешнего IP-адреса изнутри, я бы попросил показать копию журнала ошибок или журнала доступа через NAT. Возможно, вы также находитесь за прокси-сервером или вторым IP-адресом, где ваша цитата внешнего endquote iP отличается от такового для NAT? Надеюсь, мы сможем это решить.