라우터에 연결된 장치가 데스크톱을 통해 연결된 장치에 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와 같은 루트 권한으로 실행합니다. 예를 들어 "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할 수 있도록 해야 합니다.

관련 정보