需求: 首先我們的需求是這樣,我們在外地有三個分部,分別在上海,南京,無錫。這三個地方的同學們需要通過***訪問北京辦公室內網的某臺主機,同時在北京的我們也需要在家裏***進到辦公室裏邊進行訪問。 實現的方法是通過 open*** server 端指定客戶端的專有配置,配置裏邊可以指定特定客戶端的ip地址,之後我可以在iptables的FORWARD鏈裏邊,根據指定給客戶端的ip地址來指定訪問規則,規則的制定是這樣的,允許指定ip訪問特定主機,然後deny特定主機的所有訪問,之後放行其它 open*** 的ip地址訪問權限。 系統需求: 1,開啓iptables 2,開啓路由轉發功能 vi /etc/sysctl.conf --->把 net.ipv4.ip_forward = 0 ---> 把最後的0 改成 1 -->保存退出 ---> sysctl -p 3,open*** 安裝,網上教程一堆不贅述。 4,根據自己的需求生成對應的客戶端證書,我這個例子裏邊會生成四個,admin,shanghai,nanjing,wuxi 權限劃分如下: 上海,南京,無錫 --允許需要訪問內網的一臺機器上的服務 我們組的同事 --允許訪問內網所有的機器 在open*** server的配置文件中添加如下配置 client-config-dir ccd 然後在open*** 目錄下建立 ccd 文件夾,根據客戶端的名字建立對應的文件,*這裏要聲明一下,我的open*** 是證書和密碼雙重認證的,經過我的實驗如果想通過客戶端配置文件分配指定IP地址給客戶端的話,是需要證書認證的,用系統認證方式是行不通的,所以證書的名字和ccd文件裏邊文件名字一定要一致。只有證書和ccd 裏邊的文件名字一致時候,open*** 纔會把登錄用戶和ccd 配置文件聯繫起來。 文件裏邊指定的ip地址可以根據自己的實際需求指定,但是必須按照最下邊分配出來的指定。 文件ccd/shanghai: ifconfig-push 10.8.0.5 10.8.0.6 文件ccd/nanjing: ifconfig-push 10.8.0.9 10.8.0.10 文件ccd/wuxi: ifconfig-push 10.8.0.13 10.8.0.14 ifconfig-push中的每一對IP地址表示虛擬客戶端和服務器的IP端點。它們必須從連續的/30子網網段中獲取(這裏是/30表示xxx.xxx.xxx.xxx/30,即子網掩碼位數爲30),以便於與Windows客戶端和TAP-Windows驅動兼容。明確地說,每個端點的IP地址對的最後8位字節必須取自下面的集合: [ 1, 2] [ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18] [ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38] [ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58] [ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78] [ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98] [101,102] [105,106] [109,110] [113,114] [117,118] [121,122] [125,126] [129,130] [133,134] [137,138] [141,142] [145,146] [149,150] [153,154] [157,158] [161,162] [165,166] [169,170] [173,174] [177,178] [181,182] [185,186] [189,190] [193,194] [197,198] [201,202] [205,206] [209,210] [213,214] [217,218] [221,222] [225,226] [229,230] [233,234] 這些配置完成之後,我們需要配置iptables 的FORWARD 鏈了,規則如下邊的例子,這裏只列舉了一組,注意一定是先ACCEPT 需要訪問的網段,然後再DROP。最後需要一個ACCEPT all的規則來放行管理員的訪問權限。 iptables -I FORWARD -i tun0 -s 10.8.0.5 -d 192.xxx.xxx.x -j ACCEPT iptables -I FORWARD -i tun0 -s 10.8.0.5 -d 192.xxx.0.0/24 -j DROP iptables -A FORWARD -j ACCEP
這樣配置完成之後服務器端就ok了,然後就是客戶端的配置了,客戶端一定要有證書認證,服務器端才能下發指定的ip地址。以下的這兩個選項必有才行。
cert xxx.crt
key xxx.key
這樣小夥伴們就可以愉快的一起用open*** 玩耍了,這樣做如果客戶端衆多的話需要廢點力氣。