Làm cách nào để thiết lập VPN PPTP trên máy chủ Ubuntu của riêng tôi?


16

Giả sử tôi có Máy chủ riêng ảo từ một người như Linode , đang chạy Ubuntu, làm cách nào để tôi dễ dàng thiết lập VPN PPTP để các máy khách Ubuntu có thể kết nối với nó?

Theo mặc định, Ubuntu cung cấp để kết nối với các mạng PPTP này. Tôi muốn thiết lập nó theo cách mà nó rất dễ dàng để kết nối (Tức là không cần cài đặt bất kỳ gói nào trên máy khách).

Câu trả lời:


28

Cài đặt máy chủ tối thiểu tuyệt đối

Dưới đây là các hướng dẫn tối thiểu tuyệt đối mà bạn cần để có được máy chủ PPTP VPN cơ bản chạy trên Ubuntu. Sau đó, khách hàng sẽ có thể VPN vào máy chủ và định tuyến lưu lượng truy cập internet của họ để nó đi qua máy chủ tới internet. Như mọi khi, tham khảo tài liệu đầy đủ để hiểu mọi thứ đang làm gì.

Đầu tiên, cài đặt phần mềm cần thiết:

sudo apt-get install pptpd

Thứ hai, kích hoạt ip_forwardtrong kernel cho IPv4 bằng cách bỏ dòng liên quan trong /etc/sysctl.conf :

sudo sed -i -r 's/^\s*#(net\.ipv4\.ip_forward=1.*)/\1/' /etc/sysctl.conf
# Reload the config file to have the change take effect immediately.
sudo -i sysctl -p

Thứ ba, kích hoạt NAT (nếu nó chưa được kích hoạt) để người dùng trên mạng VPN riêng có thể chuyển các gói của họ ra internet:

OUTIF=`/sbin/ip route show to exact 0/0 | sed -r 's/.*dev\s+(\S+).*/\1/'`
sudo -i iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE
# Enable NAT on boot from the rc.local script.
CMD="iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE"
sudo sed -i "\$i$CMD\n" /etc/rc.local

Lưu ý: Hướng dẫn này giả định rằng bạn không có tường lửa được cấu hình trên máy chủ. Nếu bạn có tường lửa trên máy chủ, chẳng hạn như UFW , hãy tham khảo tài liệu liên quan thay thế.

Thứ tư, đối với mỗi người dùng VPN, hãy tạo một tài khoản trong tệp / etc / ppp / chap-secret . Thay thế $USERbằng tên người dùng thực tế bạn muốn sử dụng cho người dùng VPN đó.

KEY=`head -c 20 /dev/urandom | sha1sum | nawk '{print $1}'`
echo "$USER pptpd $KEY *" | sudo tee -a /etc/ppp/chap-secrets

Cuối cùng, bạn đã sẵn sàng ...

Cấu hình máy khách

Trong applet Trình quản lý mạng , chọn Kết nối VPN → Định cấu hình VPN , sau đó nhấp vào Thêm . Trên màn hình tiếp theo, chọn PPTP cho loại VPN, sau đó bấm Tạo .

nhập mô tả hình ảnh ở đây

Trong cửa sổ này, nhập tên máy chủ hoặc IP của máy chủ của bạn cùng với tên người dùng và khóa mà bạn đã thêm vào tệp / etc / ppp / chap-secret trên máy chủ.

Bây giờ bấm vào Nâng cao .

nhập mô tả hình ảnh ở đây

Trong cửa sổ này, bật "Sử dụng mã hóa điểm-điểm (MPPE)" và chọn bảo mật 128 bit . Vô hiệu hóa việc sử dụng xác thực MSCHAP ( bật MSCHAPv2 ).

Cuối cùng, bấm Ok và sau đó Lưu để đóng cửa sổ trước.

