ip route,ip rule, iptables和docker的端口映射

iptables

默认5个表, 不可增加其他表

1 raw 用于配置数据包,raw 中的数据包不会被系统跟踪。
2 filter 是用于存放所有与防火墙相关操作的默认表。
3 nat 用于 网络地址转换(例如:端口转发)。
4 mangle 用于对特定数据包的修改(参考 损坏数据包) 
5 security 用于 强制访问控制 网络规则 

    控制Linux內核netfilter模組, 做数据包的过滤和转发,只是netfilter项目的一小部分

    防火墙黑白名单

    可以在内核层面将对80端口的访问直接映射到8080端口上

    NAT, 将对本机的请求,转发到内部其他NAT ip上

下图中可以看到数据包是如何进入本地进程local process

数据包经过iptables5个表的流程

birdge check检查是否使用桥接网口

参考: https://wiki.archlinux.org/index.php/Iptables_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

https://en.wikipedia.org/wiki/Netfilter

docker使用NAT时,docker命令也是操作iptables, 给在运行中的容器增加端口映射,需要手动执行iptables命令

iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000

 查看所有nat规则 iptables -t nat -L -n --line-numbers

 删除一条nat规则 iptables -t nat -D POSTROUTING 2 ,最后一个数字为上一个命令打印的序号

ip route

简写ip r

       ip route add default via 192.168.1.1 dev eth0
           Adds a default route (for all addresses) via the local gateway 192.168.1.1 that can be reached on device eth0.

       ip route add 10.1.1.0/30 via 10.1.1.1 dev eth0
           访问10.1.1.0/30内的机器 都是通过10.1.1.1

增加路由, 在本地机器上操作, 对应的文件是/etc/iproute2/rt_tables , 等同与netmanager中的操作命令route add default gw 192.168.1.1

255 local, 254 main, 253 default 默认的三个路由表, 可以增加自定义的路由表

windows环境中Metric越小 优先级越高

(添加多个默认网关会怎样? 如果两个默认网关在一个ip段,应该没啥问题; 如果不是同一网段,最好使用route的形式)

ip rule

路由规则, 路由表中的具体规则

出方向: ip route, ip rule决定了数据包在到达网口Interface时,需要经过的网关和路由器 

docker的网络模型

bridge 默认使用docker0桥接网口 
host 直接使用宿主机物理网卡
none
container

高级课题:docker容器配置独立ip  (这个够阳春,没有实验出来)  端口如何开放?

pipework 需要使用none模式启动 https://github.com/jpetazzo/pipework#connect-a-container-to-a-local-physical-interface

https://blog.csdn.net/lvshaorong/article/details/69950694

SNAT,DNAT

http://cn.linux.vbird.org/linux_server/0250simple_firewall_5.php

traceroute如何定位网络问题 ?

linux traceroute == window tracert

点击查看代码
[root@btcsdataservice002 ~]# traceroute id.cisco.com
traceroute to id.cisco.com (xxx.28.29.61), 30 hops max, 60 byte packets
 1  dfw02-wxpd-lb02-vl3221-snip.webex.com (10.241.92.4)  0.234 ms  0.198 ms  0.161 ms
 2  * * 10.240.198.2 (10.240.198.2)  11.197 ms
 3  209.197.198.179 (209.197.198.179)  0.674 ms  0.782 ms  0.788 ms
 4  207.182.183.12 (207.182.183.12)  0.962 ms  1.181 ms  0.980 ms
 5  dfw10-wxbb-crt01-be114.webex.com (64.68.116.121)  2.297 ms  2.301 ms dfw10-wxbb-crt01-be116.webex.com (64.68.                   116.138)  2.403 ms
 6  ae60.edge1.Dallas1.Level3.net (4.8.13.44)  2.026 ms  2.250 ms  2.216 ms
 7  * * *
 8  4.30.70.2 (4.30.70.2)  2.010 ms  2.005 ms  1.973 ms
 9  ae5.r02.border.dfw02.sdn.netarch.akamai.com (23.203.147.189)  3.779 ms * *
10  * * *
11  * a184-28-29-61.deploy.static.akamaitechnologies.com (xxx.28.29.61)  2.059 ms *
[root@btcsdataservice002 ~]#
[root@btcsdataservice002 ~]#
[root@btcsdataservice002 ~]#
[root@btcsdataservice002 ~]#
[root@btcsdataservice002 ~]#
[root@btcsdataservice002 ~]# traceroute apix.cisco.com
traceroute to apix.cisco.com (xxx.37.145.221), 30 hops max, 60 byte packets
 1  dfw02-wxpd-lb02-vl3221-snip.webex.com (10.241.92.4)  0.222 ms  0.206 ms  0.162 ms
 2  10.240.198.2 (10.240.198.2)  0.703 ms  0.864 ms *
 3  209.197.198.179 (209.197.198.179)  0.611 ms  0.589 ms  0.692 ms
 4  207.182.183.12 (207.182.183.12)  1.029 ms  1.114 ms 207.182.183.16 (207.182.183.16)  1.128 ms
 5  alln01-mda2-isp-gw2-hu-0-0-1-0.cisco.com (12.107.4.33)  0.903 ms alln01-mda1-isp-gw1-hu-0-0-1-0.cisco.com (1                   28.107.4.49)  0.979 ms  1.110 ms
 6  alln01-mda1-cbb-gw1-be6.cisco.com (12.107.4.2)  1.134 ms alln01-mda1-cbb-gw1-be5.cisco.com (128.107.4.5)  1.                   162 ms alln01-mda1-cbb-gw1-be6.cisco.com (128.107.4.9)  1.265 ms
 7  alln01-mda1-dmzbb-gw1-be91.cisco.com (xxx.36.112.190)  0.457 ms alln01-mda2-dmzbb-gw2-be92.cisco.com (xxx.36.                   112.194)  0.469 ms  0.434 ms
 8  alln01-mda1-dmzdcc-gw1-por2.cisco.com (xxx.36.112.154)  0.636 ms  0.753 ms  0.872 ms
 9  alln01-mda1-fab1-sw3811-dmzdcc1uplink.cisco.com (xxx.36.113.218)  0.680 ms alln01-mda2-fab1-sw3812-dmzdcc2upl                   ink.cisco.com (xxx.36.113.230)  0.834 ms alln01-mda2-fab1-sw3812-dmzdcc1uplink.cisco.com (xxx.36.113.222)  1.366                    ms
10  10.123.175.235 (10.123.175.235)  0.655 ms  0.918 ms  1.179 ms
11  * * *
12  * * *

可以看出

  1. 访问id.cisco.com时,数据包从 xxx.webex.com局域网网关出去,经过Level3.net,又经过akamai.com, 进到akamaitechnologies.com, 说明id.cisco.comakamaitechnologies.com里面。

  2. 访问apix.cisco.com时,数据包从xxx.webex.com局域网网关出去, 经过两个公网路由器,直接到达了xxx.cisco.com, 说明apix.cisco.com是部署在xxx.cisco.com里的

id.cisco.com和apix.cisco.com两个应用部署不在一个数据中心,一个是在公有云上,一个是在私有云上。

如果中间某一个路由器断掉了, 说明有某种限制方法阻断了请求。

两个都访问不了时, 处理方式不一样,要找的人也不一样。
比如数据包一直在xxx.webex.com里面, 说明局域网都没出去。此时要找webex.com的网工,而不是找cisco.com的网工。

posted @ 2018-07-13 11:49  funny_coding  阅读(2211)  评论(0编辑  收藏  举报
build beautiful things, share happiness