一、 bash
#!/bin/bash //腳本語言的默認起始行tcp
ipt="/usr/sbin/iptables" //定義變量spa
$ipt -F //清空原有規則ip
$ipt -P INPUT DROP //默認丟棄入方向的包路由
$ipt -P OUTPUT ACCEPT //默認接收出方向的包table
$ipt -P FORWARD ACCEPT 登錄
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //入方向增長對指定狀態包方向,這條規則可讓通訊更加順暢變量
$ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT // 0-24網段的22端口放行配置
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT //80端口數據包放行iptables
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT //21端口數據包放行
一、讓B機器鏈接外網
1)準備好兩臺機器,給兩臺機器分配網卡
我已有兩臺機器,克隆3充當A機器的角色,克隆1充當B機器的角色
2)給A機器分配網卡
當前個人A機器已有一塊外網網卡,還須要新增一塊內網網卡
完成後,再更改網卡設置
給新網卡選擇新加的LAN區段1,至關於給A機器連上了一臺內網交換機,
給B機器也進行相同的操做,這樣AB機器就處於同一內網環境中了,注意須要將B機器原來的外網網卡禁用,以下圖
準備完畢,啓動AB兩臺機器
3)給A機器的內網網卡添加IP
# ifconfig ens37 192.168.100.1/24
這種方法添加的IP是臨時的,一旦設備重啓,IP就沒有了,若是想永久生效,須要拷貝並修改配置文件
再用一樣的方法給B機器添加IP
至此,準備 OK
4)在A機器上打開路由轉發
打開路由轉發須要將文件/proc/sys/net/ipv4/ip_forward文件的內容從默認的0修改成1,以下:
5)給A機器增長一條規則
# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
這條命令是給A機器作一個欺騙,使192.168.100.0這個網段的機器都能上網
6)B機器上設置網關
給B機器增長默認網關192.168.100.1,後,再讓B機器ping外網的網關192.168.133.1就能ping通,意味着B機器能上網了。
二、讓C機器能遠程鏈接B機器的22端口
前面的實驗中C機器是能夠鏈接A機器的,但不能直接鏈接B機器,如今咱們來實現讓C機器也能遠程連上B機器,這裏要使用到端口映射
1)給A機器打開路由轉發
打開路由轉發須要將文件/proc/sys/net/ipv4/ip_forward文件的內容從默認的0修改成1,以下:
2)刪除需求1中寫的規則,以避免影響新寫的規則
3)新增兩條規則
# iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22 //將從C機器來的包經A機器的1122端口轉發到B機器的22端口
# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130 //將B機器返回的包發送到A機器上
4)B機器上設置網關
給B機器增長默認網關192.168.100.1後,再讓B機器ping外網的網關192.168.133.1就能ping通,意味着B機器能上網了,同時從C機器上也能遠程登陸B機器的22端口了