linux的pptp服務器網絡配置

一、iptables的相關知識

1、這張圖很重要,讓我們明白iptables各個chain的流程關係

2、整個chain是從prerouting入,到postrouting出。

     input和output都是針對運行中的監聽進程而言,不是網卡,也不是主機。

     數據包到路由,路由通過路由表判斷數據包的目的地。如果目的地是本機,就把數據包轉給intput。如果目的地不是本機,則把數據包轉給forward處理,通過forward處理後,再轉給postrouting處理。

 

3、table:filter和nat

     filter,只操作與本機有關的數據包。相關的chain有input、output、forward

     nat,用於NAT地址轉換。只有數據流的第一個數據包被這個鏈匹配,後面的包會自動做相同的處理。相關的chain有prerouting、postrouting、output。

     iptables操作的默認是filter表,如果要操作nat加-t nat

 

4、nat的方式:DNAT、SNAT、MASQUERADE

     DNAT,目標地址轉換,即替換數據包的目標地址,可用於將訪問重定向到其他主機。需用--to-destination指定新目標地址。

     SNAT,源地址轉換,替換數據包的源地址,隱藏本地網絡,內網對外網的訪問。需用--to-source指定新源地址。

     MASQUERADE,也是源地址轉換,與SNAT不同的是,不需要指定新源地址,而是自動去取得主機的IP,因而系統開銷更大,適用於非固定IP的情況,如ADSL。

 

 

二、pptp的網絡

我們通過pptp來構建一個v*n,用於我們在家裏訪問單位的內部網絡。

可以理解爲三個物理網絡,家裏的無線路由(局域網),互聯網,單位的內網。

在單位內網與互聯網之間佈署pptp主機,在家裏通過pptp協議連接到pptp主機後,獲得一個新的IP,從而在構建了一個新的局域網。不管有多少人連接到了pptp主機,我們不會知道,也不能訪問他們。可以說在這個局域網裏只有兩臺機器,一個是家裏的電腦,一個是pptp主機,這也正是點對點的意思。

有了這個新的局域網,pptp主機就是我們的新網關,通過他就可以訪問到單位的內網了,當然需要在pptp主機上設置數據包在eth口與ppp口之間forward,以及設置SNAT或是DNAT。

 

 

三、pptp主機網絡設置

1、設置net.ipv4.ip_forward = 1允許轉發

2、允許pptp協議通過

iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -i eth0 -p gre -j ACCEPT

iptables -A OUTPUT -p tcp --dport 1723 -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT

3、設置在ppp與eth之間轉發,有多少客戶連接在pptp主機上就有多少ppp端口

iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp+ -j ACCEPT

4、在訪問單位內網時,將源地址,也就是連接到pptp主機後獲得的新IP轉換爲pptp主機的內網ip

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.16.1.1

只需做SNAT就好,數據返回到客戶機不需要再做設置,系統會自動完成。

也可做成目標地址轉換,即通過訪問pptp主機的ppp接口ip,來重定向到內網主機

iptables -t nat -A PREROUTING -s 192.168.0.0/24 -d 192.168.0.1 -j DNAT --to-destination 172.16.1.2

不管是SNAT還是DNAT都應做FORWARD。

 

 

iptables:

http://kuangkuang.blog.51cto.com/838/247230/

 

pptp安裝配置:

https://www.painso.com/linux-xen-openvz-pptp-services.html

http://www.51cto.com/art/200812/102721.htm

http://www.android100.org/html/201407/28/47493.html