2017-02-08 16 views
-3

У меня есть сервер в облаке со следующими iptables.Перенаправление с использованием iptables

iptables -A INPUT -i lo -j ACCEPT 
iptables -A INPUT -p tcp --dport 80 -j ACCEPT 
iptables -A INPUT -p tcp --dport 443 -j ACCEPT 
iptables -A INPUT -j DROP 

iptables -A OUTPUT -o lo -j ACCEPT 
iptables -A OUTPUT -p tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -p tcp --sport 443 -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -p tcp --sport 9200 -m state --state New,RELATED,ESTABLISHED -j ACCEPT 
iptables -A OUTPUT -j DROP 

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2900 -j DNAT --to-destination 127.0.0.1:9200 

Что мне нужно добавить в другие цепи, чтобы я мог получить доступ к моему сервису на порте 2900.

ответ

1

Правила применяются сверху вниз.

6,2 Destination NAT

Это делается в PREROUTING цепи, подобно тому, как приходит пакет; это означает, что все остальное на самом (маршрутизация, фильтрация пакетов) поле Linux увидит пакет собирается его `реальной» назначения

Так что вы хотите PREROUTING линию на сверху, поэтому NAT происходит первым.

Затем запись INPUT, разрешающая входящие соединения на вашем порту назначения после NAT.

Кроме того, что происходит с правилами INPUT, не принимающими RELATED и ESTABLISHED, а ваши правила вывода устанавливают определенные исходные порты? Исходящий трафик обычно поступает из случайных высоких портов.

От https://serverfault.com/a/578781/57144 и https://serverfault.com/a/578787/57144 вы хотите явно указать новые соединения для входящих портов и должны предпочесть меньше правил для производительности (если применимо).

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2900 -j DNAT --to-destination 127.0.0.1:9200 

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A INPUT -i lo -j ACCEPT 
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT 
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 9200 -j ACCEPT 

# or 
# iptables -A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 80,443,9200 -j ACCEPT 

iptables -A INPUT -j DROP 
+0

Thanks TessellatingHeckler. – Goforseeking