1. 程式人生 > >netsh--windows下的埠轉發

netsh--windows下的埠轉發

參考:
http://blog.zer01.net/?p=112
我今天本來是看到學長們在做筆試題,有一個iptables的題,準備回來宿舍之後ssh到實驗室的ubuntu小雞子上學一下iptables的,怎麼變成學習netsh了[笑cry]。情況是宿舍的學長要用我的WIFI,而當我的windows連上外網之後,預設我的Mac是無法用WIFI通過我的windows連上我實驗室的小雞子的。得對我的windows加個埠轉發策略。於是正好可以學一下好久之前就對其感到有點神祕的windows自帶的netsh
原來windows自帶了netsh這個工具可以進行在一張網絡卡的同一網段中進行埠轉發(但是我暫時用不到)。還可以進行同一主機兩個網絡卡之間的埠轉發。
windows 7上就可以直接用netsh

了,在xp/2003的話,要先安裝ipv6。

netsh interface ipv6 install

注:如果在windows 7下用這個命令的話,會提示:
『找不到下列命令:interface ipv6 install。』

防火牆

我是說我之前怎麼老是ping不通我自己在宿舍基本只作為一個路由器功能的windows呢,而且寫這個部落格之前我按照網上的部落格寫好了規則之後依然沒有生效呢,檢視我windows的監聽的埠
這裡寫圖片描述
發現其實已經在0.0.0.0上監聽那個埠了。但是我用我的Mac掃我的windows,並沒有掃到開放的指定埠。
這裡寫圖片描述
後來看看別人部落格裡提示的防火牆的問題,原來確實是由於我隱約感覺到的自己windows的防火牆策略的原因。按照網上部落格說的,注:需要有管理員許可權,防火牆需要關閉

。這次我就把防火牆關了。

# windows 7 及以上
netsh advfirewall set allprofiles state off
# xp/2003
netsh firewall set opmode disable

然後立馬就可以ping我的windows了。疑惑解開了。
這裡寫圖片描述
然後也立馬就可以通過我的windows訪問我在實驗室的小雞子了。也就是說netsh配置生效了。
這裡寫圖片描述
注意這裡ssh的目標就不是你真正要連的那臺機器了,而是你windows與你的PC同網段的那個網絡卡上的IP和開啟的埠了。因為這裡我是用我的windows發出WIFI,然後我windows的無線網絡卡IP為192.168.23.1

,當然我windows的有線網絡卡的IP是172的,跟我要連的實驗室的小雞子的IP是一個網段的(學校內網),到時候要ssh就ssh到我的windows就好了。

netsh命令

刪除已有的netsh埠轉發策略

netsh interface portproxy delete v4tov4 listenport=xxx

這裡寫圖片描述
這裡按格式來說,是要寫listenaddress的。如果不寫的話,就是預設0.0.0.0。(因為當時加這個策略的時候沒有寫listenaddress,然後就在0.0.0.0監聽了)。

新增一條netsh規則

netsh interface portproxy add v4tov4 listenaddress=192.168.23.1 listenport=xxx connectaddress=172.xx.xx.xxx connectport=xxx

這裡寫圖片描述

檢視已有的netsh規則

netsh interface portproxy show all

關閉了防火牆之後確實掃到的埠多了。
順便看了一下,nmap的掃描結果也沒那麼準啊。
我明明打開了某2開頭埠,但是並沒有掃到(也許用nmap -Pn [ip]的時候nmap掃的有點匆忙,漏了一些)。
這裡寫圖片描述
直到我用-p選項指定了掃哪個埠區間的時候,才掃到了。
我雖然確實打開了那些埠,但是並不是nmap所顯示的什麼IIS,NFS-or-IIS,我並沒有裝IIS。
然後想到,netsh中的單詞『portproxy』,顧名思義,不就是埠代理嗎,也就是四層代理。
下次弄一下linux下的四層代理。