Виртуальная машина Debian 8 на моем сервере ESXi работает на сервере OpenVPN, который работал нормально, пока я не решил добавить еще один интерфейс к машине с другим IP. Я хотел бы использовать один IP исключительно для трафика VPN, а не для администрирования сервера.
Это оба внешних IP-адреса. Поставщик, с которым я работаю, использует довольно странную конфигурацию, однако мне нужно настроить шлюз на IP-адрес вне подсети. И так как не многие ОС просто принимают это, я должен создать статический маршрут.
Вот как это выглядит:
root@ln-1:/etc/openvpn# ifconfig
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx
inet addr:92.xxx.xxx.xxx Bcast:92.xxx.xxx.xxx Mask:255.255.255.255
inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:271765 errors:0 dropped:10 overruns:0 frame:0
TX packets:4545 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:16520579 (15.7 MiB) TX bytes:1027263 (1003.1 KiB)
eth1 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:217.xxx.xxx.xxx Bcast:217.xxx.xxx.xxx Mask:255.255.255.255
inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:271152 errors:0 dropped:9 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:16727664 (15.9 MiB) TX bytes:1598 (1.5 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.0.1 P-t-P:10.8.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:45 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:2774 (2.7 KiB) TX bytes:0 (0.0 B)
И маршруты, я настроил маршрут к 91.xxx.xxx.xxx (который является шлюзом) на обоих интерфейсах, но я сделал значение по умолчанию на eth0, которое заставляет машины использовать этот по умолчанию, я думаю, но я хочу VPN-трафик проходит через eth1, используя тот же IP-адрес шлюза:
root@ln-1:/etc/openvpn# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 91.xxx.xxx.xxx 0.0.0.0 UG 0 0 0 eth0
10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
91.xxx.xxx.xxx 0.0.0.0 255.255.255.255 UH 0 0 0 eth1
91.xxx.xxx.xxx 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
И конфигурация iptables:
root@ln-1:/etc/openvpn# iptables-save
# Generated by iptables-save v1.4.21 on Tue May 9 00:08:15 2017
*filter
:INPUT DROP [8286:454500]
:FORWARD DROP [801:48621]
:OUTPUT ACCEPT [4648:980772]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT
-A FORWARD -i eth1 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -o eth1 -j ACCEPT
COMMIT
# Completed on Tue May 9 00:08:15 2017
# Generated by iptables-save v1.4.21 on Tue May 9 00:08:15 2017
*nat
:PREROUTING ACCEPT [19909:1034285]
:INPUT ACCEPT [54:2776]
:OUTPUT ACCEPT [144:10480]
:POSTROUTING ACCEPT [144:10480]
-A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE
COMMIT
# Completed on Tue May 9 00:08:15 2017
SSH Я хотел бы перейти через eth0, остальное VPN-трафик проходит через порт 443, а через порт 80 я использую настройку OpenVPN, чтобы ее было легко найти. Конфигурация OpenVPN включает в себя следующие строки:
local 217.xxx.xxx.xxx
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
Переадресация IP включена, и все работало до тех пор, пока я не захотел использовать eth0 для всего, за исключением VPN-трафика, и eth1 только для VPN-трафика.
Кажется, я не могу заставить это работать, я много искал, но не могу найти никого с подобной настройкой, который бы это решил. Любая помощь будет принята с благодарностью!
Если я пропустил что-то важное, пожалуйста, сообщите мне, и я добавлю это, конечно, также я новичок в фактическом размещении информации на этом сайте, пожалуйста, извините, если я делаю что-то не так.
РЕДАКТИРОВАТЬ 10 мая 2017 г. 22:07 CEST: У меня есть новая информация: Судя по всему, OpenVPN пытается маршрутизировать / пересылать с tun0 на eth0, я экспериментировал с журналированием iptables:
-A INPUT -m limit --limit 3/min -j LOG --log-prefix "iptables_INPUT_denied: " --log-level 4
-A FORWARD -m limit --limit 3/min -j LOG --log-prefix "iptables_FORWARD_denied: " --log-level 4
Который показал мне это:
May 10 21:20:15 ln-1 kernel: [176312.426411] iptables_FORWARD_denied: IN=tun0 OUT=eth0 MAC= SRC=10.8.0.6 DST=157.56.144.215 LEN=89 TOS=0x00 PREC=0x00 TTL=127 ID=1513 PROTO=UDP SPT=57959 DPT=3544 LEN=6
Я также удивлен, что вижу здесь PROTO=UDP
потому что и сервер, и клиент настроены на использование TCP.