所以我明白您需要先允许连接(对吗?)
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8443 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
然后您需要设置重定向(对吗?)
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 8443
然后还允许从 8443 传出的响应转到 443(对吗?)
iptables -t nat -I OUTPUT -p tcp --dport 443 -j REDIRECT --to-ports 8443
我的情况:我本地有一个使用 8443 的应用程序服务器,但我希望所有流量都使用标准端口进行连接。我在使用我的安全 http 端口的服务时遇到了问题
ie. https://mywebsite.com **NOT** https://mywebsite.com/8443
问题:我不确定我的 iptalbes 规则是否正确
答案1
mangle-用 dport 443 标记所有传入数据包(第二个 iptables 链)
-A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j MARK --set-xmark 0x64/0xffffffff
nat-更改市场数据包的目标端口(第三个 iptables 链)
-A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -m mark --mark 0x64 -j DNAT --to-destination :8443
过滤器-接受具有新 dport 的标记数据包(第五个 iptables 链)
-A INPUT -i eth0 -p tcp -m conntrack --ctstate NEW -m tcp --dport 8443 -m mark --mark 0x64 -j ACCEPT
在旧系统上,使用-m state --state
而不是-m conntrack --ctstate
:
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 8443 -m mark --mark 0x64 -j ACCEPT
这是最有效的方式,这是 RH 实用程序默认进行本地重定向的方式。
答案2
我们正在为在 tomcat 中运行的应用程序做类似的事情。不确定 OUTPUT 语句。我们不使用它...另外...您的 nat PREROUTING 语句有拼写错误?
-bash-4.1$ sudo iptables-save
# Generated by iptables-save v1.4.7 on Thu Sep 19 12:31:52 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [623016:133354762]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8044 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Thu Sep 19 12:31:52 2013
# Generated by iptables-save v1.4.7 on Thu Sep 19 12:31:52 2013
*nat
:PREROUTING ACCEPT [116:5915]
:INPUT ACCEPT [2533:132017]
:OUTPUT ACCEPT [87137:6439722]
:POSTROUTING ACCEPT [87137:6439722]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
COMMIT
# Completed on Thu Sep 19 12:31:52 2013