BenjaminYang In solitude, where we are least alone

iptables内网地外网之间访问

环境:一台带外网和内网的机器,另一台只有内网,默认不能上网。两台机器都是centos系统
带外网机器的外网ip为 123.221.20.11, 内网网关ip为 192.168.15.100
内网机器的内网ip为 192.168.15.101

设置方法很简单:

1. 在带外网的机器上设置iptables规则:

 iptables -t nat -A POSTROUTING -s 192.168.15.101 -j SNAT --to 123.221.20.11

// 如果想让整个内网的机器全部上网,只需要把 -s 192.168.15.101 换成
-s 192.168.15.0/255.255.255.0 即可

2. 在带带外网机器上打开转发

首先查看是否已经打开
sysctl -a |grep 'net.ipv4.ip_forward'
如果值为1,则说明已经打开,否则需要修改配置文件 /etc/sysctl.conf
打开该配置文件,找到该参数,使其变为
net.ipv4.ip_forward = 1
然后运行 sysctl -p

3. 在内网机器上,设置其网关为 192.168.15.100

vim  /etc/sysconfig/network-scripts/ifcfg-eth0 
添加 
GATEWAY=192.168.15.100
重启网络服务即可。 service network restart

4. 测试内网机器是否可以上网。

 

有两台机器,其中一台A 有内网和外网,B机器只有内网。
想达到的目的: 通过A机器的外网去访问B机器的ftp(21)
环境: 
A机器外网IP为  123.234.12.22(eth1)  内网IP为 192.168.10.20 (eth0)
B机器内网为 192.168.10.21

实现方法:

1.  让你的linux支持ftp的端口转发

modprobe ip_nat_ftp ###加载ip_nat_ftp模块(若没有编译进内核),以使ftp能被正确NAT 
modprobe ip_conntrack_ftp ###加载ip_conntrack_ftp模块

2.  在A机器上打开端口转发功能

vi  /etc/sysctl.conf
使 net.ipv4.ip_forward = 1
sysctl -p

3.  在A机器上创建iptables规则

iptables -t nat -I PREROUTING -d 123.234.12.22   -p tcp --dport 21 -j DNAT --to 192.168.10.21:21  (把访问外网21端口的包转发到内网ftp服务器)
iptables -t nat -I POSTROUTING -d 192.168.10.21 -p tcp --dport 21 -j SNAT --to 192.168.10.20 (把到内网ftp服务器的包回源到内网网卡上,不然包只能转到ftp服务器,而返回的包不能到达客户端)

posted @ 2018-08-03 13:38  benjamin杨  阅读(1922)  评论(0编辑  收藏  举报