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

   增加路由, 在本地機器上操作, 對應的文件是/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時,需要經過的網關和路由器 

 

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM