謝謝你講的這麼仔細..
ROUTE TO ROAMING 是否可以當作CLIENT TO SERVER 來看?

我有爬過文了 關於 PPTP 與 OPENVPN的差異...
不管是加密方式或優缺點...

現行的PPTP已經可以被暴力破解..只要有足夠的時間..
如果被有心人從WIFI截到VPN封包的話..破解是遲早的事...

那麼..如果我只是偶爾人在外面臨時要用到的話...
不致於會被人24小時盯著..然後截取我的VPN封包吧? VPN連線了不起就3~4個小時而已..
又...這麼多人在用PPTP ..有心人要如何找到我家的VPN SERVER..
然後破解我家的VPN連線加密?

我想說的是...會有人盯著隨便一台VPN SERVER 然後 破解..
然後撈一些片子回來看嗎?
如果我是什麼大企業的高層或是政府官員..被盯上的可能性才比較大吧?

OPENVPN 的話 如果用AES-128或256加密..要破解就不是那麼容易的事..
尤其可以自定PORT以及不用這麼麻煩為了封包問題去做靜態路由....
但手持設備或是在外面臨時要用(朋友的電腦或手機)..又不可能隨身帶著KEY..
結果就會有點麻煩...


我的想法是這樣...

手持設備或沒帶到自己的設備時,
可能還是遷就實際狀況而以2組PPTP VPN連線設定+ 傳送所有流量 來因應...

人在東京,要連到京都,就PPTP-1連到京都的 RT-AC56U,
人在福岡,要連到大阪或桃園辦公室就PPTP-1連到京都的RT-AC56U+傳送所有流量(使用預設閘道).
人在千葉,連到桃園辦公室,可以PPTP-2連到桃園辦公室的 RT-AC68U

人在台北,要連到桃園辦公室就PPTP-2連到桃園辦公室的 RT-AC68U,
人在高雄,要連到京都或大阪就PPTP-2連到桃園辦公室的 RT-AC68U+傳送所有流量(使用預設閘道).
人在花連,要連到大阪,可以PPTP-1連到京都的RT-AC56U+傳送所有流量(使用預設閘道).

laptop或PC因為要加入靜態路由相對容易...所以沒必要勾選 傳送所有流量(使用預設閘道).

因為要充份使用硬體,且已經很習慣使用DD-WRT,我都是裝台省電的ESXi主機,
然後跑DD-WRT x86與NAS、winxp等3套VM,反正都24X365..

先假設環境與硬體條件:
-------------------------------------------------------------------------------------------
A點在京都 當VPN SERVER

A-1.一台ROUTE DD-WRT x86,LAN IP是 192.168.101.1,使用pppoe上網,
使用DDNS為kyoto1011.no-ip.org,
可以架設OPENVPN SERVER 或 PPTP SERVER 也可以當CLIENT.

A-2.一台AP RT-AC56U LAN IP是 192.168.101.3,使用pppoe上網,
使用DDNS為kyoto1013.no-ip.org,
可以架設OPENVPN SERVER 或 PPTP SERVER 也可以當CLIENT.


A-3.有台NAS IP是 192.168.101.100/24 gate是192.168.101.1

A-4.WIN-PC 2台,內部區網是192.168.101.0/24

---------------------------------------------------------------------------------------------
B點在 大阪 VPN CLIENT

B-1.一台ROUTE DD-WRT x86,使用DHCP上網,IP 為10.10.200.200,
LAN IP是 192.168.103.1,
可以架設OPENVPN SERVER 或 PPTP SERVER 也可以當CLIENT.


B-2.有台NAS IP是 192.168.103.100/24 gate是192.168.103.1.

B-3.WIN-PC 2台,內部區網是192.168.103.0/24.
----------------------------------------------------------------------------------------------
C點在 桃園辦公室 VPN CLIENT

C-1.一台ROUTE DD-WRT x86,LAN IP是 192.168.105.1,使用pppoe上網,
使用DDNS為taiwan1051.no-ip.org,
可以架設OPENVPN SERVER 或 PPTP SERVER 也可以當CLIENT.

C-2.一台AP RT-AC68U LAN IP是 192.168.105.3,使用pppoe上網,
使用DDNS為taiwan1053.no-ip.org,
可以架設OPENVPN SERVER 或 PPTP SERVER 也可以當CLIENT.


C-3.有台NAS IP是 192.168.105.100/24 gate是192.168.105.1.

C-4.WIN-PC 2台,內部區網是192.168.105.0/24
-----------------------------------------------------------------------------------------------

X 為 移動設備

android 2台
iphone 1台
Win Latop 3台
------------------------------------------------------------------------------------------------

預想的連線與使用方式:

1.C-1 用 OPENVPN / SITE to SITE 連線到 A-1 (可以用DDNS嗎?)

2.B-1 用 OPENVPN / ROUTE TO ROAMING 連線到 A-1 (因為沒有實體IP 對嗎?)

3.A、B、C點的PC 可以互相存取檔案、NAS、RDP或是RSYNC備份NAS

