1.使用iptable实现: 放行ssh,telnet, ftp, web服务80端口,其他端口服务全部拒绝

[root@localhost ~]# iptables -A INPUT -p tcp  -m multiport --dports  21:23,80  -j ACCEPT
[root@localhost ~]# iptables -A INPUT -j REJECT
[root@localhost ~]# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             multiport dports ftp:telnet,http
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

2.NAT原理总结

NAT: network address translation,支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链

NAT的实现分为:

  • SNAT:source NAT ,支持POSTROUTING, INPUT,让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP
  • DNAT:destination NAT 支持PREROUTING , OUTPUT,把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改目标IP
  • PNAT: port nat,端口和IP都进行修改

iptables实现SNAT和DNAT,并对规则持久保存

SNAT:基于nat表的target,适用于固定的公网IP

SNAT选项:

  • --to-source [ipaddr[-ipaddr]][:port[-port]]
  • --random

iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j SNAT --to-source ExtIP

PS:需要开启 ip_forward

echo "1" > /proc/sys/net/ipv4/ip_forward  #临时生效

#永久生效,修改/etc/sysctl.conf文件
添加 net.ipv4.ip_forward = 1
sysctl -p /etc/sysctl.conf 

设置SNAT

iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -j SNAT --to-source 15.125.14.135

DNAT

nat表的target,适用于端口映射,即可重定向到本机,也可以支持重定向至不同主机的不同端口,但不支持多目标,即不支持负载均衡功能

iptables -t nat -A PREROUTING -d 192.168.88.7 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.17:80