質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

インターフェース

インターフェイスという用語はハードウェア・ソフトウェアの両方に使うことができます。 一般的に、インターフェイスは内部処理の詳細を見せないように設定されます。オブジェクト指向プログラミングにおいて、インターフェイスはabstractクラスとして定義されます。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Q&A

解決済

2回答

1848閲覧

同一インターフェース上の2つのIPアドレス間のポートフォワーディング

cupnew1988

総合スコア20

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

インターフェース

インターフェイスという用語はハードウェア・ソフトウェアの両方に使うことができます。 一般的に、インターフェイスは内部処理の詳細を見せないように設定されます。オブジェクト指向プログラミングにおいて、インターフェイスはabstractクラスとして定義されます。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

0グッド

0クリップ

投稿2022/02/14 01:50

編集2022/02/16 14:39

VLAN等の無い普通のハブに異なるIPセグメントのマシンとUbuntu機を接続し
そのUbuntu機の1つのLANポートに2つのIPアドレスを割り振って
その間でNATやポートフォワーディングを行う方法はありませんか。
(※稼働中の環境のため、各マシンのIPアドレスは変更できません・・・)

<例>
Ubuntu機 192.168.1.1/24, 192.168.101.1/24
マシン1 192.168.1.10/24
マシン2 192.168.101.10/24

Ubuntu機にネットワークインターフェースを追加できれば
iptablesなどで中継させることはできますが、
単純なインターフェースのエイリアスでIPを割り振る方法では
NATやポートフォワーディングはできないと思うので、
何か方策はないかと。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaichiYanagiya

2022/02/14 07:06

マシン1 にルーティング 192.168.101.0/24→192.168.1.1 を、 マシン2 にルーティング 192.168.1.0/24→192.168.101.1 を設定できれば、 net.ipv4.ip_forward=1 でいけないでしょうか?
cupnew1988

2022/02/15 04:43

返答遅くなりました。 少し特殊な環境でして、 マシン1のセグメントには多数の機器が存在しており その先にはマシン2と同一のサブネットがある可能性もあるので 安易にルーティングは変更できない状況です、 またマシン1は稼働中の機器なので一切変更ができず、 唯一設定変更可能な貧弱なLinux機で中継させ NATによるフォワーディングでマシン2系からマシン1系を 遠隔保守する方法を検討しています。 (※マシン1の設定を変更できれば何てことないのですが・・・)
TaichiYanagiya

2022/02/15 09:12

> マシン1は稼働中の機器なので一切変更ができず、 であれば、マシン1→マシン2 宛のパケットはデフォルトゲートウェイに送られて、Ubuntu機に届かないのでは? > マシン2系からマシン1系を遠隔保守する方法を検討しています。 全通信ではなく、特定のポート、プロトコルのみであれば、やりようはあると思います。 例えば、TCP と仮定すると、マシン2→Ubuntu機に SSHトンネル(LocalForward)とか、Ubuntu機でプロキシプログラム(inetd/xinetd, Nginx stream モジュールなど)を稼働させるとか。
cupnew1988

2022/02/16 02:15 編集

受け側のマシン1は変更不可なので、ルーティングやSSHなど設定を変える対応はできない環境なのです。。。 iptablesによるポートフォワーディングを正しく設定すれば転送先マシンに特別なルーティングを定義しなくても転送元にパケットは返ります。 現状で、LANコネクタ2つ ubuntu機によるポートフォワーディングで転送は既に問題なくできていますが、訳あって、LANコネクタ1つのマシンで対応することになり、手だてを考えているところです。 質問しているのは、「1つのインターフェース」でポートフォワーディングする方法についてです。
guest

回答2

0

「1つのインターフェース」でポートフォワーディングする方法についてです。

iptables では実現できないと思います。

iptables にこだわらなくていいのですよね?
例えば、マシン2 からマシン1 の TCP 10000 番ポートに接続する方法として、以下の方法が考えられます。
いずれもマシン1 からは、Ubuntu機から 10000 番ポートに接続されたように見えます。

方法1: SSH ポートフォワード

マシン2 のコマンドプロンプトやシェルから ssh コマンドが利用できるのであれば、SSH ポートフォワードを利用できます。

(1) マシン2 から Ubuntu機に SSHトンネル(LocalForward)を作成

[マシン2]$ ssh -f -N -L 20000:192.168.1.10:100000 (Ubuntu機ユーザー)@192.168.101.1

※このプロセスは自動では終了しません。不要になったら kill コマンドなどで停止させる必要があります。

(2) マシン2 から 127.0.0.1:20000 番ポートにアクセス

方法2: xinetd redirect

(1) Ubuntu機に xinetd をインストール
(2) 設定ファイル(/etc/xinetd.d/redirect-machine1)を作成

service redirect-machine1 { disable = no type = UNLISTED socket_type = stream wait = no user = root port = 20000 redirect = 192.168.1.10 10000 }

(3) xinetd を起動
(4) マシン2 から Ubuntu機の 20000 番ポートにアクセス

方法1,2 とも Listen するポート番号(例では 20000)は、使われていないものであれば何番でもいいです。

投稿2022/02/16 05:38

TaichiYanagiya

総合スコア12141

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

てっきり物理インターフェースでないとiptablesの転送は動作しないと思い込んでいましたが、
ufw(iptables)の設定を少し変更してテスト環境で動作確認すると、
エイリアスな論理インターフェースでも同じような設定で動作しました。

<例>以下の環境で、マシン2からマシン1へのhttps接続をポート9443で行うケース
マシン1  192.168.1.10
↑443

中継用   192.168.1.1
ubuntu機  192.168.101.1
↑9443

マシン2  192.168.101.10

■ネットワークインターフェースが2つある場合(現状)
eth0: 192.168.1.1
eth1: 192.168.101.1

マシン2からubuntu機192.168.101.1 宛てのhttpsを ポート9443 でマシン1へ転送する設定

/etc/ufw/before.rules -A PREROUTING -i eth1 -p tcp --dport 9443 -j DNAT --to-destination 192.168.1.10:443

■ネットワークインターフェースが1つの場合

#IPエイリアスで eth0: 192.168.1.1 にエイリアスなIPアドレスを追加する ip addr add 192.168.101.1/24 dev eth0 label eth0:1 -->eth0: 192.168.1.1 -->eth0:1 192.168.101.1 /etc/ufw/before.rules #転送元は念のため IPアドレス指定に変更しています。 -A PREROUTING -d 192.168.101.1 -p tcp --dport 9443 -j DNAT --to-destination 192.168.1.10:443

ちゃんと確かめてから質問するようにします。。。。
お騒がせしました。

投稿2022/02/16 05:04

cupnew1988

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaichiYanagiya

2022/02/16 05:39

あ、インターフェース 1つでもできるのですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問