部署环境:
[root@miner_k html]# cat /etc/redhat-release
CentOS release 6.5 (Final)
网络架构:
服务器A:(linux)—【NAT】
eth0:192.168.6.181/24 (能连接到互联网上)
服务器B:(Linux)
eth0:192.168.6.94/24
服务器C:(windows)
网卡1:192.168.6.6/24
SNAT的设置
在服务器A上的配置:
开启路由转发
临时开启:
[root@miner_k ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
永久开启:
[root@miner_k ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 [root@miner_k ~]# sysctl -p net.ipv4.ip_forward = 1
防火墙配置:
[root@miner_k ~]# iptables -t nat -I POSTROUTING -s 192.168.6.0/24 -j MASQUERADE 或者: [root@miner_k ~]# iptables -t nat -I POSTROUTING -s 192.168.6.0/24 -j SNAT --to-source 192.168.6.181 或者可以指定特定的IP访问特定的网卡 [root@miner_k ~]# iptables -t nat -I POSTROUTING -s 192.168.6.32/32 -j SNAT --to-source 192.168.6.181
查看防火墙上是否开启路由转发
[root@snat ~]# iptables-save # Generated by iptables-save v1.4.7 on Sun Dec 17 20:22:38 2017 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [18979:1833160] ....... 省略 -A FORWARD -j ACCEPT
如果没有开启forward或者是直接拒绝了需要增加一下规则
[root@snat ~]# iptables -I FORWARD -j ACCEPT
服务器B的配置:
[root@docker ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
ONBOOT="yes"
STARTMODE="onboot"
IPADDR=192.168.6.94
PREFIX=24
GATEWAY=192.168.6.181
服务器C的配置:
如果能ping通,但是通过浏览器上不了网,是由于mtu值不同导致需要设置mtu值的大小。
windows 操作系统中修改mtu值
查询
输入:netsh interface ipv4 show subinterfaces 查询到目前系统的MTU值。 如果你查询不到你想要的连接,请看看是否已经禁用了某个本地连接。设置
netsh interface ipv4 set subinterface “本地连接” mtu=1480 store=persistentLinux操作系统中mtu值的修改
方法一:
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
#增加如下内容 MTU="9000"
方法二:
# echo "1460" > /sys/class/net/eth0/mtu
DNAT的设置:
服务器A上的设置:
将访问服务器A的8080端口转发给服务器C的80端口
[root@miner_k ~]# iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.6.94:80
服务器C上的配置:
[root@docker ~]# yum -y install httpd
[root@docker ~]# service httpd start
[root@docker ~]# echo "web1" > /var/www/html/index.html
注意:
1.手动设置DNAT之后,数据的回包是使用NAT自动提供的SNAT。同理,手动设置SNAT,数据包的回复也是通过NAT自动提供的DNAT。
2.后端服务器是否需要指定网关到NAT的服务器
DNAT中后端服务器需要将网关指定到NAT上
SNAT必须将网关指定到NAT上
在NAT服务器上做限制
经过NAT服务器时需要经过iptables的PREROUTING、FORWARD、POSTROUTING这三个链,可以在这些链上做限制。
1.中断NAT的地址转换
[root@miner_k ~]# iptables -P FORWARD DROP
2.允许后端服务器ping通外网
[root@miner_k ~]# iptables -I FORWARD -p icmp --icmp-type 8 -m state --state NEW -j ACCEPT
[root@miner_k ~]# iptables -I FORWARD -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
3.在允许后端服务器连接外网之后,禁止访问百度
[root@miner_k ~]# iptables -I FORWARD -m string --algo kmp --string "www.baidu.com" -j DROP
更多好玩的还有待发现,可以根据iptables的策略做限制。