Bây giờ bạn có thể kiểm tra kết nối VPN bằng cách đi tới ứng dụng Trình quản lý mạng → Kết nối VPN và chọn kết nối bạn vừa tạo. Đảm bảo rằng bạn nhận được thông báo nói rằng kết nối VPN đã thành công, sau đó duyệt đến trang web kiểm tra IP để xác minh rằng IP của bạn hiện hiển thị dưới dạng IP của máy chủ.

Nếu bạn nhận được thông báo nói rằng kết nối VPN đến máy chủ không thành công: trước tiên hãy xác minh rằng bạn đã nhập chính xác cài đặt máy khách; thứ hai, kiểm tra xem máy khách có kết nối mạng với cổng TCP 1723 trên máy chủ không; cuối cùng, kiểm tra tệp nhật ký / var / log / message trên máy chủ để biết thêm manh mối. Nếu kết nối VPN của bạn thành công, nhưng sau đó bạn không thể duyệt đến bất kỳ trang web nào từ máy khách, hãy tham khảo hướng dẫn chẩn đoán cực kỳ hữu ích này trên trang web pptpd.

Ghi chú

Nếu mạng cục bộ mà bạn kết nối đang sử dụng các mạng con 192.168.0.0/24 và 192.168.1.0/24, bạn sẽ gặp sự cố vì đó là những gì máy chủ PPTP sử dụng theo mặc định. Bạn sẽ phải cấu hình PPTP để sử dụng các mạng con khác nhau trong pptpd.conf .

Có rất nhiều thay đổi cấu hình khác mà bạn có thể muốn thực hiện. Ví dụ: tất cả các tra cứu tên miền của bạn vẫn sẽ được truy vấn bằng máy chủ DNS cục bộ của bạn thay vì đi qua máy chủ PPTP. Dành thời gian để đọc qua tài liệu đầy đủ để tìm hiểu cách thay đổi cài đặt này và nhiều tài liệu khác.


4

Hướng dẫn này tôi đã viết sẽ hướng dẫn bạn thông qua. Nó sẽ giúp bạn tránh những sai lầm phổ biến của những người sử dụng VPS.

Đầu tiên đăng nhập vào Bảng điều khiển VPS của bạn và kích hoạt TUN / TAPPPP . Nếu bạn không có tùy chọn như vậy, hãy liên hệ với ISP của bạn để kích hoạt tính năng này cho bạn.

nhập mô tả hình ảnh ở đây

Đầu tiên cài đặt gói này:

sudo apt-get install pptpd

Vì chúng tôi không muốn VPN của mình được công khai, chúng tôi sẽ tạo người dùng.
Tôi đang sử dụng VI, bạn có thể sử dụng NANO hoặc bất kỳ trình soạn thảo văn bản nào bạn thích

vi /etc/ppp/chap-secrets

Định dạng là

[username] [service] [password] [ip]

Thí dụ

john pptpd johnspassword *

* có nghĩa là quyền truy cập từ tất cả các địa chỉ IP được cho phép, chỉ xác định IP nếu bạn có địa chỉ tĩnh.

Chỉnh sửa cài đặt PPTPD

vi /etc/pptpd.conf

Tìm các cài đặt localip và remoteip. Xóa #(ký tự nhận xét) cho cả hai để các cài đặt này thực sự được nhận ra. Thay đổi localip thành IP máy chủ của bạn. Nếu bạn không biết IP máy chủ của mình, bạn có thể xem bảng điều khiển VPS của mình.

Remoteip về cơ bản là dải IP mà các máy khách (máy tính được kết nối với VPN của bạn) sẽ được chỉ định. Ví dụ: nếu bạn muốn có dải IP sau: 192.168.120.231-235, máy chủ VPN của bạn sẽ có thể gán 192.168.120.232, 192.168.120.233, 192.168.120.234 và 192.168.120.235 cho khách hàng. Tùy thuộc vào bạn những gì bạn muốn sử dụng cho lĩnh vực này.

