내 장치를 물리적으로 서로 옆에 두고 작업 속도를 높이기 위해 몇 가지 설정을 시도하고 있습니다. 그래서 집 안 추운 곳에 있는 라우터 옆에 앉아 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 클라이언트에 배포하고 네임서버를 제공할 수 있도록 하는 유용한 구성 요소입니다. 그러나 이것만으로는 충분하지 않습니다.
커널에서 패킷 전달을 활성화해야 합니다.
sysctl net.ipv4.ip_forward=1
sudo와 같은 루트 권한으로 실행합니다. 예를 들어 "routing.conf"라는 파일과 같이net.ipv4.ip_forward=1
아래 위치 에 배치하여 영구적으로 만듭니다./etc/sysctl.d/
을 실행하여 현재 값을 확인할 수 있습니다sysctl net.ipv4.ip_forward
.위장이라고도 불리는 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
커널에서 전달을 활성화하고 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
마지막으로 패킷 라우팅 방법에 대한 규칙을 개발해야 합니다. 방화벽 문제는 아니지만 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
머신 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
마지막으로, 머신 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할 수 있도록 해야 합니다.