通过iptables实现外网端口映射内网程序访问

通过iptables实现外网端口映射内网程序访问

 

目的:
内网有一台oracle数据库,每次对oracle数据库操作不得不先进入外网机,然后从外网机跳入内网机进行oracle数据库的操作,针对于一些数据库管理软件也无法直接进行连接使用,现在使用iptables解决此问题。

案例
两台服务器AB,Oracle数据库安装在服务器B中,端口1521
服务器A 外网地址:122.56.122.18 内网地址:192.168.1.110
服务器B 内网地址:192.168.1.115

要求
通过TCP协议外网映射端口51521映射到内网服务器B中1521端口中,实现端口转发功能

步骤

1. 停止iptables服务,清除已有规则

/etc/init.d/iptables stop
# 清除iptables已有规则
iptables -F  
iptables -X 
iptables -Z

 

2. 编辑/etc/sysctl.conf文件,开启iptables转发(FORWARD)功能(默认是没有开启的)

vi /etc/sysctl.conf
net.ipv4.ip_forward = 1 # 默认是0
 

3、使配置立即生效

# 或者执行命令 "echo 1 > /proc/sys/net/ipv4/ip_forward" 使其立即生效,注意这样操作服务器重启后需要重写配置
sysctl -p

4. 加入路由规则

iptables -t nat -A PREROUTING --dst 122.56.122.18 -p tcp --dport 51521 -j DNAT --to-destination 192.168.1.115:1521
iptables -t nat -A POSTROUTING --dst 192.168.1.115 -p tcp --dport 1521 -j SNAT --to-source 192.168.1.110
iptables -A FORWARD -o eth0 -d 192.168.1.115 -p tcp --dport 1521 -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.1.115 -p tcp --sport 1521 -j ACCEPT

 

5. 路由规则写入路由表

/etc/init.d/iptables save

 

6. 启动iptables服务,配置完成

/etc/init.d/iptables start

 

举一反三:使用unix中的iptables可以实现类似于路由器的端口转发,如果需要本机端口映射本机端口的配置应该如何写,下面规则实现本机端口80端口转发到本机8080端口,本机443端口转发到本机8443端口,应该是
iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-port 8080
iptables -t nat -A PREROUTING -p tcp –dport 443 -j REDIRECT –to-port 8443

 

添加服务器端口白名单:

 iptables -A INPUT  -p tcp --sport 443 -j ACCEPT
 iptables -A OUTPUT  -p tcp --dport 443 -j ACCEPT

 

猜你喜欢

转载自jatter.iteye.com/blog/2334100