我一直在网上搜索一个答案早上,但我不能得到它的工作。如果你能帮助我,我将不胜感激。iptables转发端口通过两个eth卡
我的设置: 服务器: 的eth1:192.168.6.2(连接到互联网 - > WAN) 为eth0:192.168.0.1(LAN)
本地计算机: 运行在端口8848服务工作IP号192.168.0.3
一切都紧闭使用iptables,使人们在建设不能访问本地局域网(192.168.0)和LAN通过eth1的使用互联网:
### Set Variables
IPTABLES='/sbin/iptables -v'
WAN='eth1'
LAN='eth0'
#EXTERNAL_INTERFACE=WAN
#EXTERNAL_IP=WAN_IP
WAN_IP=$(ifconfig $WAN | grep 'inet[^6]' | sed 's/[a-zA-Z:]//g' | awk '{print $1}')
LAN_IP=$(ifconfig $LAN | grep 'inet[^6]' | sed 's/[a-zA-Z:]//g' | awk '{print $1}')
echo '########################################################## NAT config WAN <=> LAN #'
$IPTABLES -t nat --append POSTROUTING --out-interface $WAN --jump MASQUERADE
$IPTABLES --append FORWARD --in-interface $WAN --out-interface $LAN -m state --state RELATED,ESTABLISHED --jump ACCEPT
$IPTABLES --append FORWARD --in-interface $LAN --out-interface $WAN --jump ACCEPT
echo '############################### Allow unlimited traffic on the loopback interface #'
$IPTABLES --append INPUT --in-interface lo --jump ACCEPT
$IPTABLES --append OUTPUT --out-interface lo --jump ACCEPT
$IPTABLES --append INPUT --in-interface $LAN --jump ACCEPT
$IPTABLES --append OUTPUT --out-interface $LAN --jump ACCEPT
echo '################################################ Allow unlimited outbound traffiC#'
# Previously initiated and accepted exchanges bypass rule checking
$IPTABLES --append INPUT -m state --state ESTABLISHED,RELATED --jump ACCEPT
$IPTABLES --append OUTPUT -m state --state NEW,ESTABLISHED,RELATED --jump ACCEPT
服务器(局域网192.168.0.1和广域网192.168.6.2)运行Apache,为广域网打开一个工作正常(测试),我可以访问通过192.168.6范围内的IP号码连接到192.168.6.2的网站。 X:
$IPTABLES --append INPUT --proto tcp --source 0/0 --dport 80 -m state --state NEW --jump ACCEPT
所以我开了8848端口第一:
$IPTABLES --append INPUT --proto tcp --source 0/0 --dport 8848 -m state --state NEW --jump ACCEPT
然后我被卡住。我已经尝试了一切,但我不能找到访问端口8848的服务解决方案在192.168.0.3上通过192.168.6.2(包含FORWARD,PREROUTING,POSTROUTING,MASQUERADE,DNAT NAT的命令)
你能帮我吗?
[编辑] 完成整个bash脚本,设置LAN和WAN可变我干净了之后:
echo '####################################################################### clear all #'
$IPTABLES --flush
$IPTABLES --delete-chain
for TABLE in filter nat mangle; do
$IPTABLES --table $TABLE --flush # delete the table's rules
$IPTABLES --table $TABLE --delete-chain # delete the table's chains
$IPTABLES --table $TABLE --zero # zero the table's counters
done
我结束我的bash脚本:
echo '############################################################ Set default policies #'
$IPTABLES --policy INPUT DROP
$IPTABLES --policy OUTPUT DROP
$IPTABLES --policy FORWARD ACCEPT
echo '########################### Have these rules take effect when iptables is started #'
/sbin/service iptables save
/sbin/service iptables restart`
[ANSWER/SOLUTION]
感谢this page我已经finaly了它强劲的工作:
echo '################################################################# Port forwarding #'
FROM_PORT='8848'
TO_PORT='8848'
TO_IP='192.168.0.3'
$IPTABLES -t nat -A PREROUTING -p tcp -d $WAN_IP --dport $FROM_PORT -j DNAT --to-destination $TO_IP:$TO_PORT
$IPTABLES -t nat -A POSTROUTING -p tcp -d $TO_IP --dport $TO_PORT -j SNAT --to-source $WAN_IP
谢谢@Copche回答,我试过这个,没有快乐。 也localy(192.168.0.x)我可以通过以下网址看到服务:https://192.168.0.3:8848/ –
但你让我想起了别的东西!我测试了是否可以通过LAN中的其他计算机连接到192.168.0.3:8848,结论是Windows防火墙阻止了外部连接!谢谢,它现在可以工作,只需你一行! –
如果你能告诉我如何做同样的事情,也可以从其他端口(可以说是5432 WAN)到8848 LAN –