Cá nhân tôi chọn cài đặt này:

localip 10.0.0.1
remoteip 10.0.0.100-200

Vì vậy, tôi có thể nhận được khoảng 200 khách hàng kết nối.

Thêm máy chủ DNS vào /etc/ppp/pptpd-options

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Bạn có thể thêm phần này vào cuối tệp hoặc tìm các dòng đó, bỏ ghi chú chúng và thay đổi IP thành DNS công cộng mong muốn của bạn.

Thiết lập chuyển tiếp

Điều quan trọng là phải bật chuyển tiếp IP trên máy chủ PPTP của bạn. Điều này sẽ cho phép bạn chuyển tiếp các gói giữa IP công cộng và IP riêng mà bạn thiết lập với PPTP. Chỉ cần chỉnh sửa /etc/sysctl.conf và thêm dòng sau nếu nó chưa tồn tại ở đó:

net.ipv4.ip_forward = 1

Để thay đổi hoạt động, hãy chạy sysctl -p

Tạo quy tắc NAT cho iptables

Đây là một phần quan trọng, nếu bạn đang sử dụng VPS, có thể bạn sẽ không sử dụng eth0 nhưng thay vào đó là venet0, bạn nên kiểm tra giao diện nào bạn có bằng cách chạy ifconfig

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save

Nếu bạn cũng muốn các khách hàng PPTP của mình nói chuyện với nhau, hãy thêm các quy tắc iptables sau:

iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface eth0 -j ACCEPT

Một lần nữa, bạn cần thay eth0 bằng venet0 nếu bạn đang sử dụng VPS.

Tôi khuyên bạn nên chạy

sudo iptables-save

Bây giờ máy chủ PPTP của bạn cũng hoạt động như một bộ định tuyến.

Bạn có thể chạy lệnh này để dịch vụ VPN khởi động khi khởi động

systemctl enable pptpd

Tôi khuyên bạn nên cài đặt iptables-kiên trì để các quy tắc duy trì ngay cả sau khi khởi động lại

sudo apt-get install -y iptables-persistent

Liên kết sẽ không đi bất cứ đâu, chủ yếu tôi sẽ không bao giờ phát hành tên miền này, thứ hai là máy chủ lưu trữ của tôi, thứ ba tin tôi: DI thực sự không thể chỉ hướng dẫn sao chép-dán ở đây quá dài.
Luka

Tôi sợ rằng chúng tôi không chấp nhận câu trả lời chỉ liên kết trên trang web này. Do đó, câu trả lời này có thể sẽ sớm bị xóa, như bạn có thể thấy, nó đã có trong hàng đánh giá (liên kết trong bình luận trước của tôi).

Zanna cảm ơn rất nhiều! @Paranoid Panda tốt thì bạn nên xóa câu trả lời ở trên của tôi có 2 lượt bình chọn vì nó có chứa liên kết: P
Luka

1
Vấn đề ở đây câu trả lời chỉ có liên kết. Điều này có nghĩa là nếu liên kết bị hỏng vì bất kỳ lý do gì (ngay cả khi liên kết được cho là sẽ không bao giờ ngừng hoạt động), câu trả lời sẽ trở nên không hợp lệ. Bây giờ câu trả lời đã trở nên tự phụ thuộc (và sử dụng liên kết để tham khảo), câu trả lời chỉ là tốt. Câu trả lời trong câu hỏi hiện đang bị xóa, trừ khi nó được điều chỉnh giống như bài đăng của bạn.
Kaz Wolfe

1
Bạn rất hoan nghênh, cảm ơn vì đã làm hướng dẫn. Lần sau đừng ngại đăng bài có độ dài này; nó hoàn toàn chấp nhận được
Zanna

3

