Налаштування OpenVPN використовувати Firewalld замість iptables на Centos 7


14

Мені потрібно налаштувати OpenVPN на Centos 7 за допомогою firewalld.

Я використовував iptables на Centos 6.5 і мені потрібно було лише додати наступні рядки до /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.

Відповіді:


31

Використовуйте firewall-cmdкоманду.

Припустимо, що ви відкриваєте брандмауер до OpenVPN у зоні за замовчуванням, виконайте наступні команди. Якщо ви працюєте в зоні, що не використовується за замовчуванням, тоді додайте --zone=<zone>до команд.

Примітка. Якщо ви використовуєте publicзону за замовчуванням для зовнішнього мережевого адаптера, ваш інтерфейс зворотного циклу також може бути замаскований (залежно від firewalldзапущеної версії), що може спричинити проблеми, якщо ви користуєтесь службою (наприклад, mySQL), до якої звертаєтесь. локально.

Спочатку перерахуйте, що зараз відкрито:

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

Далі додайте openvpnпослугу:

# firewall-cmd --add-service openvpn
success

Швидка перевірка:

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

Сказане дозволить openvpnпрацювати, що ви зараз можете перевірити. Однак це не триватиме через перезавантаження. Щоб зробити його постійним, додайте --permanentпараметр:

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

Зауважте, що ця остання команда не відкриває порт до наступного перезавантаження, тому вам потрібно використовувати обидві команди.

Нарешті, додайте маскарад:

# firewall-cmd --add-masquerade
success

І зробіть його постійним після перезавантаження:

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

Підтвердьте це:

# firewall-cmd --query-masquerade
yes

Зауважте, що якщо ваше вхідне з'єднання OpenVPN знаходиться в іншій зоні до вашого Інтернет-з'єднання, маскарад повинен бути на останньому, і вам потрібно буде скористатися --zone=<zone>опцією з --add-masqueradeкомандами.


Як ви можете сказати, яке визначення служби openvpn є у firewalld? Наприклад, як можна перевірити, що він дозволяє openvpn через TCP 443?
Крістофер

@Christopher - Файли служб розміщені в /lib/firewalld/services/. У вашому випадку це буде openvpn.xmlв межах цього каталогу. Служби, визначені користувачем, заходять /etc/firewalld/services. Зверніть увагу, що порт openvpn за замовчуванням є UDP/1194.
garethTheRed

1
Спасибі. У мене виникли проблеми, і я подумав, що це може бути пожежна машина. Єдине, що я зробив інакше, ніж вищенаведені інструкції, було використовувати "https" замість "openvpn" як назву служби, яку потрібно додати. Виявилося, це не було проблемою у вирішенні проблем. Я просто був тупим і забув правильно налаштувати свого клієнта, щоб використовувати "tun" замість "tap". Наведені вище інструкції працюють чудово.
Крістофер

1
Я помітив проблему з додаванням маскараду до всієї зони. Це намагається NAT мої з'єднання з інтерфейсом петлі, коли я запускаю інші сервіси в localhost. Я б хотів обмежити маскарадування лише 10.8.0.0/16. Будь-яка ідея, як ви могли це зробити?
Крістофер

1
Ця помилка може бути причиною. В основному, якщо вашою зоною за замовчуванням є publicзона, то вона маскує інтерфейс зворотного зв'язку. Виявляється, я раніше встановив мою зону за замовчуванням такою external, тому ніколи не стикався з проблемою, яку ви бачите. Спробуйте перемістити служби та адаптер до іншої зони, щоб побачити, чи це допомагає. Повідомте мене :-)
garethTheRed
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.