iptables nat 表應用,iptables規則備份和恢復

iptables nat 表應用

  • 作一個試驗,準備兩臺虛擬機 A,B
  • A 有準備兩塊網卡,一塊鏈接外網,一塊鏈接內網
  • B 只准備一塊網卡鏈接內網
  • 目標是讓 B 鏈接外網
  • 要達到這個目標,首先須要讓 A, B兩臺機器能夠通訊
  • 而後讓 A 做爲路由器,這樣 B 就能夠經過A 鏈接外網
  • 如圖,這是兩臺虛擬機
  • 如圖,首先在虛擬機01 這裏點擊 編輯虛擬機設置
  • 如圖,點擊添加
  • 點擊 網絡適配器,而後點 完成
  • 如圖,選擇 網絡適配器 2 ,右邊選項裏面,選擇 LAN 區域
  • 選擇了 LAN 區域後,須要設置一個內網交換機才行
  • 如圖,點擊 LAN區段(S)... 按鍵,出現左邊方框
  • 點擊添加,而後就出現一個自定義名稱的交換機,咱們命名爲 交換機,而後點擊肯定
  • 配置好第二塊網卡,就點擊 肯定
  • 如圖,選擇第二個虛擬機
  • 點擊 編輯虛擬機設置
  • 按照上面的方法添加第二塊網卡,一樣右邊選擇 LAN 區段
  • 下面選擇 交換機,剛纔建立的交換機在這裏能夠直接選擇使用
  • 這樣 01 跟 02 兩臺機器就能夠經過這個交換機進行通訊了
  • 由於 02 這臺電腦按照實驗設計應該是不能鏈接外網的
  • 因此選擇 第一塊網卡,這塊網卡是以前配置好,能夠上外網的
  • 如今要讓它不鏈接網絡,右邊點擊 啓動時鏈接,把原來的 √ 去掉
  • 這樣系統啓動的時候,這塊網卡就不會鏈接網絡了,而後點擊 肯定
  • 啓動虛擬機01,進入系統後,輸入 ifconfig 查看網卡信息
  • 如圖,多了一塊 ens37,這塊網卡目前沒有被分配ip地址
  • 有兩種方法分配 ens37 ip
  • 一種是直接改配置文件,到網卡配置文件的目錄 /etc/sysconfig/network-scripts/
  • 到這個目錄裏面,找到 ens33 的配置文件
  • 如圖,而後 cp 複製一份,重命名爲 ifcfg-ens37
  • 而後編輯該文件,將 ip 地址修改一下
  • uuid,mac地址 能夠刪除,讓系統從新分配,由於這是 ens33 id和mac,不刪除會衝突
  • name,device等信息修改一下
  • 這樣就設置了永久的 ip
  • 還有一種方法是設置臨時的ip,這種方法系統重啓以後ip就會消失
  • 如圖, ifconfig + 網卡名稱 + ip地址/子網掩碼位數
  • 這裏子網掩碼位數是 24 表示 24位 1
  • 這個表示子網掩碼,通常是 255.255.255.255 這麼多種組合
  • 換算成二進制就是 1111.... 32個1,也就是有32位數
  • 每一位數能夠是0或者1
  • 設置爲 24 表示 前面有 24位數 都是 1
  • 後面的 8 位數是 0
  • 這樣轉換爲十進制就是 255.255.255.0
  • 8位二進制數有255種組合,最後8位都是0,轉換爲十進制數就是 0
  • 8個1轉換爲十進制數就是 255
  • 因此設置爲24,表明24個1剩餘都是0,總長度就是 32
  • 32-24=8 ,因此剩餘8位就是0
  • 子網掩碼就是 255.255.255.0
  • 還有一點,ens37的ip跟ens33的ip 網段不能同樣
  • 好比 ens33 ip是 192.168.64.128 ,64就是網段
  • 因此 ens37 的第三段不能跟 ens33 一致
  • 因此這裏設置爲 192.168.100.1,100跟64不一致

  • 第二臺虛擬機,由於不能鏈接外網
  • 因此不能使用 xshell 遠程鏈接,須要直接在虛擬機上操做
  • 流程跟 01虛擬機同樣,先設置網卡 ip
  • 02虛擬機的第二塊網卡也是ens37
  • 設置 ip 的方法跟 01虛擬機同樣
  • 也是 複製一份配置文件,而後修更名稱和內容
  • 或者如圖,使用 ifconfig 命令直接改 臨時 ip
  • 這裏設置爲 192.168.100.100/24
  • 如圖,這個命令能夠查看 網卡是否鏈接主機
  • 這裏顯示 ok 就是鏈接沒問題
  • 一樣的命令檢查 o1虛擬機
  • 如圖,在01虛擬機上面使用 ping 192.168.100.100 鏈接 02虛擬機
  • 下面信息顯示 鏈接成功

  • 咱們的目的是,讓01虛擬機做爲路由器,02虛擬機經過01虛擬機的路由器功能上網
  • 全部,首先應該打開 01虛擬機 上面的路由轉發功能
  • 這樣 01虛擬機就會具備路由器功能了
  • 如圖, /proc/sys/net/ipv4/ip_forward 這個文件決定路由轉發功能是否開啓
  • ip_forward 文件裏面只有一個值,目前默認值爲 0
  • 0 就表示路由轉發功能關閉了
  • 要打開路由轉發功能,就須要把 0 修改成 1
  • 1 就表示打開
  • 如圖, 使用命令 echo "1" > !$ 把原文件的0修改成1
  • 這樣就算打開了 01 虛擬機的端口轉發功能了
  • 而後還須要添加一條規則才能夠實現上網功能
  • iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
  • 使用以上命令,對 nat 表的 POSTROUTING 鏈添加 MASQUERADE 規則
  • 這條規則使 192.168.100.0 網段能夠上網
  • 如圖,這是 虛擬機02 ,須要把虛擬機02 的網關設置一下
  • 由於虛擬機02 是經過 虛擬機01 來上網的
  • 因此 虛擬機01 跟 虛擬機02 鏈接的那塊網卡的 ip 地址
  • 應該設置爲 虛擬機02 的網關
  • 由於 01 轉發的數據從這個ip出來到達 02
  • 02 的訪問請求也是從這個ip出去,這個ip做用就至關於網關了
  • route -n 查看本機網關信息,目前沒有設置網關
  • 使用 route addd default gw 192.168.100.1 設置默認網關
  • 再檢查 route -n ,能夠看到,網關信息增長了一行,192.168.100.1
  • 而後再 ping 一下不一樣網段的,虛擬機01鏈接外網的網卡 192.168。64.128
  • 能夠 ping 通說明成功了
  • 還有一點,兩臺虛擬機要使用 iptables -F 關閉防火牆,否則可能不能鏈接外網

  • 如今若是要遠程登陸訪問 虛擬機02,仍是作不到的
  • 還須要一些設置,把遠程進來的信息,轉發給 虛擬機02
  • iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
  • 使用以上命令將以前添加的 nat 表規則刪除以避免影響後續操做
  • 須要載添加兩條規則,分別是把到達 192.168.64.128 的數據轉發到 192.168.100.100
  • 還有就是把 192.168.100.100 發出的數據轉發到 192.168.64.128
  • iptables -t nat -A PREROUTING -d 192.168.64.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
  • 上面這條命令就是把 目的地是 192.168.64.128 端口是 1122 的數據包
  • 轉發給 192.168.100.100,端口是 22 的地址
  • iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.64.128
  • 上面命令是把 192.168.100.100 發出的數據包 轉發到 192.168.64.128
  • 如圖,創建一個新的會話,主機輸入 虛擬機01 的ip地址,端口設置1122
  • 而後鏈接,成功的話,會直接跳轉到 虛擬機02
  • 這裏也須要 iptables -F 否則不能轉發數據

iptables規則備份和恢復

  • 如圖,使用 service iptables save 能夠保存現有的iptables 保存到 iptables 文件
  • 若是想保存到另外的文件裏面
  • iptables-save > /tmp/ipt.txt 這樣就能夠把iptables設置保存到 ipt.txt 文件裏面
  • 若是想從 ipt.txt 文件裏面把 iptables 設置 加載回來
  • 如圖,可使用 iptables-restore < /tmp/ipt.txt
  • 這樣就能夠把 ipt.txt 裏面的設置加載到 iptables 裏面
相關文章
相關標籤/搜索