OpenVPNd маршрутизация и пересылка

Я пытаюсь настроить демон OpenVPN в своей сети, но у меня есть некоторые проблемы с маршрутизацией iptables +.

Вот мой конфиг: - текущая локальная сеть находится на 192.168.2.0/24, демон OpenVPN работает на 192.168.2.251

Демон запускается просто отлично, но всякий раз, когда я инициирую соединение от клиентов, я вижу эти сообщения:

Mon Feb  5 17:41:59 2018 /sbin/ip link set dev tun0 up mtu 1500
Mon Feb  5 17:41:59 2018 /sbin/ip addr add dev tun0 local 10.8.0.6 peer 10.8.0.5
Mon Feb  5 17:41:59 2018 /sbin/ip route add 192.168.2.251/32 dev br0
RTNETLINK answers: File exists
Mon Feb  5 17:41:59 2018 ERROR: Linux route add command failed: external program exited with error status: 2
Mon Feb  5 17:41:59 2018 /sbin/ip route add 0.0.0.0/1 via 10.8.0.5
Mon Feb  5 17:41:59 2018 /sbin/ip route add 128.0.0.0/1 via 10.8.0.5
Mon Feb  5 17:41:59 2018 /sbin/ip route add 10.8.0.1/32 via 10.8.0.5

Во-первых, почему состояние ошибки 2, а во-вторых, почему я вижу добавление маршрута, когда push-маршрут комментируется в файле server.conf демона?

Это одна часть проблемы, другая часть - я не знаю, как "объединить" новые правила iptables с моими текущими правилами iptables? В настоящее время у меня есть эти правила в следующем порядке (основной сетевой адаптер - eth0, openvpn - tun0):

$IPT -F INPUT
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
<some other rules>
# VPNd rules
$IPT -A INPUT -i eth0 -p udp --dport 1199 -j ACCEPT #openVPNd runs on udp/1199
$IPT -A INPUT -i tun0 -j ACCEPT
$IPT -A FORWARD -i eth0 -j ACCEPT
$IPT -A OUTPUT -o tun0 -j ACCEPT
<some other rules>

net.ipv4.forwarding = 1 устанавливается в /etc/sysctl.conf

Теперь одно из следствий моих неправильных правил поведения состоит в том, что клиент, подключающийся к серверу vpn, не может подключаться к серверам за пределами моей локальной сети (192.168.2.0/24). Я бы хотел, чтобы мои клиенты могли подключаться где угодно, по моей ссылке vpn.

Я только что заметил, что приведенные выше сообщения об ошибках, похоже, отображаются только на клиентских хостах, которые используют мостовые сети (некоторые из моих клиентов также являются гипервизорами KVM). На OSX, например, и на моих виртуальных машинах он не отображается. Есть ли ссылка?

Что мне не хватает?

Вывод iptables -vL:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 3975  963K ACCEPT     all  --  eth0   any     anywhere             anywhere             state RELATED,ESTABLISHED
    5   308 ACCEPT     tcp  --  eth0   any     anywhere             anywhere             tcp dpt:ssh
    0     0 ACCEPT     tcp  --  eth0   any     anywhere             anywhere             tcp dpt:http
    0     0 ACCEPT     tcp  --  eth0   any     anywhere             anywhere             tcp dpt:https
    6   492 ACCEPT     udp  --  eth0   any     anywhere             anywhere             udp dpt:dmidi
    0     0 ACCEPT     all  --  tun0   any     anywhere             anywhere
    0     0 ACCEPT     tcp  --  eth0   any     anywhere             anywhere             tcp dpt:grcp
    0     0 ACCEPT     udp  --  eth0   any     anywhere             anywhere             udp dpt:25826
 2198  432K REJECT     all  --  eth0   any     anywhere             anywhere             reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  eth0   any     anywhere             anywhere

