独自のリモートオフィスネットワークを構築し、wgレコードのオフラインインストールを強制します

時々、人々は会社にいなくて、一時的に物事を処理するために会社のコンピュータをリモートにする必要があります。会社のコンピュータはイントラネット上にあり、自宅から直接アクセスすることはできません。通常、QQなどのリモートアシスタンスをサポートするツールを使用しますが、これにはリクエストの開始を支援する誰かが必要です。無人リモート操作をサポートする無料のソフトウェアもありますが、通常は速度が制限されており、ピーク期間がフリーズすることがよくあります。たまたま会社には無料のトラフィックが多いAlibabaCloudサーバーがあり、これを使用してwgサービスをインストールできます。その後、会社のイントラネットコンピューターと自宅のコンピューターをクライアントとして接続して通信できます。

会社のAlibabaCloudサーバーで使用されるcentos7 system.kernelバージョン:

#uname -r3.10.0-1160.15.2.el7.x86_64

次の手順を使用してインストールできます。

#!/ bin / bash

#判断システム
if [!-e '/ etc / redhat-release']; その後
echo "centos7のみをサポートします"
出口
あります
if [-n "$(grep '6 \。' / etc / redhat-release)"]; then
echo "centos7のみをサポートします"
出口
あります



#カーネルの更新
update_kernel(){

    yum -y install epel-release curl
    sed -i "0、/ enabled = 0 / s // enabled = 1 /" /etc/yum.repos.d/epel.repo
    yum remove -y kernel-devel
    rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
    yum --disablerepo = "*" --enablerepo = "elrepo-kernel"リストが利用可能
    yum -y --enablerepo = elrepo-kernel install kernel-ml
    sed -i "s / GRUB_DEFAULT = saved / GRUB_DEFAULT = 0 /" / etc / default / grub
    grub2-mkconfig -o /boot/grub2/grub.cfg
    wget https://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-devel-4.19.1-1.el7.elrepo.x86_64.rpm
    rpm -ivh kernel-ml-devel-4.19.1-1.el7.elrepo.x86_64.rpm
    yum -y --enablerepo = elrepo-kernel install kernel-ml-devel
    read -p "VPSを再起動する必要があります。スクリプトを再度実行して、wireguardのインストールを選択します。今すぐ再起動しますか?[Y / n]:" yn
	[-z "$ {yn}"] && yn = "y"
	if [[$ yn == [Yy]]]; その後
		echo-e「VPSが再起動しています...」
		リブート
	あります
}

#ランダムポートを生成
rand(){
    最小= 1ドル
    max = $(($ 2- $ min + 1))
    num = $(cat / dev / urandom | head -n 10 | cksum | awk -F '' '{print $ 1}')
    エコー$(($ num%$ max + $ min))  
}

wireguard_update(){
    yum update -y wireguard-dkmswireguard-tools
    エコー「更新が完了しました」
}

wireguard_remove(){
    wg-クイックダウンwg0
    yum remove -y wireguard-dkmswireguard-tools
    rm -rf / etc / wireguard /
    echo "アンインストールが完了しました"
}

config_client(){
cat> /etc/wireguard/client.conf <<-EOF
[インターフェース]
PrivateKey = $ c1
アドレス= 10.0.0.2 / 24 
DNS = 114.114.114.114
MTU = 1420

[ピア]
PublicKey = $ s2
エンドポイント= $ serverip:$ port
AllowedIPs = 0.0.0.0/0、::0/0
PersistentKeepalive = 25
EOF

}

