Невозможно настроить WireGuard для использования вторичного IP-адреса вместо основного IP-адреса сервера

Настройка

Основной интерфейс Ethernet моего сервера - enp8s0 , имеет один общедоступный IP-адрес ( 116.202.221.254 - основной IP-адрес сервера), и вот как он настроен.

# ip addr show enp8s0

2: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether a8:a1:59:06:e6:6c brd ff:ff:ff:ff:ff:ff
    inet 116.202.221.254/26 brd 116.202.221.255 scope global enp8s0
       valid_lft forever preferred_lft forever
    inet6 2a01:4f8:241:55c1::2/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::aaa1:59ff:fe06:e66c/64 scope link 
       valid_lft forever preferred_lft forever

Маршрут:

# ip route show

default via 116.202.221.193 dev enp8s0 onlink 
10.103.213.2 dev wg0 scope link 
116.202.221.192/26 via 116.202.221.193 dev enp8s0 
116.202.221.192/26 dev enp8s0 proto kernel scope link src 116.202.221.254 

Содержимое файла: / etc / network / interfaces

auto lo
iface lo inet loopback
iface lo inet6 loopback

auto enp8s0
iface enp8s0 inet static
  address 116.202.221.254
  netmask 255.255.255.192
  gateway 116.202.221.193
  # route 116.202.221.192/26 via 116.202.221.193
  up route add -net 116.202.221.192 netmask 255.255.255.192 gw 116.202.221.193 dev enp8s0

iface enp8s0 inet6 static
  address 2a01:4f8:241:55c1::2
  netmask 64
  gateway fe80::1

Затем я запросил дополнительный общедоступный IP-адрес ( 116.202.221.202 ) для моего сервер, и вот как я его настроил.

Добавьте дополнительный IP-адрес к основному интерфейсу / устройству enp8s0 :

# ip address add 116.202.221.202/32 dev enp8s0

Добавьте эти строки в конфигурацию enp8s0 в ] / etc / network / interfaces :

up ip address add 116.202.221.202/32 dev enp8s0
down ip address del 116.202.221.202/32 dev enp8s0

Примените изменения с немедленным вступлением в силу:

# ip address flush enp8s0 && systemctl restart networking

Проблема

Весь интернет-трафик, исходящий с сервера, кажется, идет через основной IP-адрес 116.202 .221.254 . Так, например, если я просматриваю Интернет через сервер, мой IP-адрес будет отображаться как 116.202.221.254 .

Таким образом, даже если я настрою свои инструменты для использования дополнительного / вторичного IP-адреса 116.202.221.202 они, похоже, исходят из 116.202.221.254 .

Как мне настроить мой сервер так, чтобы два IP-адреса обрабатывались индивидуально (не были связаны, как сейчас) и есть отдельные маршруты?

Контекст

У меня есть веб-сайт на сервере, использующий основной IP-адрес 116.202.221.254 .

Я пытаюсь настроить WireGuard VPN на сервере (для защиты моей личности и преодоления цензуры) для использования вторичного IP-адреса 116.202.221.202 , но вместо этого после настройки и настройки я все еще смотрю в Интернет как 116.202.221.254 .

Как мне настроить мой сервер так, чтобы моя VPN использовала вместо него 116.202.221.202 ?


My WireGuard VP Конфигурация N

(Для получения дополнительной информации. Я следовал этому руководству: https://www.linode.com/docs/networking/vpn/set-up-wireguard-vpn-on-debian/ )

Конфигурация сервера WireGuard: /etc/wireguard/wg0.conf

[Interface]
PrivateKey = SERVER_PRIVATE_KEY
Address = 10.103.213.1/32
ListenPort = 51208
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o enp8s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o enp8s0 -j MASQUERADE
SaveConfig = false

# Macbook Pro
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.103.213.2/32

Конфигурация клиента WireGuard: /etc/wireguard/wg0.conf

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.103.213.2/32
ListenPort = 51208
DNS = 8.8.8.8, 8.8.4.4, 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = 116.202.221.202:51208
AllowedIPs = 0.0.0.0/0

Что мне не хватает? Как это исправить?

Я изо всех сил старался понять каждый шаг, но это все еще много, и я знаю, что мне не хватает чего-то, связанного с маршрутами или правилами iptables . Но соответствующую информацию в Интернете очень сложно проанализировать, учитывая мои текущие знания, и я не смог найти решение, несмотря на то, что работал над этим в течение 2 дней.

Любая помощь приветствуется. Пожалуйста, постарайтесь дать как можно более подробную информацию. Спасибо!

0
задан 25 April 2020 в 03:51
1 ответ

Если приложение не указывает системе, через какой IP-адрес должен проходить исходящий трафик, сервер будет использовать IP-адрес по умолчанию (основной) - по крайней мере, в моем понимании.

И поскольку похоже, что в WireGuard нет настройки, указывающей ему использовать определенный общедоступный IP-адрес, нам нужно полагаться на iptables или ip route .

Добрая душа на IRC-канале #wireguard помогла мне со значениями PostUp и PostDown на сервере wg0.conf config, который выполнит то, что мне нужно.

PostUp = iptables -t nat -A POSTROUTING -m mark --mark 0xCA6C/0xFFFFFFFF -j SNAT --to-source 116.202.221.202; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.103.213.0/24 -o enp8s0 -j SNAT --to-source 116.202.221.202

Post Down = iptables -t nat -D POSTROUTING -m mark --mark 0xCA6C/0xFFFFFFFF -j SNAT --to-source 116.202.221.202; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.103.213.0/24 -o enp8s0 -j SNAT --to-source 116.202.221.202

Это тоже работает, но НЕ ИДЕАЛЬНО, как мне сказали ( - отметка в приведенных выше командах может нацеливаться на трафик, специфичный для WG, а вместо этого он специфичен для исходного IP-адреса - по крайней мере, это как я это понял):

PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.103.213.0/24 -o enp8s0 -j SNAT --to-source 116.202.221.202; iptables -A FORWARD -o wg0 -j ACCEPT

PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.103.213.0/24 -o enp8s0 -j SNAT --to-source 116.202.221.202; iptables -D FORWARD -o wg0 -j ACCEPT
1
ответ дан 25 April 2020 в 01:07

Теги

Похожие вопросы