Mengkonfigurasi OpenVPN untuk menggunakan Firewalld alih-alih iptables pada Centos 7

14

Saya perlu mengkonfigurasi OpenVPN pada Centos 7 menggunakan firewalld.

Saya menggunakan iptables di Centos 6.5 dan hanya perlu menambahkan baris berikut ke /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.
Fxbaez
sumber

Jawaban:

31

Gunakan firewall-cmdperintah.

Dengan asumsi Anda membuka firewall hingga OpenVPN di zona default, jalankan perintah berikut. Jika Anda menjalankannya di zona non-default, lalu tambahkan --zone=<zone>ke perintah.

Catatan: Jika Anda menggunakan publiczona default untuk adaptor jaringan menghadap eksternal Anda maka antarmuka loopback Anda juga dapat disamarkan (tergantung pada versi yang firewalldAnda jalankan) yang dapat menyebabkan masalah jika Anda menjalankan layanan (seperti mySQL) yang diakses secara lokal.

Pertama, daftarkan apa yang saat ini terbuka:

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

Selanjutnya, tambahkan openvpnlayanan:

# firewall-cmd --add-service openvpn
success

Pemeriksaan cepat:

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

Di atas akan memungkinkan openvpnuntuk bekerja, yang sekarang dapat Anda uji. Namun, itu tidak akan berakhir restart. Untuk membuatnya permanen, tambahkan --permanentopsi:

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

Perhatikan bahwa perintah terakhir ini tidak membuka port sampai restart berikutnya, jadi Anda harus menggunakan kedua perintah.

Akhirnya, tambahkan topeng:

# firewall-cmd --add-masquerade
success

Dan buat itu permanen setelah restart:

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

Konfirmasikan:

# firewall-cmd --query-masquerade
yes

Perhatikan bahwa jika koneksi OpenVPN Anda yang masuk berada di zona yang berbeda dengan koneksi Internet Anda yang berhadapan, penyamaran harus dilakukan pada yang terakhir dan Anda harus menggunakan --zone=<zone>opsi dengan --add-masqueradeperintah.

garethTheRed
sumber
Bagaimana Anda tahu apa definisi layanan openvpn di firewalld? Sebagai contoh, bagaimana Anda dapat memverifikasi bahwa itu memungkinkan openvpn melalui TCP 443?
Christopher
@Christopher - File layanan berada di /lib/firewalld/services/. Dalam kasus Anda, itu akan berada di openvpn.xmldalam direktori itu. Layanan yang ditentukan pengguna masuk /etc/firewalld/services. Perhatikan bahwa port default untuk openvpn adalah UDP/1194.
garethTheRed
1
Terima kasih. Saya mengalami masalah, dan berpikir mungkin firewalld. Satu-satunya hal yang saya lakukan berbeda dari instruksi di atas adalah menggunakan "https" daripada "openvpn" sebagai nama layanan untuk ditambahkan. Ternyata, itu bukan firewalld dengan masalah. Saya hanya bodoh, dan lupa mengkonfigurasi klien saya dengan benar untuk menggunakan "tun" bukannya "tap". Instruksi di atas bekerja dengan sempurna.
Christopher
1
Saya perhatikan ada masalah dengan menambahkan topeng ke seluruh zona. Ini mencoba untuk NAT koneksi saya ke antarmuka loopback, ketika saya menjalankan layanan lain di localhost. Saya ingin membatasi penyamaran menjadi 10.8.0.0/16. Adakah yang tahu bagaimana Anda bisa melakukan itu?
Christopher
1
Bug ini mungkin menjadi penyebabnya. Pada dasarnya, jika zona default Anda adalah publiczona maka ia menyamarkan antarmuka loopback. Ternyata sebelumnya saya telah menetapkan zona default saya external, jadi jangan pernah menghadapi masalah yang Anda lihat. Coba pindahkan layanan dan adaptor ke zona lain untuk melihat apakah itu membantu. Biarkan saya tahu :-)
garethTheRed