#centos7Wireguardをインストールする
wireguard_install(){
    curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
    yum install -y dkms gcc-c ++ gcc-gfortran glibc-headers glibc-devel libquadmath-devel libtool systemtap systemtap-devel
    yum -y install wireguard-dkmswireguard-tools
    yum -y install qrencode
    mkdir / etc / wireguard
    cd / etc / wireguard
    wg genkey | ティーsprivatekey | wg pubkey> spublickey
    genkeyによって| ティーcprivatekey | pubkey> cpublickeyによって
    s1 = $(cat sprivatekey)
    s2 = $(cat spublickey)
    c1 = $(cat cprivatekey)
    c2 = $(cat cpublickey)
    serverip = $(curl ipv4.icanhazip.com)
    ポート= $(ランド10000 60000)
    eth = $(ls / sys / class / net | awk '/ ^ e / {print}')
    chmod 777 -R / etc / wireguard
    systemctl stopfirewalld
    systemctl disablefirewalld
    yum install -y iptables-services 
    systemctl enable iptables 
    systemctl start iptables 
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -F
    service iptables save
    service iptables restart
    エコー1> / proc / sys / net / ipv4 / ip_forward
    echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
    sysctl -p
cat> /etc/wireguard/wg0.conf <<-EOF
[インターフェース]
PrivateKey = $ s1
アドレス= 10.0.0.1 / 24 
PostUp = echo 1> / proc / sys / net / ipv4 / ip_forward; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o $ eth-jマスカレード
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o $ eth -j MASQUERADE
ListenPort = $ port
DNS = 114.114.114
MTU = 1420

[ピア]
PublicKey = $ c2
AllowedIPs = 10.0.0.2/24
EOF

    config_client
    wg-クイックアップwg0
    systemctl enable wg-quick @ wg0
    content = $(cat /etc/wireguard/client.conf)
    echo "コンピューター側でclient.confをダウンロードしてください。ソフトウェアを直接使用して、モバイル側でコードをスキャンできます。"
    エコー "$ {content}" | qrencode -o --- t UTF8
}
ユーザーを追加する(){
    echo -e "\ 033 [37; 41m新しいユーザーに名前を付け、既存のユーザーで繰り返すことはできません\ 033 [0m"
    read -p "ユーザー名を入力してください:" newname
    cd / etc / wireguard /
    cp client.conf $ newname.conf
    wg genkey | ティーテンプリキー| wg pubkey> tempubkey
    ipnum = $(grep Allowed /etc/wireguard/wg0.conf | tail -1 | awk -F '[./]' '{print $ 6}')
    néwn= $(($#{10} ipnum +1))
    sed -i's%^ PrivateKey。* $% '"PrivateKey = $(cat temprikey)"'% '$ newname.conf
    sed -i's%^ Address。* $% '"Address = 10.0.0。$ newnum \ / 24"'% '$ newname.conf

cat >> /etc/wireguard/wg0.conf <<-EOF
[ピア]
PublicKey = $(cat tempubkey)
AllowedIPs = 10.0.0。$ newnum / 24
EOF
    wg set wg0 peer $(cat tempubkey)allowed-ips10.0.0。$ newnum / 32
    echo -e "\ 033 [37; 41mが追加されました、ファイル:/etc/wireguard/$newname.conf \ 033 [0m"
    rm -f temprikey tempubkey
}
#スタートメニュー
スタートメニュー(){
    晴れ
    エコー "========================="
    echo "はじめに:CentOS7に適用可能"
    エコー「作者:atrandys」
    エコー「ウェブサイト:www.atrandys.com」
    エコー「Youtube:atrandys」
    エコー "========================="
    echo "1。システムカーネルのアップグレード"
    echo "2.wireguardをインストールする"
    echo "3。ワイヤーガードのアップグレード"
    echo "4.wireguardのアンインストール"
    echo "5。クライアントのQRコードを表示する"
    echo "6。ユーザーを増やす"
    echo "0。終了スクリプト"
    エコー
    -p「数字を入力してください:」を読んでください。
    ケース「$ num」
    	1)
	update_kernel
	;;
	2)
	wireguard_install
	;;
	3)
	wireguard_update
	;;
	4)
	wireguard_remove
	;;
	5)
	content = $(cat /etc/wireguard/client.conf)
    	エコー "$ {content}" | qrencode -o --- t UTF8
	;;
	6)
	ユーザーを追加する
	;;
	0)
	出口1
	;;
	*)
	晴れ
	echo「正しい番号を入力してください」
	5秒寝る
	スタートメニュー
	;;
    esac
}

