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 ответ
Этот ответ не является ответом, действительно. Я не могу идти дальше, потому что мне нужно добавить статические маршруты на моем исходящем маршрутизаторе, что мне мешает сделать мой провайдер.
Дело закрыто, пока я не поменяю провайдера