這個任務其實是前段時間《網路安全》課程的乙個小實驗。實驗的要求是在virtualbox中執行兩台虛擬機器,一台linux機器用作路由器(該機器配置兩個網絡卡,乙個連線到外網,乙個連線到內網),一台windows機器連線到內網,通過linux的路由器功能上網。
首先配置下實驗環境。實驗中真機為win7系統,dns是202.38.64.56,虛擬機器為32位ubuntu(1404)主機一台。32位win7主機一台。
虛擬機器win7有一張網絡卡,上網模式是host only,ip位址是192.168.56.102(連線到內網192.168.56.0/24)。虛擬機器ubuntu有兩張網絡卡:eth0的上網模式是nat ,ip位址是10.0.2.15(用該ip模擬公網ip,因為它連線到外網)。eth1的上網模式是host only,ip位址是192.168.56.101(連線到內網192.168.56.0/24)本實驗用ubuntu主機做路由器,使虛擬機器win7在host only模式下能上網.。
然後簡單了解下iptables的基本使用:
iptables [-t表名] 管理選項 [鏈名] [條件匹配] [-j 目標動作或跳轉]
幾個注意事項:
不指定表名時,預設表示filter表
不指定鏈名時,預設表示該錶內所有鏈
除非設定規則鏈的預設策略,否則需要指定匹配條件
下面是對兩個虛擬機器的配置:
配置虛擬機器win7:
設定ip 192.168.56.102
子網掩碼 255.555.555.0
預設閘道器 192.168.56.101(該ip位址對應ubuntu的eth1的host only的ip位址)
首選dns伺服器 172.17.1.6(與真機上的dns一致)
配置linux虛擬機器:
以root使用者執行:
modprobe ip_tables
modprobe ip_nat_ftp
在linux啟動時,ip_tables和iptable_nat兩個模組在核心中並不是預設的啟動項,因此上述兩條語句就是先將這兩個必須的模組啟動。
iptables -p input accept
iptables -p output accept
iptables -p forward accept
設定防火牆規則,對於輸入輸出和**的包均設定為接受狀態。
建立偽裝和ip**:
iptables -t nat -a postrouting -o eth0 -jmasquerade
iptables -a forward -i eth1 -j accept
引數說明:
-t nat:呼叫nat表,呼叫這個說明遇到了產生新的連線的包。
-a postroutin:指定資訊包打算離開防火牆時改變它們的規則,意即使用nat。
-ieth1:輸入介面為eth1。
-o eth0:輸出介面為eth0。
-j masquerade:指定進行位址偽裝,意即將內網位址偽裝成外界面eth0的位址進行傳輸。
這兩條命令的意思就是將內網向外連線的資料報(從eth1接收到的資料報)的位址轉換為外網介面的位址並從外界面(從eth0介面**)**。
修改/etc/sysctl.conf中的net.ipv4.ip_forward = 1
echo '1'>/proc/sys/net/ipv4/ip_forward
執行sysctl -p,使核心引數修改生效。
根據實驗原理所述的配置方法,對ubuntu和win7虛擬機器進行相應配置,使win7虛擬機器能夠通過ubuntu虛擬機器開啟的路由器功能連線到外網。得到實驗結果如下:
linux使用iptable做閘道器
linux 需要兩個網絡卡 乙個外網網絡卡乙個內網網絡卡 乙個外網絡卡 cat etc sysconfig network scripts ifcfg eth0 device eth0 type ethernet onboot yes nm controlled yes bootproto none...
利用iptable控制對外網ftp服務的訪問許可權
假定eth0為外網網絡卡 iptables a input i eth0 p tcp s any 0 sport 21 d 192.168.0.0 24 dport 1024 65535 j accept iptables a output i eth0 p tcp s 192.168.0.0 24...
Linux 下利用rtcwake喚醒裝置
以下是在opensuse上所做的測試 whereis rtcwake rtcwake usr sbin rtcwake usr share man man8 rtcwake.8.gz rtcwake help usage rtcwake options options d,device select...