笔记--linux网络(2 iptables)

        -----------小网访问大网------------------
            源机器:
                添加路由:
                    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。一种是中止所有规则队列的执行。

猜你喜欢

转载自blog.csdn.net/weixin_42573277/article/details/113857928
今日推荐