Назад | Перейти на главную страницу

Настройте firewalld для OpenVPN (сервер-мост) в Fedora 20

Я установил сервер OpenVPN (серверный мост) на Fedora 20, но не могу заставить его работать. Я почти уверен, что это проблема с брандмауэром.

Я пытаюсь подключиться с помощью клиента OSX, но я могу подключиться (просто подключиться к VPN-серверу без доступа ни к чему) до того, как мост будет настроен на сервере, однако после настройки интерфейса моста (используя этот скрипт), то я больше не могу подключиться. Я настроил его как серверный мост, следуя этим инструкциям из Fedora и OpenVPN Ethernet-мост.

Конфигурация брандмауэра объясняется с помощью iptables:

iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT

Однако в Fedora 20 по умолчанию установлен firewalld, поэтому может ли кто-нибудь сказать мне эквивалентные команды, используя firewall-cmd ? Я прочитал гид Firewalld, но мне непонятно, как этого добиться (я разработчик, а не сисадмин).

Я знаю, что могу установить iptables, но хочу, чтобы он работал с firewalld.

ОБНОВИТЬ: После некоторого чтения на firewall-cmd man, я попытался применить предыдущие команды, используя --passthroughвариант, то есть:

# firewall-cmd --permanent --direct --passthrough ipv4 -A FORWARD -i br0 -j ACCEPT
# firewall-cmd --permanent --direct --passthrough ipv4 -A INPUT -i br0 -j ACCEPT
# firewall-cmd --permanent --direct --passthrough ipv4 -A FORWARD -i br0 -j ACCEPT

Команды успешно выполняются, но не работает, тоже пробовал использовать eb вместо того ipv4 с тем же результатом.

В ifconfig вывод выглядит примерно так:

br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.40  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::c9:aff:fe02:d953  prefixlen 64  scopeid 0x20<link>
        ether 02:c9:09:02:d9:53  txqueuelen 0  (Ethernet)
        RX packets 11276  bytes 1374285 (1.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 899  bytes 240110 (234.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500
        inet6 fe80::c9:afa:fe02:d953  prefixlen 64  scopeid 0x20<link>
        ether 03:c9:0a:02:d9:53  txqueuelen 1000  (Ethernet)
        RX packets 13548  bytes 1942379 (1.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1162  bytes 269258 (262.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 117  base 0xc000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 16436
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 6883  bytes 2061608 (1.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6883  bytes 2061608 (1.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

p2p0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet6 fe80::9831:16ff:fe81:3658  prefixlen 64  scopeid 0x20<link>
        ether 9a:3b:16:84:36:58  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tap0: flags=4355<UP,BROADCAST,PROMISC,MULTICAST>  mtu 1500
        ether d6:6c:20:12:f3:b6  txqueuelen 100  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.41  netmask 255.255.255.0  broadcast 0.0.0.0
        inet6 fe80::9a5b:16ff:fe81:3658  prefixlen 64  scopeid 0x20<link>
        ether 98:3b:11:81:36:58  txqueuelen 1000  (Ethernet)
        RX packets 2643  bytes 230523 (225.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5512  bytes 1726039 (1.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

В firewalld уже настроены некоторые службы, которые можно увидеть с помощью:

firewall-cmd --get-services

(Файл конфигурации /usr/lib/firewalld/services/openvpn.xml)

Если вы видите openvpn как уже доступную службу, вы можете включить ее с помощью:

firewall-cmd --add-service openvpn

Ответ на мой первоначальный вопрос:

# firewall-cmd --permanent --direct --passthrough ipv4 -A FORWARD -i br0 -j ACCEPT
# firewall-cmd --permanent --direct --passthrough ipv4 -A INPUT -i br0 -j ACCEPT
# firewall-cmd --permanent --direct --passthrough ipv4 -A FORWARD -i br0 -j ACCEPT

Затем, если вы выполните:

# firewall-cmd --permanent  --direct --get-all-passthroughs

Вы получите это:

ipv4 -A INPUT -i tap0 -j ACCEPT
ipv4 -A INPUT -i br0 -j ACCEPT
ipv4 -A FORWARD -i br0 -j ACCEPT

Однако что-то все еще не так, я не могу подключиться к VPN-серверу, поэтому любая идея / подсказка будет приветствоваться.