スタートメニュー

上記のコードをinstall_wireguard.shなどのスクリプトファイルにコピーし、ファイルに実行可能アクセス許可を追加します。rootユーザーまたはsudoを使用してスクリプトファイルを実行します。

#。/ install_wireguard.sh 
=========================
 はじめに:CentOS7に適しています
 著者:atrandys
 ウェブサイト:www.atrandys.com
 Youtube:発見
=========================
1.システムカーネルをアップグレードします
2.ワイヤーガードをインストールします
3.ワイヤーガードをアップグレードします
4.Wireguardをアンインストールします
5.クライアントのQRコードを表示します
6.ユーザーを増やす
0.スクリプトを終了します

番号を入力してください:2

メニュー2がwireguardのインストールであることを確認し、2を入力してwgのインストールを開始します。

スクリプトの実行後、systemctl status wg-quick @ wg0を実行して、インストールが成功したかどうか確認します。

#systemctl status wg-quick @ wg0
wg-quick @ wg0.service -wg0のwg-quick(8)経由のWireGuard
   ロード済み:ロード済み(/usr/lib/systemd/system/[email protected];有効;ベンダープリセット:無効)
   アクティブ:アクティブ(終了)2021-03-12 10 31:12CST以降; 44秒前
     ドキュメント:man:wg-quick(8)
           man:wg(8)
           https://www.wireguard.com/
           https://www.wireguard.com/quickstart/
           https://git.zx2c4.com/ wireguard-tools / about / src / man / wg-quick.8
           https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
  プロセス:28364 ExecStart = / usr / bin / wg-クイックアップ%i(code =
 exited 、status = 0 / SUCCESS)メインPID:28364(code = exited、status = 0 / SUCCESS)

アクティブと表示されている場合は、インストールが成功していることを意味します。

次に、クライアント構成ファイルを生成できます。

または、install_wireguard.sh実行して、ユーザーを増やすオプションであるディレクトリ入力6を確認します。

=========================
 はじめに:CentOS7に適しています
 著者:atrandys
 ウェブサイト:www.atrandys.com
 Youtube:発見
=========================
1.システムカーネルをアップグレードします
2.ワイヤーガードをインストールします
3.ワイヤーガードをアップグレードします
4.Wireguardをアンインストールします
5.クライアントのQRコードを表示します
6.ユーザーを増やす
0.スクリプトを終了します

番号を入力してください:6
新しいユーザーに名前を付けます。既存のユーザーと同じにすることはできません。
ユーザー名を入力してください:home

ユーザー名は自分で取得できます。繰り返して区別しないでください。ユーザー名を入力した後、Enterキーを押すことを忘れないでください

実行が成功すると、対応するクライアント構成ファイル/ etc / wirguard /ディレクトリにあります(home.confなど)

再度実行してcompany.confファイルを生成します。

home.confファイルとcompany.confファイルをそれぞれ自宅と会社のオフィスのコンピューターにコピーします。自宅と会社のコンピューターはWindowsシステムです。通常のソフトウェアをインストールするのと同じように、対応するインストールパッケージをダウンロードしてインストールします。インストール後、それを開き、クライアント構成ファイルをインポートして、[アクティブ化]をクリックします。

オフィスのコンピューターで実行できます:

ping 10.0.0.1 

pingできる場合は、ネットワークが成功していることを意味します。

次に、自宅のコンピューター(10.0.0.3)を使用して、会社のコンピューター(10.0.0.4)にリモートアクセスできます。特定のIPアドレスは、クライアントが追加される順序に関連しています。対応するクライアント構成ファイルをチェックして、そのIPを判別できます。

[インターフェース]
PrivateKey = aCfyRy96aMx / gLM + SRpnmYWUBGqr + 9bdSLk2OyNK7k8 =
アドレス= 10.0.0.3 / 24
DNS = 114.114.114.114
MTU = 1420

