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