Định cấu hình OpenVPN để sử dụng Firewalld thay vì iptables trên Centos 7


14

Tôi cần định cấu hình OpenVPN trên Centos 7 bằng cách sử dụng firewalld.

Tôi đã sử dụng iptables trên Centos 6.5 và chỉ phải thêm các dòng sau vào /etc/sysconfig/iptables:

-A POSTROUTING -s "10.0.0.0/24" -o "wlan0" -j MASQUERADE 
-A FORWARD -p tcp -s 10.0.0.0/24 -d 0.0.0.0/0 -j ACCEPT 
run the command: echo 1 > /proc/sys/net/ipv4/ip_forward 
open port 443.

Câu trả lời:


31

Sử dụng firewall-cmdlệnh.

Giả sử bạn đang mở tường lửa lên OpenVPN trên vùng mặc định, hãy thực hiện các lệnh sau. Nếu bạn đang chạy nó trên một vùng không mặc định, sau đó thêm --zone=<zone>vào các lệnh.

Lưu ý: Nếu bạn sử dụng publicvùng mặc định cho bộ điều hợp mạng đối diện bên ngoài thì giao diện loopback của bạn cũng có thể bị giả mạo (phụ thuộc vào phiên bản firewalldbạn đang chạy) có thể gây ra sự cố nếu bạn đang chạy một dịch vụ (như myQuery) bị truy cập tại địa phương

Đầu tiên, liệt kê những gì hiện đang mở:

# firewall-cmd --list-services
http https ssh

Tiếp theo, thêm openvpndịch vụ:

# firewall-cmd --add-service openvpn
success

Kiểm tra nhanh:

# firewall-cmd --list-services
http https openvpn ssh

Ở trên sẽ cho phép openvpnlàm việc, mà bây giờ bạn có thể kiểm tra. Tuy nhiên, nó sẽ không được khởi động lại. Để làm cho nó vĩnh viễn, thêm --permanenttùy chọn:

# firewall-cmd --permanent --add-service openvpn`
success

Lưu ý rằng lệnh cuối cùng này không mở cổng cho đến lần khởi động lại tiếp theo, vì vậy bạn cần sử dụng cả hai lệnh.

Cuối cùng, thêm phần giả trang:

# firewall-cmd --add-masquerade
success

Và làm cho nó vĩnh viễn sau khi khởi động lại:

# firewall-cmd --permanent --add-masquerade
success

Xác nhận nó:

# firewall-cmd --query-masquerade
yes

Lưu ý rằng nếu kết nối OpenVPN đến của bạn nằm trong một khu vực khác với kết nối phải đối mặt với Internet của bạn thì việc giả trang sẽ ở phía sau và bạn sẽ cần sử dụng --zone=<zone>tùy chọn với các --add-masqueradelệnh.


Làm thế nào để bạn biết định nghĩa của dịch vụ openvpn là gì trong tường lửa? Ví dụ: làm thế nào bạn có thể xác minh rằng nó cho phép openvpn qua TCP 443?
Christopher

@Christopher - Các tệp dịch vụ được đặt trong /lib/firewalld/services/. Trong trường hợp của bạn, nó sẽ openvpn.xmlnằm trong thư mục đó. Người dùng xác định dịch vụ đi vào /etc/firewalld/services. Lưu ý rằng cổng mặc định cho openvpn là UDP/1194.
garethTheRed 4/03/2016

1
Cảm ơn. Tôi đã có một vấn đề, và nghĩ rằng nó có thể là tường lửa. Điều duy nhất tôi đã làm khác với các hướng dẫn ở trên là sử dụng "https" thay vì "openvpn" làm tên dịch vụ để thêm. Hóa ra, nó không phải là tường lửa với vấn đề. Tôi chỉ bị câm và quên cấu hình máy khách của mình đúng cách để sử dụng "tun" thay vì "tap". Các hướng dẫn trên hoạt động hoàn hảo.
Christopher

1
Tôi đã nhận thấy một vấn đề với việc thêm giả trang vào toàn bộ khu vực. Điều này cố gắng NAT kết nối của tôi với giao diện loopback, khi tôi đang chạy các dịch vụ khác trên localhost. Tôi muốn giới hạn việc giả mạo chỉ là 10.8.0.0/16. Bất cứ ý tưởng làm thế nào bạn có thể làm điều đó?
Christopher

1
Lỗi này có thể là nguyên nhân. Về cơ bản, nếu vùng mặc định của bạn là publicvùng thì nó sẽ giả mạo giao diện loopback. Hóa ra trước đây tôi đã đặt vùng mặc định của mình thành external, vì vậy không bao giờ phải đối mặt với vấn đề bạn đang gặp phải. Hãy thử di chuyển các dịch vụ và bộ chuyển đổi sang khu vực khác để xem nếu điều đó có ích. Hãy cho tôi biết :-)
garethTheRed
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.