【実践編】ポート転送を使ってクライアントPCからホストPCの「ネットワークプリンタ」から印刷

2022-09-21

2台のPCが接続されているイラスト

2021年9月のWindows Updateの更新プログラムの影響で、職場のクライアントPCから共有プリンターでの印刷ができなくなっていました。

そこまで頻繁に印刷するわけではないのでそのまま放置していましたが、どうしてもカラー印刷が必要になったのでネットワークプリンタへのポート転送で対応した手順です。

ネットワーク構成

構成図

職場の都合で、クライアントPCから直接インターネットに繋がっていません。

おかげで、クライアントPCにWindows Updateを適応すれば解決できるのですが、いまだに不具合が起きたままになっています。

かといって、ホストPCはインターネットに接続されているためレジストリ変更やロールバックで脆弱性対策を無効にはできません。

解決策

基本的にはルータ越えのプリンタ接続と同じです。

クライアントPCから、ルーターの代わりにホストPC印刷データを送り、ホストPCは受け取ったデータをそのままプリンタに転送して印刷します。

手順

ホストPCのポート転送設定

netsh

netshでポート転送の追加

>netsh interface portproxy add v4tov4 listenaddress=○○○○ listenport=○○○○ connectaddress=○○○○ connectport=○○○○

今回はIPV4しか使っていないので「v4tov4」だけ設定しています。必要があればv6tov6等も追加してください。

listenaddressにはホストPCが待ち受けをするIPアドレス(有線LANのインタフェース:192.168.1.1)、connectaddressは転送先のIPアドレス(プリンタ:192.168.2.9)を入力します。

ポート番号は、今回はRAW印刷のため9100を指定します。

確認

>netsh interface portproxy show v4tov4
ipv4 をリッスンする:       ipv4 に接続する:
Address         Port        Address         Port
--------------- ----------  --------------- ----------
192.168.1.1     9100        192.168.2.9     9100

入力を間違えてもそのまま待ち受けポートになったので、必ず確認する事をおすすめします。

間違えていた時

ipv4 をリッスンする:       ipv4 に接続する:
Address         Port        Address         Port
--------------- ----------  --------------- ----------
192.168.1.1     9100        192.168.2.9     connectport9100

「=」をつけ忘れていたので、一度削除してから追加しなおしました。

参考サイト

ホストPCのWindwosファイアウォール設定

Windowsファイアウォールが許可されていない場合は新規にルールを追加します。

クライアントPCの設定

最初に接続したいプリンターのプリンタドライバをクライアントPCにインストールします。

今回はクライアントPCにインストール済みだったため特に何もしていませんが、必要に応じてインストールしてください。

クライアントPCでネットワークプリンタの設定

手動で設定します。

以上で、単純な方法ですがプリントアウトするだけなら困る事は無くなりました。

注意点

注意点としては、ポートフォワーディングの設定をするWindows PC(ホストPC)から「ネットワーク接続されているプリンター」であればどんなプリンターでも適応できますが、USBケーブル等で「直接接続されている」プリンターでは印刷できないので注意してください。

USBケーブルで接続されているプリンターに対しては、共有プリンターの不具合を解決する必要があります。