Chain OUTPUT (policy ACCEPT 1552 packets, 225K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  any    tun0    anywhere             anywhere

Вывод iptables -t nat -VL:

Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

(пусто?)

Вывод IP-адреса IP-адреса VPN-демона: [19:28:50|jfgratton@vpntst:~]: IP-адрес

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:5f:f8:44 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.251/24 brd 192.168.2.255 scope global eth0
       valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast 
state UNKNOWN qlen 100
    link/none
    inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever

Все клиенты находятся на одном /24 (192.168.2.0) . Два клиента, находясь в одной подсети, используют мостовые интерфейсы (br0 вместо физического, такого как eth0); Я не думаю, что это важно, но я хочу не оставить камня на камне, так сказать.

НОВЫЙ ВЫХОД:

[20:00:45|root@vpntst:~]: iptables -vL;iptables -t nat -vL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  212 17577 ACCEPT     all  --  eth0   any     anywhere             anywhere             state RELATED,ESTABLISHED
    1    60 ACCEPT     tcp  --  eth0   any     anywhere             anywhere             tcp dpt:ssh
    0     0 ACCEPT     tcp  --  eth0   any     anywhere             anywhere             tcp dpt:http
    0     0 ACCEPT     tcp  --  eth0   any     anywhere             anywhere             tcp dpt:https
    0     0 ACCEPT     udp  --  eth0   any     anywhere             anywhere             udp dpt:dmidi
    0     0 ACCEPT     all  --  tun0   any     anywhere             anywhere
    0     0 ACCEPT     tcp  --  eth0   any     anywhere             anywhere             tcp dpt:grcp
    0     0 ACCEPT     udp  --  eth0   any     anywhere             anywhere             udp dpt:25826
   13  2621 REJECT     all  --  eth0   any     anywhere             anywhere             reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  eth0   any     anywhere             anywhere

Chain OUTPUT (policy ACCEPT 144 packets, 16717 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  any    tun0    anywhere             anywhere
Chain PREROUTING (policy ACCEPT 20 packets, 3509 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 1 packets, 60 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 12 packets, 912 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 12 packets, 912 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  all  --  any    eth0    10.8.0.0/24          anywhere

И мой скрипт брандмауэра: #!/ Bin/bash IPT=/sbin/iptables

case "$1" in
start)
$IPT -F INPUT
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
# VPNd rules
$IPT -A INPUT -i eth0 -p udp --dport 1199 -j ACCEPT
$IPT -A INPUT -i tun0 -j ACCEPT
$IPT -A FORWARD -i eth0 -j ACCEPT
$IPT -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
$IPT -A OUTPUT -o tun0 -j ACCEPT

# Other rules
$IPT -A INPUT -i eth0 -p tcp --dport 9123 -j ACCEPT
$IPT -A INPUT -i eth0 -p udp --dport 25826 -j ACCEPT
$IPT -A INPUT -i eth0 -j REJECT
exit 0
;;
stop)
$IPT -F INPUT
exit 0
;;

* )
echo "Usage: /etc/init.d/firewall {start|stop}"
exit 1
;;
esac

Теперь я взял инструкции по настройке vpnd с https://chichivica.github.io/2017/08/02/Install-OpenVPN-on-Fedora-26/. Теперь я понимаю, что нет никакого упоминания о маршрутизации или что-то там. Одна вещь, которую я сделал, я был уверен, что это было необходимо - включить пересылку ipv4 в /etc/sysctl.conf. В остальном я строго следовал инструкциям по этой ссылке, больше ничего.

SERVER.CONF

Вот мой конфиг маршрутизации в server.conf. Я даже несколько минут назад пытался закомментировать последний толчок, к сожалению, тот же результат:

[9:03:07|root@vpntst:openvpn]: egrep "route|redirect" server.conf|egrep -v ^\#
;push "route 192.168.2.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
;route 192.168.40.128 255.255.255.248
;route 10.9.0.0 255.255.255.252
push "redirect-gateway def1 bypass-dhcp"

Этот сводит меня с ума:-)

1 ответ

Этот ответ не является ответом, действительно. Я не могу идти дальше, потому что мне нужно добавить статические маршруты на моем исходящем маршрутизаторе, что мне мешает сделать мой провайдер.

Дело закрыто, пока я не поменяю провайдера

Другие вопросы по тегам