4.A點與C點的AP 加入 靜態路由 使之PPTP VPN連線進來的設備可以存取任何一處的檔案..
(如果是AP在內部加路由把 目的封包推到 VPN SERVER的話...是否手機也不用自定路由
目前我在AP上有加靜態路由..可是PPTP連線下 手機若沒開 傳送所有流量..還是沒法找到另一處的NAS )

5.自己的手機或LAPTOP 安裝OPENVPN 的APP或GUI,隨時可以存在三個點的資料..

6.如果不是自己的手機或人在外面需要臨時改稿卻又沒帶LAPTOP..
就用系統內建的VPN連線連到AP內建的PPTP VPN SERVER,RDP到ESXi上的WINXP去改檔案..

因為大部份狀況下只是臨時存取某些檔案、改稿或看影片..
只要檔案一撈到設備上或稿件改完..就可以關閉 VPN連線..
持續連線的時間較短..所以不見得安全性上有破綻(如果是高官的話就不一定了)
這樣的OPENVPN與PPTP VPN搭配的使用方式應該可以兼顧安全性與方便性吧?
------------------------------------------------------------------------------
如前面提到的..習慣使用DD-WRT...所以想請問一下..
1.現在已經做好了ca.key、ca.crt、dh1024.pem、server.key、server.crt、shared.key
client01.key、client01.crt (client01~08 一口氣做了8組)
產生的證書本身跟我OPENVPN之後打算要用的AES-128加密有無關係?


2.我看別人在PC上用OPENVPN時會建一個config參數設定檔.ovpn,
DD-WRT本身已經寫到GUI了,所以應該不需要這個檔案...
但這些功能要從OPENVPN對應到DD-WRT時..很多功能我看不懂..
尤其除了ca 證書外..還有一堆什麼key或TLS等完全不知是做啥的存在..








目前SERVER端我先參考這一篇 這一篇教學 因為為這篇也是用DD-WRT內的GUI去設定的...
對於一些有看得懂的 我改成以下設定

