ルータに接続されているデバイスがデスクトップ経由で接続されたデバイスにSSHで接続できるようにdnsmasqをどのように設定しますか?

ルータに接続されているデバイスがデスクトップ経由で接続されたデバイスにSSHで接続できるようにdnsmasqをどのように設定しますか?

私は自分のデバイスを物理的に隣に置いて作業速度を上げるためにいくつかの設定を試しています。そのため、家の中で寒い場所にあるルーターの隣に座ってFTP経由でファイルを送信したり、SSHを実行する必要はありません。ヘッドレスサーバー共通機能。私の最初の解決策は、私が見つけたPCIイーサネットカードを使用して、そのカードをコンピュータAに接続し、コンピュータを物理的に一緒に接続してから従うことでした。この記事マシンBがマシンAを介してネットワークにアクセスできるようにします。

結論として:

マシンAは2つのイーサネットポートを持つデスクトップで、IPアドレスはネットワーク上にあります。192.168.1.9

マシンBは1つのイーサネットポート、私のターゲット、IPアドレスを持つラップトップです。192.168.2.193

BがA経由でインターネットにアクセスできるようにdnsmasqを正しく設定するための指示に従いました。これまでBにSSHで接続できる唯一の方法は、AのIPを介してトンネルを確立し、「内部」ポート22アドレスを転送することです。192.168.2.193

マシンBは外部ネットワークにアクセスでき、インターネットは正常に動作します。

私のSSHコマンド: ssh -L 8080:192.168.2.193:22 [email protected] -N

追加情報が必要な場合は、この問題を解決するために必要な追加情報を提供できます。

編集する

マシンAの提案された入力でiptablesが更新されました。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
val_input  tcp  --  anywhere             anywhere
ACCEPT     udp  --  192.168.2.0/24       anywhere             multiport dports bootps,bootpc /* dhcp */
ACCEPT     tcp  --  192.168.2.0/24       anywhere             tcp dpt:domain /* dns-tcp */
ACCEPT     udp  --  192.168.2.0/24       anywhere             udp dpt:domain /* dns-udp */

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain val_input (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere             state NEW,RELATED,ESTABLISHED
RETURN     all  --  anywhere             anywhere             state NEW,RELATED,ESTABLISHED
RETURN     all  --  anywhere             anywhere             state NEW,RELATED,ESTABLISHED
DROP       all  --  anywhere             anywhere

Chain bal_output (0 references)
target     prot opt source               destination

編集2ip aマシン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: enp1s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:08:54:3d:e8:fd brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.1/24 brd 192.168.2.255 scope global enp1s5
       valid_lft forever preferred_lft forever
    inet 192.168.2.1/32 scope global enp1s5
       valid_lft forever preferred_lft forever
    inet6 fe80::208:54ff:fe3d:e8fd/64 scope link
       valid_lft forever preferred_lft forever
3: enp1s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 00:1e:90:78:9a:97 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.9/24 brd 192.168.1.255 scope global enp1s8
       valid_lft forever preferred_lft forever
    inet6 fe80::21e:90ff:fe78:9a97/64 scope link
       valid_lft forever preferred_lft forever

編集3ifconfigマシンBの出力

[jaz@Jaz-Jackson ~]$ ifconfig

........

ens5f5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.193  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::1a0f:d7d2:b678:665f  prefixlen 64  scopeid 0x20<link>
        ether 20:cf:30:71:b2:7e  txqueuelen 1000  (Ethernet)
        RX packets 379032  bytes 142855672 (136.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 510236  bytes 65400716 (62.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 32

......

ベストアンサー1

マシンAをルーターに変えることについて話しています。 DNSMasqは、ルータがIPアドレスをDHCPクライアントに展開してネームサーバーを提供できるようにするための便利なコンポーネントです。しかし、これだけでは十分ではありません。

  1. カーネルでパケット転送を有効にする必要があります。sysctl net.ipv4.ip_forward=1sudo などの root 権限で実行します。たとえば、「routing.conf」というファイルなど、net.ipv4.ip_forward=1下の場所に配置して永久に作成します。/etc/sysctl.d/を実行して現在の値を確認できますsysctl net.ipv4.ip_forward

  2. 迷彩とも呼ばれるNAT(Network Address Translation)が必要です。 iptablesを使用する場合は、上部に次のセクションが必要です(発信インターフェイス用enps1s8)。

    *nat
    :PREROUTING     ACCEPT  [0:0]
    :INPUT          ACCEPT  [0:0]
    :OUTPUT         ACCEPT  [0:0]
    :POSTROUTING    ACCEPT  [0:0]
    
    -A POSTROUTING  -o enp1s8 -j MASQUERADE
    
    COMMIT
    
  3. カーネルで転送を有効にしてNATを設定することに加えて、ファイアウォールにパケット転送要求を受け入れるように指示する必要があるため、iptablesには次の規則がいくつかあります。

    # Forward between client LAN and external WAN
    -A FORWARD                                            -i enp1s5 -o enp1s8 -j ACCEPT
    -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -i enp1s8 -o enp1s5 -j ACCEPT
    
  4. 最後に、パケットのルーティング方法に関するルールを開発する必要があります。ファイアウォールの問題ではありませんが、iproute2を使用します。これをスクリプトに入れると便利です。

    $ cat /usr/local/sbin/add-lan-route
    #! /usr/bin/ip -b
    
    addr add 192.168.2.1 dev enp1s5
    route add 192.168.2.1/24 via 192.168.2.1 dev enp1s5
    
  5. マシンB(ノートブック)もマシンA(デスクトップ)のdnsmasqと通信したいと思います。したがって、必要なポートを開くには、より多くのiptablesルールが必要です。仕事を体系的に維持するには、このための「チェーン」を設定することをお勧めしますが、iptablesに自分がいない場合は、必要なものを得るための最も直接的な方法は次のとおりです。

    -A INPUT -p udp -s 192.168.2.0/24 -m multiport --dports 67,68 -m comment --comment "dhcp"    -j ACCEPT
    -A INPUT -p tcp -s 192.168.2.0/24              --dport  53    -m comment --comment "dns-tcp" -j ACCEPT
    -A INPUT -p udp -s 192.168.2.0/24              --dport  53    -m comment --comment "dns-udp" -j ACCEPT
    
  6. 最後に、マシンBのdhcpクライアントがマシンAのdnsmasqによって配布できる正しいIPアドレスを取得したいと思います。デフォルトの dnsmasq 構成は次のとおりです。

    interface=enp1s5
    dhcp-range=192.168.2.2,192.168.2.254,255.255.255.0,1h
    dhcp-host=20:cf:30:71:b2:7e,192.168.2.193,1h
    cache-size=2048
    

キャッシュサイズは重要ではなく、変更または削除できる提案です。残りはenp1s5に接続されているすべてのエントリがIPアドレスを要求することを許可し、マシンBのMACの場合はデフォルトのIPアドレスを取得します。考慮すべき説明が多いので、デフォルトのdnsmasq構成も確認する必要があります。

これらの手順をすべて完了したら、マシンAがルータとして機能し、マシンBにネームサービスとIPアドレスを付与し、enp1s8を介してインターネット接続をNATできるようにする必要があります。

おすすめ記事