時々、人々は会社にいなくて、一時的に物事を処理するために会社のコンピュータをリモートにする必要があります。会社のコンピュータはイントラネット上にあり、自宅から直接アクセスすることはできません。通常、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を開始すると、成功します!!!