2枚のnicを持つ計算機が外部と内部のゲートウエイ的な枠割を持っていて、それにWireGuardが載せられるか?

内部のネットワークにWireGuard専用マシンを用意して、ゲートウエイなマシンが外部からの特定ポートをそのWireGuardマシンに渡すならWireGuardと同じでいい。

2024y09m20d_005215280.png

それがゲートウエイマシンに内包したらできるのか?が発端.




.....色々試してみたが、、無理でした...
やりようがあるのだろうが、見つけられなかったのが正解かな.

なので上記図の左側について詳細を.

ゲートウエイ

ゲートウエイのipアドレス体系

デバイスipアドレスGWアドレス
ens192192.168.0.100192.168.0.1
ens22410.10.10.1-
[root@gate ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:70:ef:c7 brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    inet 192.168.0.100/24 brd 192.168.0.255 scope global dynamic noprefixroute ens192
       valid_lft 42980sec preferred_lft 42980sec
    inet6 fe80::20c:29ff:fe70:efc7/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:70:ef:d1 brd ff:ff:ff:ff:ff:ff
    altname enp19s0
    inet 10.10.10.1/24 brd 10.10.10.255 scope global noprefixroute ens224
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe70:efd1/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
 
[root@gate ~]# ip route
default via 192.168.0.1 dev ens192 proto dhcp src 192.168.0.100 metric 100
10.10.10.0/24 dev ens224 proto kernel scope link src 10.10.10.1 metric 101
192.168.0.0/24 dev ens192 proto kernel scope link src 192.168.0.100 metric 100
[root@gate ~]#

firewall-cmdで外向け(192.168.0.0/24)は external へ、内向け(10.10.10.0/24)は trusted に

[root@gate ~]# nmcli connection modify ens192 connection.zone external
[root@gate ~]# nmcli connection modify ens224 connection.zone trusted
[root@gate ~]# firewall-cmd --get-active-zones
external
  interfaces: ens192
trusted
  interfaces: ens224
[root@gate ~]# firewall-cmd --add-port=51820/udp --zone=external --permanent       <--- 外部のwireguard向けport:51820を開ける
[root@gate ~]# firewall-cmd --reload

ゲートウエイに届いた WireGuard への通信(port:51820)を内部の WireGuardマシン(10.10.10.2:51820)に転送させる

[root@gate ~]# firewall-cmd --zone=external --add-forward-port=port=51820:proto=udp:toport=51820:toaddr=10.10.10.2 --permanent
[root@gate ~]# firewall-cmd --reload
[root@gate ~]# firewall-cmd --list-all --zone=external
external (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: ssh
  ports: 51820/udp            <--- 外部からのwireguardポートを開ける
  protocols:
  forward: yes
  masquerade: yes
  forward-ports:
        port=51820:proto=udp:toport=51820:toaddr=10.10.10.2   <--- 受け取ったwireguardパケットを内部のwireguardマシンへ転送する
  source-ports:
  icmp-blocks:
  rich rules:
[root@gate ~]#

WireGuardの設定

WireGuardの通りだが再度.
マシン名 wg、ipアドレス 10.10.10.2、gw先 10.10.10.1

[root@gate ~]# ssh 10.10.10.2
 
[root@wg ~]# cat /etc/redhat-release
Rocky Linux release 9.4 (Blue Onyx)
[root@wg ~]# getenforce
Enforcing
[root@wg ~]# firewall-cmd --get-active-zones
public
  interfaces: ens192
[root@wg ~]# firewall-cmd --add-port=51820/udp --zone=public --permanent    <-- gateから転送されたwireguardパケットを受け取る
[root@wg ~]# firewall-cmd --reload

wireguardのインストールと設定(wg0を作ります)

[root@wg ~]# dnf install epel-release -y && dnf install wireguard-tools -y
 
[root@wg ~]# cd /etc/wireguard/
[root@wg wireguard]# umask 077
[root@wg wireguard]# wg genkey > privatekey
[root@wg wireguard]# wg pubkey < privatekey > publickey
[root@wg wireguard]# cat privatekey
gEWhEGQ/Sc9BZpVLRwTbaZaQ4ZITiVw1n2BZlr+a700=
[root@wg wireguard]# cat pubkey
PaTUqaQnVSDna13c3w1gpOQWklPrH/MRMWqdow2eeDY=
[root@wg wireguard]# vi wg0.conf
[Interface]
PrivateKey = gEWhEGQ/Sc9BZpVLRwTbaZaQ4ZITiVw1n2BZlr+a700=
Address = 172.16.0.1/32
ListenPort = 51820
[root@wg wireguard]# 
[root@wg wireguard]# ip addr show dev wg0 scope global
Device "wg0" does not exist.
 
[root@wg wireguard]# wg-quick up /etc/wireguard/wg0.conf
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 172.16.0.1/32 dev wg0
[#] ip link set mtu 1420 up dev wg0
[root@wg wireguard]#
 
(確認)
[root@wg wireguard]# ip addr show dev wg0 scope global
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 172.16.0.1/32 scope global wg0
       valid_lft forever preferred_lft forever
 
[root@wg wireguard]# wg-quick down /etc/wireguard/wg0.conf
[root@wg wireguard]# systemctl enable wg-quick@wg0      <--サービスの永続化

クライアント側

gateの前側にあるwindowsマシンにwireguardのクライアントをインストールして、クライアント側の公開鍵をwireguardサーバに登録する
2024y09m22d_223236204.png
ここではクライアント側の公開鍵は「mTXx9KZiBcf3SSfLiAmQTr6ZYqJh0ptP6DDCIdqubSE=」なので

[root@wg ~]# vi /etc/wireguard/wg0.conf
[Interface]
PrivateKey = gEWhEGQ/Sc9BZpVLRwTbaZaQ4ZITiVw1n2BZlr+a700=
Address = 172.16.0.1/32
ListenPort = 51820
PostUp = firewall-cmd --zone=public --add-masquerade; firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o ens192 -j ACCEPT; firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o ens192 -j MASQUERADE; firewall-cmd --add-port=51820/udp
PostDown = firewall-cmd --zone=public --remove-masquerade; firewall-cmd --direct --remove-rule ipv4 filter FORWARD 0 -i wg0 -o ens192 -j ACCEPT; firewall-cmd --direct --remove-rule ipv4 nat POSTROUTING 0 -o ens192 -j MASQUERADE; firewall-cmd --remove-port=51820/udp
 
# windows マシンの追加
[Peer]
PublicKey = mTXx9KZiBcf3SSfLiAmQTr6ZYqJh0ptP6DDCIdqubSE=
AllowedIPs = 172.16.0.2/32
 
[root@wg ~]# wg-quick down /etc/wireguard/wg0.conf
[root@wg ~]# wg-quick up   /etc/wireguard/wg0.conf
 
[root@wg ~]# wg
interface: wg0
  public key: PaTUqaQnVSDna13c3w1gpOQWklPrH/MRMWqdow2eeDY=
  private key: (hidden)
  listening port: 51820
 
peer: mTXx9KZiBcf3SSfLiAmQTr6ZYqJh0ptP6DDCIdqubSE=
  allowed ips: 172.16.0.2/32
 
[root@wg ~]# iptables -L FORWARD -v
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  wg0    ens192  anywhere             anywhere
 
[root@wg ~]# iptables -t nat -L POSTROUTING  -v
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 MASQUERADE  all  --  any    ens192  anywhere             anywhere
 
[root@wg ~]#

wireguardサーバで新規のwindowsクライアント向けのipを 172.16.0.2 としたので、それをwindows側に反映させる. あと相手先情報[Peer](wireguardサーバの情報)を載せる
2024y09m22d_225034568.png

あとはクライアントを有効にすれば繋がります

メモ

「systemctl start wg-quick@wg0」はselinuxに引っかかる.

[root@wg ~]# cat permissive-wireguard.cil
(typepermissive wireguard_t)
[root@wg ~]# semodule -i permissive-wireguard.cil

これでselinuxからのエラーを回避できます

「wg-quick up /etc/wireguard/wg0.conf」の後に「systemctl restart wg-quick@wg0」はエラーになります
「wg-quick down /etc/wireguard/wg0.conf」の後の「systemctl restart wg-quick@wg0」はok

最新の60件
2024-11-05 2024-11-04 2024-11-03 2024-11-02 2024-11-01 2024-10-29 2024-10-28 2024-10-27 2024-10-23 2024-10-18 2024-10-17 2024-10-15 2024-10-14 2024-10-13 2024-10-11 2024-10-10 2024-10-09 2024-10-08 2024-10-05 2024-10-04 2024-10-03 2024-10-02 2024-10-01 2024-09-30 2024-09-29 2024-09-28 2024-09-27 2024-09-22
  • WireGuard/memo
2024-09-20 2024-09-17 2024-09-12 2024-09-09 2024-09-08 2024-09-06 2024-09-05 2024-09-04 2024-09-01 2024-08-31 2024-08-28

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-09-22 (日) 23:38:41