[ピア]

.....。

wirguardをオフラインでインストールする必要がある場合は、対応するrpmファイルを直接ダウンロードするか、yumdownloaderを使用してインターネットに接続できるマシンにrpmファイルをダウンロードできます。

ダウンロード後、wirguard rpmファイルが配置されているディレクトリに入り、次のコマンドを実行します。

rpm -ivh * .rpm --nodeps --force

システムが以前にiptables-serviceをインストールしていない場合は、対応するrpmフォルダーに入り、上記のコマンドを実行してインストールする必要があります。

インストールが成功したら上記のinstall_wireguard.shスクリプトに対応するインストール関数を変更します。

#centos7install wireguardwireguard_install(){#curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel- 7.repo
    #yum install -y dkms gcc-c ++ gcc-gfortran glibc-headers glibc-devel libquadmath-devel libtool systemtap systemtap-devel
    #yum -y install wireguard-dkmswireguard-tools
    #yum -y install qrencode
    #mkdir / etc / wireguard
    cd / etc / wireguard
    wg genkey | ティーsprivatekey | wg pubkey> spublickey
    genkeyによって| ティーcprivatekey | pubkey> cpublickeyによって
    s1 = $(cat sprivatekey)
    s2 = $(cat spublickey)
    c1 = $(cat cprivatekey)
    c2 = $(cat cpublickey)
    serverip = $(curl ipv4.icanhazip.com)
    ポート= $(ランド10000 60000)
    eth = $(ls / sys / class / net | awk '/ ^ e / {print}')
    chmod 777 -R / etc / wireguard
    systemctl stopfirewalld
    systemctl disable Firewalld#yum install -y iptables-services 
    systemctl enable iptables 
    systemctl start iptables 
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -F
    service iptables save
    service iptables restart echo 1> / proc / sys / net / ipv4 / ip_forward echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
    sysctl -p

つまり、インターネットを必要とするすべての操作がコメント化されています。次に、スクリプトを実行し、[2:wireguardをインストールする]を選択します。クライアントを追加する方法はAlibabaCloudサーバーの場合と同じなので、繰り返しません。

これを見て、すべてが順調に進み、強制オフラインインストールはまだ反映されいませんこれは、オフラインインストールエクスペリエンスについて言及しています。システムバージョンもCentos7ですが、カーネルバージョンは3.10.0-862です。バージョン番号の末尾にわずかな違いがあることを除いて、基本的に会社のAlibaba Cloudサーバーカーネルバージョンと同じですが、わずかな違いですが、インストールは失敗します。上記の方法でwgをオフラインでインストールした後、systemctl status wg-quick @ wg0を使用して、実行の失敗確認します。wg-quick up wg0を使用して、wgレポート開始します。

#sudowg-クイックアップwg0

[#] ip link add wg0 typewireguard

インターフェイスにアクセスできません:プロトコルはサポートされていません

[#] ip link delete dev wg0

デバイス「wg0」が見つかりません

エラーメッセージを検索する際の問題のほとんどは、カーネルをアップグレードすることで解決されますが、現在の環境と時間では、カーネルをアップグレードすることはできません。探索を続け、dkmsビルドを使用してwireguardを再コンパイルしてインストールする必要があります。

dkmsビルドwirguard / 1.0.20210219-1 

エラーが報告されました。エラーメッセージによると、socket.cファイルにエラーがあります。対応するソースファイルに対応するコード行を見つけてください。出張の機能はipv6に関連していることがわかりました。幸い、ipv6を使用せず、エラーコードを直接コメントアウトしました。

dkmsビルドを再度正常に実行してください!そして、実行します

dkms install wirguard / 1.0.20210219-1 

wgを実行します-wg0をもう一度クイックアップしてwg開始すると、成功します!!!


おすすめ

転載: blog.51cto.com/14256460/2661075