1. 程式人生 > >ip route,ip rule, iptables和docker的端口映射

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

dport port nat -c wiki interface 所有 ati tle

iptables

默認5個表, 不可增加其他表

1 raw 用於配置數據包,raw 中的數據包不會被系統跟蹤。
2 filter 是用於存放所有與防火墻相關操作的默認表。
3 nat 用於 網絡地址轉換(例如:端口轉發)。
4 mangle 用於對特定數據包的修改(參考 損壞數據包)。
5 security 用於 強制訪問控制 網絡規則

控制Linux內核netfilter模組, 做數據包的過濾和轉發,只是netfilter項目的一小部分

防火墻黑白名單

可以在內核層面將對80端口的訪問直接映射到8080端口上

NAT, 將對本機的請求,轉發到內部其他NAT ip上

下圖中可以看到數據包是如何進入本地進程local process的

技術分享圖片

參考: 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

技術分享圖片

ip route

增加路由, 在本地機器上操作, 對應的文件是/etc/iproute2/rt_tables , 等同與netmanager中的操作命令route add default gw 10.0.0.1

255 local 254 main 253 default 默認的三個路由表, 可以增加自定義的路由表

ip rule

路由規則, 路由表中的具體規則

出方向: ip route, ip rule決定了數據包在到達網口Interface時,需要經過的網關和路由器

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