请教同一网段下两台redhat 9端口转发问题?
我公司的两台redhat 9 Linux 服务器在公网的同一网段内,子网掩码,网关都相同。(IPa、IPb)目前需要把IPa的80端口映射到IPb的18000上,IPb的18000是tomcat服务的端口,我用iptable做了在IPa上做了设置:
/sbin/iptables -t nat -A PREROUTING -p tcp -d IPa --dport 80 -i eth0 -j DNAT --to IPb:18000
我用telnet和直接用浏览器访问,用netstat -an看到在IPb上有连接,但是连接状态总是SYN_RECV
而且打不开tomcat的页面。
希望有经验的朋友帮忙想想办法!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
非常感谢楼上2位的回复,我刚接触iptable,使用的很不熟练,这个脚本也是照着别人在其它机器上做过的配置写的,进行了一点修改而已。还希望能告诉我,正确完整的教本配置。或是其它什么比较简便快捷的配置方法。谢谢!!
-A POSTROUTING -s *.*.70.0/255.255.255.0 -o eth0 -j SNAT --to-source IPa
楼上答得非常好
问题出在SNAT上
不可以这样用,因为封包过去就回不来了。
其中主要原因是,client --> a --> b 这样流程来看,iptables 该语法把封包丢给 b 时,b 看到的 ip 封包来源是 client,但是 b 的 default gw 不是 a,所以封包不会通过 a 回覆回去,封包传输回应就失败了。
正确方式有很多作法,比方一般的 http proxy 代理的服务达成需求,或者是纯 tcp proxy 也可以。
若你只是要使用 iptables 的话,可以再搭配 SNAT 来伪装 ip。
[/code]iptables -t nat -A POSROUTING -d IPb -j MASQUERADE[/code]
==
==
这个是执行的教本中的全部内容
#!/bin/sh
#open kell's forward
echo 1 > /proc/sys/net/ipv4/ip_forward
#load modules for iptable
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe ip_tables
modprobe iptable_filter
modprobe ipt_limit
modprobe ipt_state
echo "Starting iptables rules..."
#delete old ruler chain
/sbin/iptables -F INPUT
/sbin/iptables -F FORWARD
/sbin/iptables -F OUTPUT
/sbin/iptables -F PREROUTING -t nat
/sbin/iptables -F POSTROUTING -t nat
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -s *.*.*.224/27 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -A FORWARD -o eth0 -j ACCEPT
iptables -A FORWARD -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -s 0/0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s *.*.*.0/24 -j SNAT --to IPa
#gcb
/sbin/iptables -t nat -A PREROUTING -p tcp -d IPa --dport 80 -i eth0 -j DNAT --to IPb:18000
[root@localhost ~]# iptables-save
# Generated by iptables-save v1.2.11 on Mon Oct 30 15:23:46 2006
*filter
:INPUT ACCEPT [2121:696166]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6383:813856]
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.0.0/255.255.255.0 -j ACCEPT
-A FORWARD -s *.*.70.224/255.255.255.224 -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -o eth1 -j ACCEPT
-A FORWARD -i eth0 -j ACCEPT
-A FORWARD -o eth0 -j ACCEPT
-A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Mon Oct 30 15:23:46 2006
# Generated by iptables-save v1.2.11 on Mon Oct 30 15:23:46 2006
*nat
REROUTING ACCEPT [10998:1160395]
OSTROUTING ACCEPT [3727:223048]
:OUTPUT ACCEPT [10771:649935]
-A PREROUTING -d IPa -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination IPb:18000
-A POSTROUTING -s *.*.70.0/255.255.255.0 -o eth0 -j SNAT --to-source IPa
COMMIT
# Completed on Mon Oct 30 15:23:46 2006
[ 本帖最后由 wang_yilun 于 2006-10-30 15:33 编辑 ]
iptables-save出来看一下