-----------小网访问大网------------------
源机器:
添加路由:
route add -net 10.0.0.0/8 gw 172.17.2.61
ip route add 10.0.0.0/8 via 172.17.2.61
添加永久路由:
vi /etc/sysconfig/static-routes
any net 10.0.0.0/8 gw 172.17.2.61
systemctl restart network
转发机器:
打开核心转发:
echo "1" > /proc/sys/net/ipv4/ip_forward
或:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p #read values from file
配置NAT:
iptables -t nat -A POSTROUTING -o eth1 -s 172.17.2.0/24 -d 10.0.0.0/8 -j MASQUERADE
或 iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -d 10.0.0.0/8 -j MASQUERADE
------------iptables------------------
添加规则:
filter:
iptables -A OUTPUT -d 172.17.16.115 -p tcp --dport 2181 -j REJECT #禁止访问某ip的某端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问本机的22端口
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT #允许本机的22端口连接外部地址
ACCEPT:接受
DROP:丢弃
REJECT:拒绝
nat
iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -d 10.0.0.0/8 -j MASQUERADE
-t 指定表
-A append
POSTROUTING postrouting链,即数据包准备离开netfilter时执行的规则。
-o -i 都表示接口,-i 表示输入时的接口,而 -o 特指输出用的接口。
-s 源地址
-d 目标地址
-j 匹配到规则后的操作,MASQUERADE从服务器的网卡上,自动获取当前ip地址来做NAT(和 SNAT的作用是一样的;区别是,他不需要指定固定的转换后的IP地址)
查看规则:
iptables -t nat -vnL
-t 指定表 默认为filter
-L list
-v 详细信息
-n 不反解
--line-number 显示行号(方便删除)
删除规则
查看规则编号
iptables -t nat -nL --line-number
删除规则
iptables -t nat -D POSTROUTING 1
save/load规则:
iptables-save >/etc/iptables
iptables-restore </etc/iptables
SNAT/DNAT:
#例 :映射内网服务器到外网
iptables -t nat -A PREROUTING --dst 10.0.0.10 -p tcp --dport 80 -j DNAT --to-destination 172.17.1.111:80
#目标地址是10.0.0.10的报文,在路由前修改目标地址为172.17.1.111,目的:外部访问10.0.0.10的请求都转发给172.17.1.111
iptables -t nat -A POSTROUTING --dst 172.17.1.111 -p tcp --dport 80 -j SNAT --to-source 10.0.0.10
#目标地址是172.17.1.111的报文,在路由后修改源地址为10.0.0.10,目的:172.17.1.111返回报文时,可以把报文都交给10.0.0.10(10.0.0.10保存了映射关系,知道应该把报文交回那个请求主机)
仍然访问不了,排错:内网机器 172.17.1.111 访问不了 10.0.0.10,需要添加至 10.0.0.10的路由
route add -host 10.0.0.10 gw 172.17.1.245
多规则顺序:
iptables执行规则时,是从从规则表中从上至下顺序执行的,如果没遇到匹配的规则,就一条一条往下执行,如果遇到匹配的规则后,那么就执行本规则,执行后根据本规则的动作(accept, reject, log等),决定下一步执行的情况,后续执行一般有三种情况。
1。一种是继续执行当前规则队列内的下一条规则。比如执行过Filter队列内的LOG后,还会执行Filter队列内的下一条规则。
2。一种是中止当前规则队列的执行,转到下一条规则队列。比如从执行过accept后就中断Filter队列内其它规则,跳到nat队列规则去执行
3。一种是中止所有规则队列的执行。