Centos 7'de OpenVPN'i iptables yerine Firewalld kullanacak şekilde yapılandırma


14

Centos 7'de OpenVPN'i kullanarak yapılandırmam gerekiyor firewalld.

Centos 6.5 iptables kullandım ve sadece aşağıdaki satırları eklemek zorunda kaldı /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.

Yanıtlar:


31

firewall-cmdKomutu kullanın .

Güvenlik duvarını varsayılan bölgede OpenVPN'e kadar açtığınızı varsayarsak, aşağıdaki komutları yerine getirin. Varsayılan olmayan bir bölgede çalıştırıyorsanız --zone=<zone>, komutlara ekleyin .

Not: publicHarici dış ağ bağdaştırıcınız için varsayılan bölge kullanırsanız , geri döngü arabiriminiz de ( firewalldçalıştırdığınız sürümüne bağlı olarak) maskelenebilir ve erişilen bir hizmet (mySQL gibi) çalıştırıyorsanız sorunlara neden olabilir yerel olarak.

İlk olarak, şu anda açık olanları listeleyin:

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

Ardından, openvpnhizmeti ekleyin :

# firewall-cmd --add-service openvpn
success

Hızlı bir kontrol:

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

Yukarıdaki izin verecek openvpn , şimdi test edebileceğiniz çalışmaya . Ancak, yeniden başlatma işlemlerinin uzun sürmez. Kalıcı hale getirmek için --permanentseçeneği ekleyin :

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

Bu son komutun bir sonraki yeniden başlatmaya kadar bağlantı noktasını açmadığından, her iki komutu da kullanmanız gerekir.

Son olarak, maskeli baloyu ekleyin:

# firewall-cmd --add-masquerade
success

Ve yeniden başlattıktan sonra kalıcı hale getirin:

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

Onayla:

# firewall-cmd --query-masquerade
yes

Gelen OpenVPN bağlantınız, Internet'e bakan bağlantınızdan farklı bir bölgede ise, maskenin ikinci sırada olması gerektiğini ve --zone=<zone>seçeneği --add-masqueradekomutlarla kullanmanız gerektiğini unutmayın .


Firewalld'de openvpn hizmetinin tanımının nasıl olduğunu nasıl anlarsınız? Örneğin, TCP 443 üzerinden openvpn'ye izin verdiğini nasıl doğrulayabilirsiniz?
Christopher

@Christopher - Servis dosyaları içinde bulunur /lib/firewalld/services/. Sizin durumunuzda, bu openvpn.xmldizinde olacaktır. Kullanıcı tanımlı hizmetler giriyor /etc/firewalld/services. Openvpn için varsayılan bağlantı noktası olduğunu unutmayın UDP/1194.
garethTheRed

1
Teşekkürler. Bir sorunum vardı ve bunun ateşli olabileceğini düşündüm. Yukarıdaki talimatlardan farklı olarak yaptığım tek şey, hizmet adı olarak "openvpn" yerine "https" kullanmaktı. Anlaşılan, sorunla ateşlenmedi. Sadece aptal oluyordum ve istemcimi "musluk" yerine "tun" kullanacak şekilde yapılandırmayı unuttum. Yukarıdaki talimatlar mükemmel şekilde çalışır.
Christopher

1
Tüm bölgeye maskeli balo eklemeyle ilgili bir sorun fark ettim. Bu, localhost üzerinde diğer hizmetleri çalıştırırken geri döngü arayüzüne bağlantılarımı NAT dener. Maskelemeyi sadece 10.8.0.0/16 ile sınırlamak istiyorum. Bunu nasıl yapabileceğine dair bir fikrin var mı?
Christopher

1
Bu hata bunun nedeni olabilir. Temel olarak, varsayılan bölgeniz bölge ise public, geri döngü arabirimini maskeler. Daha önce varsayılan bölgemi ayarladığım anlaşılıyor external, bu yüzden gördüğünüz sorunla hiç karşılaşmadım. Bunun işe yarayıp yaramadığını görmek için hizmetleri ve adaptörü başka bir bölgeye taşımayı deneyin. Bana haber verin :-)
garethTheRed
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.