Thực hiện theo hướng dẫn này: Máy chủ VPN PPTP với Ubuntu

  1. Trong phần chọn, chọn máy chủ OpenSSH - để quản lý máy từ xa - và chọn gói thủ công cho gói pptpd thực tế. Nếu bạn muốn có nhiều dịch vụ hơn, ví dụ nếu bạn muốn sử dụng máy tính cũng như một máy chủ web, tất nhiên bạn có thể chọn phần mềm bổ sung. Vì lý do bảo mật, tôi thường khuyên mọi người chỉ nên chạy một dịch vụ từ bên ngoài cho mỗi máy nếu được thiết lập trong môi trường quan trọng, nhưng thực sự điều đó tùy thuộc vào bạn.

  2. Trong lựa chọn thủ công điều hướng đến các gói không được cài đặt> mạng nơi bạn sẽ tìm thấy pptpd. Chọn nó và nhấn 'g' hai lần để cài đặt gói.

  3. Hãy để việc cài đặt kết thúc và khởi động lại hệ thống của bạn.

  4. SSH vào máy mới thiết lập của bạn và chạy sudo aptitude update && sudo aptitude safe-upgradetrước để cập nhật tất cả các gói. Khởi động lại nếu cần thiết.

  5. Mở tệp pptpd.conf: sudo nano /etc/pptpd.confĐiều chỉnh cài đặt IP ở dưới cùng theo nhu cầu của bạn. Trong IP cục bộ, bạn nhập IP vào mạng cục bộ của máy chủ VPN của mình (nếu bạn không biết nó gõ 'sudo ifconfig' và nó sẽ hiển thị cho bạn các giao diện mạng và IP được gán). Đối với vấn đề đó, tôi khuyên bạn nên thiết lập một IP tĩnh trong / etc / mạng / giao diện hoặc trong cấu hình bộ định tuyến của bạn.

  6. Nếu bạn muốn, bạn có thể thay đổi tên máy chủ trong /etc/ppp/pptpd-options

  7. Chỉ định tên người dùng và mật khẩu bạn muốn cấp quyền truy cập vào vpn của bạn : sudo nano /etc/ppp/chap-secrets. Nếu bạn đã thay đổi tên máy chủ trong bước trước khi đảm bảo bạn nhập cùng tên máy chủ ngay bây giờ bên dướiserver

    Thí dụ:

    # client        server  secret                  IP addresses
    eubolist   pptpd   myübersecretpassword   *
    

    Vì trong pptp không có bảo mật keyfile chỉ phụ thuộc vào mật khẩu. Đó là lý do tại sao bạn nên chọn một mật khẩu dài (ví dụ 32 ký tự). Bạn có thể tạo một mật khẩu như vậy ở đây.

  8. Bây giờ chúng ta cần thiết lập ip-masquerading: sudo nano /etc/rc.local

    Thêm các dòng sau phía trên dòng có nội dung 'exit 0'

    # PPTP IP forwarding
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    

    Tùy chọn, tôi khuyên bạn nên bảo vệ máy chủ SSH của mình trước các cuộc tấn công vũ phu:

    #SSH Brute Force Protection
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j
    

    RƠI VÃI

    (cũng được chèn ở trên 'exit 0')

    Bạn có thể phải thay đổi 'eth 0' sang giao diện khác, tùy thuộc vào giao diện nào được định cấu hình để kết nối với internet trên máy của bạn.

  9. Cuối cùng, bỏ ghi chú dòng này trong /etc/sysctl.conf:

    net.ipv4.ip_forward=1
    
  10. Khởi động lại

  11. Nếu máy chủ vpn của bạn không kết nối trực tiếp với internet, bạn có thể cần chuyển tiếp cổng 1723 TCP và GRE sang IP LAN của máy chủ vpn của bạn. Tham khảo hướng dẫn sử dụng bộ định tuyến của bạn hoặc đến portforward.com để biết hướng dẫn cụ thể của nhà cung cấp. Một lần nữa, bạn có thể cần gán một ip tĩnh /etc/network/interfaces.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.