OpenVPN = "Enable" ; Startup Type = "Wan Up"
Config as - Server (原教學是選GUI,如果選Daemon 就沒有接下來的選項可以設定)
Server mode - Router(Tun)
Network - 192.168.100.0
Netmask - 255.255.255.0
port - 28001
Tunnel Protocol - UDP
Encryption Cipher - AES-128 CRC (我選擇AES-128的加密方式)
Hash Algorithm - SHA1
Advanced Options - Enable
Use LZO Compression - Disabled (我選擇關掉壓縮傳輸)
Redirect default Gateway - Disabled (關掉後是否代表 不作為預設閘道 ?)
Allow Client to Client - Enable (這部份是代表可以 讓CLIENT 之間相通?)
Allow duplicate cn - Enable (複製cn? 這是幹什麼用的? 是給多站點狀況下用的嗎?
TLS Cipher - Disable (這是指不要使用TLS伺服器嗎? TLS是幹什麼用的?)

Additional Config - push "dhcp-option DNS 8.8.8.8" (如果不作為預設閘道..是否就不用填? 是否可以將routing push rule填在裡面?)


如果我是要做多站點 SITE TO SITE 與 LAPTOP 也可以用OPEN VPN site to roaming連進去...
是否就是開啟剛才做好的相關檔案 把檔案內的東西 貼進 GUI內的相應文字框?
接下來這部份有些不懂...

CA Cert(公共伺服器端證書) = ca.crt
Certificate Revoke List = blank (不知做啥用的)
Public Server Cert = server.crt
Private Server Key = server.key
DH PEM = dh1024/2048.pem

參考你前一篇說的..做出來的shared.key..我要填在哪裡? ca.key要填嗎? 填在哪裡?

我用的這一版DD-WRT內還多了一些 可以 填入的設定
CCD-Dir DEFAULT file
Client connect script
Static Key (是否為 shared.key ?)
PKCS12 Key
TLS Auth Key (我從教學文章的Remark (6)中看到 If TLS authentication is to be implemented, populate the content of ta.key(generated in step #1 remark) to the field "TLS Auth Key "
Begin from "-----BEGIN OpenVPN Static key V1-----" to "-----END OpenVPN Static key V1-----" inclusive.

為什麼TLS Auth Key是填入Static key (shared.key的內容?)
我在這篇 http://wadihzaatar.com/?p=11 看到 是把 key的內容寫到static.key內

按照教學做完後:
5. Reboot router and see status at Status > OpenVPN
If VPN server is up properly, GUI>Status > OpenVPN, State will show message "Server: CONNECTED:Local Address:Remote Address 192.168.60.1".
可是我的Remote Address 並沒有出現192.168.100.1...我確定有修改過適合我這邊的防火牆指令..
Kaiens wrote:
ROUTE TO ROAMING 是否可以當作CLIENT TO SERVER 來看?


site-roaming就是client to server的模式

Kaiens wrote:
又...這麼多人在用PPTP ..有心人要如何找到我家的VPN SERVER..
然後破解我家的VPN連線加密?


如果是在外面用公眾WiFi網路,要抓PPTP server位置太簡單了....
就跟您上面說的一樣,抓GRE封包跟1723 port的無線流量封包交叉來比對,然後就知道PPTP server位置了

資安都是沒有講,就不知道有多可怕

Kaiens wrote:
我想說的是...會有人盯著隨便一台VPN SERVER 然後 破解..
然後撈一些片子回來看嗎?
如果我是什麼大企業的高層或是政府官員..被盯上的可能性才比較大吧?


這麼說好了,惡意攻擊者要的不會是片子(那在地下網路都可以找到,如之前著名的海盜灣),而是你的機器。
「綁走」之後他拿來當跳板幹啥事很難講。
不可能嗎?我不敢這樣說。

Kaiens wrote:
OPENVPN 的話 如果用AES-128或256加密..要破解就不是那麼容易的事..
尤其可以自定PORT以及不用這麼麻煩為了封包問題去做靜態路由....
但手持設備或是在外面臨時要用(朋友的電腦或手機)..又不可能隨身帶著KEY..
結果就會有點麻煩...


這不難處理。

簡單說
1.server端要有這兩個參數:
username-as-command-name
client-cert-not-required

2.認證部份採用帳號密碼方式,如pam認證

3.做好的client設定檔丟到雲端,比如dropbox或google drive。
建議要將server CA也寫進去,不要另存一個CA檔。

其他key那些就統統不用了(因為1.這兩個參數的關係)

4.在手持/行動設備的商店上(如Android: Play store)下載安裝openvpn connect這個APP。
PC/MAC則在主人同意下安裝openvpn/tunnelblick進去。

5.把client設定檔從雲端下載下來

6.把設定檔匯入後啟動,此時會詢問帳秘。
(openvpn connect請記得不要把帳秘存檔。這會有選項可以勾選。PC部份則是每次都要打帳秘。)

7.輸入帳秘後登入/使用VPN

8.使用完畢關閉VPN。
只要6的部份沒有存帳秘,然後那設備沒有惡意程式紀錄鍵盤按鈕,那對方日後就無法登入系統。
(即使他有CA證書寫在設定檔了)

9.更徹底一點就是關閉後,順手把匯入的設定檔砍了。
(喔,當然,還有下載下來的設定檔)

10.要更機車一點,就把tls-auth參數放進去,用完馬上換一組key。
另外一個方式就是直接把CA給廢了並換掉。
以上都是如果你不怕麻煩的話 XDD....

11.如果怕被Brute force暴力猜密碼破解,以linux來說,server端可以搭配fail2ban來玩。
不過這要看你實際的server端,有沒有類似這樣的支援。

Kaiens wrote:
我的想法是這樣...

手持設備或沒帶到自己的設備時,
可能還是遷就實際狀況而以2組PPTP VPN連線設定+ 傳送所有流量 來因應...

人在東京,要連到京都,就PPTP-1連到京都的 RT-AC56U,
人在福岡,要連到大阪或桃園辦公室就PPTP-1連到京都的RT-AC56U+傳送所有流量(使用預設閘道).
人在千葉,連到桃園辦公室,可以PPTP-2連到桃園辦公室的 RT-AC68U

人在台北,要連到桃園辦公室就PPTP-2連到桃園辦公室的 RT-AC68U,
人在高雄,要連到京都或大阪就PPTP-2連到桃園辦公室的 RT-AC68U+傳送所有流量(使用預設閘道).
人在花連,要連到大阪,可以PPTP-1連到京都的RT-AC56U+傳送所有流量(使用預設閘道).

laptop或PC因為要加入靜態路由相對容易...所以沒必要勾選 傳送所有流量(使用預設閘道).

因為要充份使用硬體,且已經很習慣使用DD-WRT,我都是裝台省電的ESXi主機,
然後跑DD-WRT x86與NAS、winxp等3套VM,反正都24X365..


如果是我,我大概會這樣架。
1.桃園、京都、大阪用openvpn site-to-site先各自串起來。
反正都有vm可以玩,抓個CentOS灌openvpn進來,外部firewall作2個port mapping給vm,拿來site-to-site跟下面提到的site-roaming server用,然後注意路由配置就ok

2.桃園、京都跟大阪都啟用動態IP routing protocol穿過site-to-site VPN,如BGP、OSPF

3.做一個server CA出來。(對,只要一個)
然後在桃園、京都跟大阪都用這個CA架openvpn site-roaming的server出來。

4.client的config檔裡,直接寫三行remote
remote 桃園的IP port
remote 京都的IP port
remote 大阪的IP port

然後系統會自動從桃園連,連不上會改由京都連,然後是大阪。
(以上是懶人法,亂搞高可靠 ...。真這樣搞,日本那邊很可能會抓狂
其實依照您的需求,分成三個client config各自連三地,要用的時候直接選哪一個就好)

另外也要記得把三地後端的網段(如:192.168.101.0/21一個網段收工 ←這是偷懶,好孩子不要學) ,都在server設定中push到client端。

5.然後....沒有然後了
client連上vpn後,路由上就可以直接存取三地的資料(透過3個site-to-site跟動態路由協定)
再來就是要不要用防火牆作限制的問題。

Kaiens wrote:
A點在京都 當VPN SERVER
B點在 大阪 VPN CLIENT
C點在 桃園辦公室 VPN CLIENT

X 為 移動設備
android 2台
iphone 1台
Win Latop 3台


預想的連線與使用方式:

1.C-1 用 OPENVPN / SITE to SITE 連線到 A-1 (可以用DDNS嗎?)

2.B-1 用 OPENVPN / ROUTE TO ROAMING 連線到 A-1 (因為沒有實體IP 對嗎?)

3.A、B、C點的PC 可以互相存取檔案、NAS、RDP或是RSYNC備份NAS

4.A點與C點的AP 加入 靜態路由 使之PPTP VPN連線進來的設備可以存取任何一處的檔案..
(如果是AP在內部加路由把 目的封包推到 VPN SERVER的話...是否手機也不用自定路由
目前我在AP上有加靜態路由..可是PPTP連線下 手機若沒開 傳送所有流量..還是沒法找到另一處的NAS )

5.自己的手機或LAPTOP 安裝OPENVPN 的APP或GUI,隨時可以存在三個點的資料..

6.如果不是自己的手機或人在外面需要臨時改稿卻又沒帶LAPTOP..
就用系統內建的VPN連線連到AP內建的PPTP VPN SERVER,RDP到ESXi上的WINXP去改檔案..

因為大部份狀況下只是臨時存取某些檔案、改稿或看影片..
只要檔案一撈到設備上或稿件改完..就可以關閉 VPN連線..
持續連線的時間較短..所以不見得安全性上有破綻(如果是高官的話就不一定了)
這樣的OPENVPN與PPTP VPN搭配的使用方式應該可以兼顧安全性與方便性吧?


你的作法描述,看來有兩種可能實做方式。

一是C-1跟A-1中間先開一個site-to-site的openvpn通道,然後A-1再開另外一個OpenVPN site-roaming server跟pptp server出來。
所有client(包括X部份),都是透過VPN連回A-1,然後再到各地


另外一種是純openvpn site-roaming的tunnel方式。
單一京都當server,其他都是client連到京都。


可行嗎?當然都可行!
只要server的設定上,注意下面2點。
1.client-to-client要打開。
2.加入各clients的iroute設定。(需搭配client-config-dir參數)
請看
http://backreference.org/2009/11/15/openvpn-and-iroute/

如果無法瞭解其概念,請想像OpenVPN的site-roaming模式,會創一個virtual的router出來,然後所有client(包括server自己)都是以點對點方式,連到這個virtual router上來互連。

iroute就是在額外告訴virtual router,哪些client端網段的流量要交給這個virtual router,去轉發給另外一個client。
這樣會比較清楚瞭解。

注意:
如果是1.的作法,京都server端的設定,iroute到桃園這段是不需要的,但push route到桃園則是要保留。
然後要記得在site-to-site的config檔中,加入對方的網段的路由設定:
京都端config檔:route 192.168.105.0 255.255.255.0
桃園端config檔:route 192.168.101.0 255.255.255.0



Kaiens wrote:
Encryption Cipher - AES-128 CRC (我選擇AES-128的加密方式)

AES-128-CBC一般用OK,可以的話會建議升到AES-256-CBC。

Kaiens wrote:
Redirect default Gateway - Disabled (關掉後是否代表 不作為預設閘道 ?)

對,關掉後就不會把預設閘道導過來

Kaiens wrote:
Allow Client to Client - Enable (這部份是代表可以 讓CLIENT 之間相通?)

對,也就是client-to-client這個參數。

Kaiens wrote:
Allow duplicate cn - Enable (複製cn? 這是幹什麼用的? 是給多站點狀況下用的嗎?

簡單說,cn=使用者名稱
(嚴格講起來不太正確就是了。有興趣請去翻ldap相關文件)
這意思是,是否允許同一使用者在同一時間內多次登入。

以你的需求,要不要開都可以,
只要小心大阪與桃園的cn不要被其他設備又登入,不然路由會亂掉@@...(不管有沒有開)

Kaiens wrote:
TLS Cipher - Disable (這是指不要使用TLS伺服器嗎? TLS是幹什麼用的?)

Kaiens wrote:
TLS Auth Key (我從教學文章的Remark (6)中看到 If TLS authentication is to be implemented, populate the content of ta.key(generated in step #1 remark) to the field "TLS Auth Key "
Begin from "-----BEGIN OpenVPN Static key V1-----" to "-----END OpenVPN Static key V1-----" inclusive.

為什麼TLS Auth Key是填入Static key (shared.key的內容?)


簡單講,TLS有很多種。TLS Cipher選Disable是自動選擇。

然後TLS Auth是加強安全性的(多一把鑰匙)。client沒有這把鑰匙(static key)就無法連線,可以拿來防某些DoS打OpenVPN Server。
但這跟site-to-site模式下用的static key不一樣。

請參閱
https://community.openvpn.net/openvpn/wiki/Hardening

至於openvpn本身,其實就是跑TLS的,但跟這兩個參數無關。


Kaiens wrote:
Additional Config - push "dhcp-option DNS 8.8.8.8" (如果不作為預設閘道..是否就不用填? 是否可以將routing push rule填在裡面?)

看情況,如果有內部 dns server,建議還是要推過去。
當然,內部的路由是要一定推過去client的。
如push "route 192.168.101.0 255.255.255.0"

Kaiens wrote:
If VPN server is up properly, GUI>Status > OpenVPN, State will show message "Server: CONNECTED:Local Address:Remote Address 192.168.60.1".
可是我的Remote Address 並沒有出現192.168.100.1...我確定有修改過適合我這邊的防火牆指令..

這地方他寫錯了。
如果VPN server有起來,server的local端Address會是192.168.60.1(或你的例子:192.168.100.1)。
Romote Address一般則是192.168.60.2/30(或你的例子192.168.100.2/30)的模式。

我這沒有ddwrt,但看你的圖都是Site-Roaming的設定方式。
另外我也很好奇Config in Daemon這裡的作用,會不會是改成site-to-site的設定?


另外,你提到的教學裡面,講的是site-roaming的server。
以你的需求,你還會需要
1.設定大阪跟桃園各自的ccd(CCD-Dir)特定設定檔。主要要把iroute包進去。
2.建議大阪跟桃園的client設定檔,直接加入auth-user-pass file 這個參數(這個file是個檔案,裡面要有帳號跟密碼),讓他啟動時自動登入。
但這你需要測試,因為不清楚dd-wrt的auth是自寫script,或是直接用PAM或其他內建模組來做的。
(auth-user-pass參數,需要server端用auth-user-pass-verify script才能使用)
您好 謝謝您花了這麼多時間幫我解釋...

因為這兩天又找了些..使用DD-WRT GUI方式建立 OPENVPN的教學..


我決定 自己先測試 兩個點互連成功後..再來測試3個點的互連..
在這之前..我先消化您寫的這些資訊..並且先準備週日的考試..

有什麼進度..我會回這個討論主題報告

剛才按照 這篇教學 做一個測試...

結果如下...



這樣算是連成功了嗎?

目前我是在ESXI上跑2套DD-WRT,
一套做OPENVPN測試 (192.168.28.9)
一套是跑PPTP VPN (192.168.28.2,用來方便操作另一邊的設備)

我這邊的環境是192.168.28.0/24
當OPENVPN SERVER的這台DD-WRT(192.168.28.9) 雖然按照教學開了DHCP SERVER..
幾乎除了區網內IP與PORT等基本參數外..都是照他的設定..
但我這邊區網內的PC都是自定虛擬IP並且是走AP出去的...
所以接下來我在兩台AP內都新增了 192.168.128.0/24 192.168.28.9 的路由後PC就可以連到192.168.128.1與2了..

目前可知的問題有三個需要解決..
1.但我不知道要如何連到OPENVPN CLIENT DD-WRT(192.168.5.3/192.168.128.2 沒開DHCP) 後的NAS...
另一邊的環境是192.168.5.0/24 也是都自定IP走 AP或PPTP CLIENT/DD-WRT出去...所以也不知怎麼連過來..
是否我要將原本給PPTP VPN用的路由 192.168.5.0/24 192.168.28.2 改成 192.168.5.0/24 192.168.28.9 ?
另一邊就把192.168.28.0/24 192.168.5.2 改成 192.168.28.0/24 192.168.5.3?

2.之後不管是跑PPTP VPN CLIENT/SERVER 或 OPENVPN CLIENT/SERVER 的DD-WRT
我都不打算開DHCP SERVER..PC要上網就走AP出去...

3.連線成功後 我這邊PC沒辦法用192.168.5.3來連到DD-WRT..得用192.168.128.2才行..
但在另一邊的PC就可以(用RDP 走PPTP VPN 測的)
1.你server端log上,並沒有出現連線異常的錯誤。加上看到他有在re-useing SSL/TLS context,連線應該是正常的。
但如果log出現「SIGUSR1[soft,ping-restart] received, process restarting」這樣的字串,那就有問題了。

2.我有找到openvpn site-to-site for ddwrt的教學
http://wadihzaatar.com/?p=11
建議您先用這個方式,把兩邊先用site-to-site建通道連起來。
(因為site-roaming遇到iroute,也就是client端後還有網段要給server跟其他client去連的除錯很難搞,除非網管很有這方面的經驗。直接先site-to-site把兩邊通道跟路由搞定,然後再開site-roaming給外部連線來用,問題反而會少很多)

這個範例作法我個人沒有ddwrt可以試,但基本上是ok的,您可以試試看。

另外要注意,他的作法裡比較奇怪的是,忘記把route參數寫進去,所以每次啟動openvpn會要自己加route進去。
而且vpn啟動並不會同時設定通道雙方的IP參數,導致後面還要make tun跟設定ip到tun0上。

下面我直接給site-to-site的設定檔範例,您可以直接取代掉
echo "
....
" > SiteA-SiteB.conf
中間的內容,請您依照自己的環境去改


Server端(放在固定IP或DDNS能用的點,如桃園):
dev-type tun
dev tun0
local local_public_IP <-本地Public IP ADDRESS。如果在防火牆內已經nat,請改用正確private ip位置。
proto udp
port 12345 <-喜歡用哪個Port請自己改
keepalive 10 360
ping-timer-rem
persist-tun
persist-key
secret static.key
ifconfig 192.168.99.62 192.168.99.61
cipher AES-256-CBC
route 192.168.5.0 255.255.255.0

Client端(放在沒有固定IP,或只有Private IP的點)
dev-type tun
dev tun0
proto udp
remote server_side_public_IP_address 12345 <=server端的IP跟port請自己填
keepalive 10 360
ping-timer-rem
persist-tun
persist-key
nobind
secret static.key
ifconfig 192.168.99.61 192.168.99.62
cipher AES-256-CBC
route 192.168.28.0 255.255.255.0

以上如果我弄錯你的路由位置的話,請自己對調route參數後面的網段。
另外如果都沒有問題,他後面「Create interfaces」「Create routes」這兩個步驟是不用做的。
啟動後應該就會直接看到出現tun0介面,還綁好IP跟網段


連起來後,先確認雙方互ping ok(如從server去ping 192.168.99.61,注意防火牆的阻擋)
有問題可能就是連線沒有成功,請去挖log找原因

然後再測後端互連有沒有問題(例如192.168.5.0/24內的某台機器ping192.168.28.0/24內的某台機器)
如果到這步驟有問題,基本上是firewall沒有設對,或路由有錯。
(例如192.168.5.0/24這邊內部PC gateway的那台機器上,沒有192.168.28.0/24的路由指向ddwrt。pptp那台ddwrt,也是要注意這件事)


之後在同一個ddwrt vm上再開一個site-roaming openvpn給外面PC/手機/平板使用,然後在server端
push "route 192.168.5.0 255.255.255.0"
push "route 192.168.28.0 255.255.255.0"

這樣問題會簡化很多。



PS:關於site-to-site,ddwrt的wiki還有一種直接bridge起來的方式,有興趣有閒可以自己再去看
http://www.dd-wrt.com/wiki/index.php/OpenVPN_-_Site-to-Site_Bridged_VPN_Between_Two_Routers

PS2:這方法會把設定檔放在暫存資料夾,也就是說缺點是ddwrt重開機可能設定就沒了。
(除非你拿到ddwrt能rw的root shell,把設定檔寫到一般位置裡)
如果一直搞不定,建議直接兩邊各架一台Linux vm裝openvpn,然後server這端的firewall做好port mapping(如把udp 12345跟site-roaming要用的port,都轉到openvpn linux server上)。
少了GUI在那邊亂簡化,搞不好反而會簡單點。
你好


你貼的這篇 我前面有看過..但沒連成功..
後來我知道我的問題在哪裡..但沒再去試這個方案...

基本上我還是會去使用GUI..只要搞懂那些功能參數就還算不難用..
就如同你說的..放到/tmp/openvpn內的資料夾與檔案在重開機後可能會清掉..
不然就是把要把CIFS資料夾或是裝個USB FLASH 掛到/tmp/openvpn內..
有機會我再用SCP放些檔案進去試看看..如果不會被清掉的話再來試看用config檔的方式..
畢竟要3台以上的OPENVPN要做SITE TO SITE的話..因為TUN與PORT的問題..
好像非用Daemon/config檔不可...


而我今天有再試過(之前那個方案)...區網內互連的問題..
我這邊不管路由怎麼設..都連不過去另外一邊內網的設備..
透過PPTP VPN 與RDP,測出另外一邊的PC本身加了靜態路由後就可以連到我這邊區網內的NAS..
應該就像你提到的..CLIENT 後的NAS 要給SERVER後或其他CLIENT去連會有很多問題..

不過下次我想用你貼的那篇 直接測 SITE TO SITE between 2 or more router 的方式..
所以最近會打算再建一台ESXI 放到朋友那邊的路由器後..再繼續做測試..
等到測試成功..再把老婆娘家那邊也改成OPENVPN連到我這邊來..

PS:最近SITE TO ITE PPTP VPN的狀況很不穩..
區網跟區網 常會連不到(單連ROUTER就沒問題)..要手動重開機....

(最近才知道網拍上有些二手機器是已具備做直通的能力..
加購8GB RAM 不含硬碟只要2600不到,之後會買個兩~三台當備品)
有興趣玩玩嗎?
Kaiens wrote:
有興趣玩玩嗎?


呵,我應該不用。

公司的系統就玩不完了。
個人架過最大的系統有20幾個點,用openvpn串成有備援的星狀site-to-site VPN tunnel,然後再掛pptp跟openvpn site-roaming with AD authencation上去給那個公司外面跑的人使用(笑)

其他我不敢講,但openvpn跟openswan我稍微略懂,可以盡我的能力來幫忙。

PS:port的問題,重點在「nobind」這個參數,還有指定server listen的port。
(尤其nobind,更是單點跑多個openvpn clients或clients+servers的關鍵)
openvpn預設的udp 1194,我幾乎從來不用的。
至於拿tcp port 443來玩,這我也幹過 ...

Kaiens wrote:
透過PPTP VPN 與RDP,測出另外一邊的PC本身加了靜態路由後就可以連到我這邊區網內的NAS..
應該就像你提到的..CLIENT 後的NAS 要給SERVER後或其他CLIENT去連會有很多問題..


這問題要改的是你PC default gateway的那一台,上面要有static route指到跑openvpn的ddwrt上。

client to client部份麻煩的是iroute能不能正常路由過去
(比如說京都當server,桃園跟大阪都是client,那大阪能不能連到桃園?)
這真的要實際測跟除錯才會知道。一般我會儘量避開這個問題。
你好

我想先跟你確認 Config for Site-to-Site SiteA-SiteB 的設定問題
我綜合了你教我的 與 http://wadihzaatar.com/?p=11 這邊部份的指令..

dev-type tun
dev tun0
local local_public_IP <-本地Public IP ADDRESS。 可浮動IP用ddns怎麼辦?
proto udp
port 28100
keepalive 10 360
ping-timer-rem
persist-tun
persist-key
secret /tmp/static.key
verb 3 <-我看有3 或5 這是做什麼用的?
ifconfig 192.168.128.11 192.168.128.9 <-如果我OPENVPN SERVER 要指定192.168.128.9 CLIENT要指定192.168.128.11 是否就是這樣寫?
cipher AES-256-CBC
route 192.168.5.0 255.255.255.0 <-這是把CLIENT端的路由加進來? 如果有第二台以上的Client 也照加嗎? 還是要再做一組config檔?
daemon

我另外有私訊給你..內容是關於 Multiple routed OpenVPN 的設定
Kaiens wrote:
dev-type tun
dev tun0
local local_public_IP <-本地Public IP ADDRESS。 可浮動IP用ddns怎麼辦?
proto udp
port 28100
keepalive 10 360
ping-timer-rem
persist-tun
persist-key
secret /tmp/static.key
verb 3 <-我看有3 或5 這是做什麼用的?
ifconfig 192.168.128.11 192.168.128.9 <-如果我OPENVPN SERVER 要指定192.168.128.9 CLIENT要指定192.168.128.11 是否就是這樣寫?
cipher AES-256-CBC
route 192.168.5.0 255.255.255.0 <-這是把CLIENT端的路由加進來? 如果有第二台以上的Client 也照加嗎? 還是要再做一組config檔?


1.如果是DDNS/浮動IP,可以放在防火牆後面mapping過來。Client端的remote用ddns host name就可以了。
2.verb是紀錄(log)詳細度的設定。
https://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html
"--verb n
Set output verbosity to n (default=1). Each level shows all info from the previous levels. Level 3 is recommended if you want a good summary of what's happening without being swamped by output.

0 -- No output except fatal errors.
1 to 4 -- Normal usage range.
5 -- Output R and W characters to the console for each packet read and write, uppercase is used for TCP/UDP packets and lowercase is used for TUN/TAP packets.
6 to 11 -- Debug info range (see errlevel.h for additional information on debug levels)."

一般來說設為3就很夠。當然不設跑預設值(記得也是3)也行。

3.ifconfig部份,不能照你的方式寫。
site-to-site的方式是建立point to point點對點的通道

也就是說,netmask一定是/30, 255.255.255.252。
且只有兩個ip位置可用,兩邊各佔用一個。

可用IP規則是除以4要餘1或2。也就是說192.168.128.11跟192.168.128.9互連會有問題。
(192.168.128.11無法使用,因為是192.168.128.8/30的廣播位置。192.168.128.9屬192.168.128.8/30網段)
但如果選192.168.128.9跟192.168.128.10,那就可以。

如果對這部份不清楚,可搜尋IP網路基礎相關的資料。


4.route參數,是在本機上加入哪些路由要走此vpn通道連出的意思。
也就是說,如果對方後面是192.168.5.0/24,那就要加route 192.168.5.0 255.255.255.0,這樣本地的openvpn起來後。才會導路由過去。
(相當範例中,通道建好後手動加路由的部份)

另外此參數可以多次下達,如

route 192.168.5.0 255.255.255.0
route 10.10.10.0 255.255.255.0

這兩句的意思是192.168.5.0/24跟10.10.10.0/24,都走這個通道出去。


5.跟4有關。
會建議你拆成兩部份,一個site-to-site負責各點互連,一個site-roaming給PC/手機/平板/NB連,原因也是路由會簡化好處理也好除錯很多。
如果照4的作法,在site-roaming起來之前,各site-to-site使用的ddwrt上,都應該要有正確的路由指向。
如果沒有,可以先停下來檢查問題,免得site-roaming又加進來把問題複雜化。

之後site-roaming起來時,只需要告訴site-roaming的clinet,哪些路由要走vpn通道回來
(如push "route 192.168.5.0 255.255.255.0"。 一樣可以多行來推多個網段)
接下來就是交給ddwrt上,之前site-to-site階段各已建好的靜態路由就可以了。
我看了你的私訊,感覺上您還是沒有弄清楚,弄的太過複雜了。


我們直接用實際例子來模擬架lab好了,這樣會比較簡單明瞭。



不好意思,小畫家隨手畫,粗糙請見諒。
這三個點ABC後面各有一個網段,192.168.1.0/24、192.168.2.0/24、192.168.3.0/24



首先,第一階段:site-to-site,這時候要在ABC之間建VPN通道出來。

假設A是固定IP(1.1.1.1),然後B是浮動IP(雖然拿到2.2.2.2的外部IP),C也是固定IP
那架構有兩種:1.C跟B都連回A,拓樸為人字形。 2.A-B、B-C、A-C互連,拓樸為三角形



我們先來看1.的人字架設方式。

A-B間的通道,設定檔如下
A端:
dev-type tun
dev tunAB
local 1.1.1.1
proto udp
port 11111
keepalive 10 360
ping-timer-rem
persist-tun
persist-key
secret AB.key
ifconfig 10.136.6.1 10.136.6.2
cipher AES-256-CBC
route 192.168.2.0 255.255.255.0

B端:
dev-type tun
dev tunBA
proto udp
remote 1.1.1.1 11111
keepalive 10 360
ping-timer-rem
persist-tun
persist-key
nobind
secret AB.key
ifconfig 10.136.6.2 10.136.6.1
cipher AES-256-CBC
route 192.168.1.0 255.255.255.0
route 192.168.3.0 255.255.255.0 <-注意這裡



A-C端的通道,設定檔如下
A端:
dev-type tun
dev tunAC
local 1.1.1.1
proto udp
port 22222
keepalive 10 360
ping-timer-rem
persist-tun
persist-key
secret AC.key
ifconfig 10.136.7.1 10.136.7.2
cipher AES-256-CBC
route 192.168.3.0 255.255.255.0

C端:
dev-type tun
dev tunCA
proto udp
remote 1.1.1.1 22222
keepalive 10 360
ping-timer-rem
persist-tun
persist-key
nobind
secret AC.key
ifconfig 10.136.7.2 10.136.7.1
cipher AES-256-CBC
route 192.168.1.0 255.255.255.0
route 192.168.2.0 255.255.255.0


路由部份我解釋一下。
A端問題不大,A-B跟A-C的通道起來時,都會自動加入192.168.2.0/24 via 10.136.6.2 (A-B通道)跟192.168.3.0/24 via 10.136.7.2(A-C通道),所以A可以連到B、C後面的網段
B比較特別的是把C後面的192.168.3.0/24也導回A,意思是B也可以透過A-B通道連到C
C也是一樣,走A-C通道連到B。

那何不在BC直接建通道,加route進去讓BC直連變成2.的三角形拓樸呢?
答案是可以的,請仿照上面同樣方式來建即可。
但要記得把A-B的B端route 192.168.3.0 255.255.255.0,跟A-C的C端route 192.168.2.0 255.255.255.0拿掉。

如果還要考慮備援(比如說A-B中斷,但B還是可以連到A),那就需要動態路由的支援了,這先暫時不討論。


再來萬一A本身是DDNS呢?
一個作法是不指定local參數(直接拿掉)。這樣openvpn會直接listen all network interface。

另外一個方式是把A拿到內部網段,local設為192.168.1.xxx的IP,然後前面A的位置放一台firewall作nat/port mapping過來。
這方法要注意,這台firewall由於一般來說也是192.168.1.0/24這網段的default gateway,所以要有
192.168.2.0/24 via 192.168.1.xxx (A的IP)
192.168.3.0/24 via 192.168.1.xxx
這兩條靜態路由存在



到這邊,site-to-site基礎建設都沒有問題的話,再來建site-roaming部份。
以A為server的設定檔,大致上如下。
local 1.1.1.1 <-ddns請參照上面ddns相關說明,一樣的作法
proto udp
port 33333
dev tunROAM
cipher AES-256-CBC
keepalive 10 60
ping-timer-rem
persist-tun
persist-key

ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
(上面四參數,請依照實際狀況修改增刪)

server 172.16.100.0 255.255.255.0 <-client連上時會配發的IP範圍。注意,實際配發給的netmask還是/30。另外server這端tunROAM的IP會是172.16.100.1

#redirect all traffic.
#push "redirect-gateway"
#
push "dhcp-option DNS 168.95.1.1"
#push "dhcp-option WINS 10.8.0.1"
push "route 192.168.1.0 255.255.255.0"
push "route 192.168.2.0 255.255.255.0"
push "route 192.168.3.0 255.255.255.0"

plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so openvpn
(這是認證的參數。ddwrt裡面不用設定這個)

client-cert-not-required
username-as-common-name
(上面2參數,請依照實際狀況刪除)

#client-config-dir ccd
(看情況使用,可針對某特定使用者自己增加參數)

#USE TLS HARDEN?
#tls-auth ta.key 0

#
#Log Level
#log-append /var/log/openvpn.log
verb 3
mute 5

這樣設定,只要PC/NB/手機/平板連上A這個site-roaming openvpn,就可以透過A-B跟A-C通道連到192.168.2.0/24跟192.168.3.0/24,還有A後面的192.168.1.0/24網段。


另外,當然也可以在B跟C上設這樣site-roaming的設定出來給當地外部使用者使用。


好,到這邊,防火牆的部份要開放的,只有
A: 1.1.1.1 udp port 11111、22222跟33333
(iptables -I INPUT -p udp --dport 11111 -j ACCEPT <-A-B通道
iptables -I INPUT -p udp --dport 22222 -j ACCEPT <- A-C通道
iptables -I INPUT -p udp --dport 33333 -j ACCEPT <-Site-Roaming)

B、C:沒有限制,只要能連出到A就好
(如果BC間要建通道或site-roaming server,那就一樣跟A一樣要加防火牆規則。


以上提供給您參考。
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!