헤드리스 서버에 이것을 설정하려고 하는데 통과 br0
하겠습니다 .eth0
veth1
ssh
특별한 네임스페이스에서 systemd 서비스를 실행하기 위한 준비로 이 작업을 수행합니다. 이 네임스페이스에는 가상 장치가 있는 피어가 엔드포인트로 있습니다 veth2
.
이 프로세스에 대한 정적 경로를 설정해야 합니다. 내 경우에는 vpn
다른 모든 트래픽이 표준 게이트웨이로 이동하는 동안 잠시 동안 패킷을 라우팅합니다 .
이것이 어떻게 작동하는지 파악하기 위해 ssh
서버 연결이 중단되지 않을 정도로 빠르게 실행되는 작은 스크립트를 작성했습니다. 그러면 나는 traceroute
성공할 수 있다 veth2
. 서버에는 장치가 하나만 있고 eth
Wi-Fi가 없기 때문에 이 작업을 수행해야 합니다.
내 문제는 스크립트를 실행한 후 서버가 더 이상 인터넷에 액세스할 수 없다는 것입니다. 나는 아마도 여기서 많은 것을 놓치고 있을 것이다. 누구든지 도와줄 수 있나요?
내 스크립트:
pi@testpi:~ $ cat add_bridge_and_veth1.sh
brctl addbr br0;
ip addr del 192.168.100.222/24 dev eth0;
ip addr add 192.168.100.222/24 dev br0;
brctl addif br0 eth0;
ip link set dev br0 up;
ip link add name veth1 type veth peer name veth2;
brctl addif br0 veth1;
brctl show;
ip netns add nsben1;
ip link set veth2 netns nsben1;
ip netns exec nsben1 ip addr add 192.168.55.101/24 dev veth2;
ip netns exec nsben1 ip link set lo up;
ip netns exec nsben1 ip link set veth2 up;
기본 네임스페이스에는 이 이후에는 인터넷이 없습니다.
pi@testpi:~ $ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 192.168.100.222 (192.168.100.222) 3085.668 ms !H 3085.488 ms !H 3085.393 ms !H
pi@testpi:~ $ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.100.222 icmp_seq=1 Destination Host Unreachable
편집: 내 기본 설정은 매우 간단합니다. 장치에 따라: eth0
라우터에서 고정 IP를 얻습니다.192.168.100.0/24
MAC
192.168.100.222
pi@testpi:~ $ ip 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether b8:27:eb:98:70:4b brd ff:ff:ff:ff:ff:ff
inet 192.168.100.222/24 brd 192.168.100.255 scope global dynamic noprefixroute eth0
valid_lft 83282sec preferred_lft 72482sec
inet6 fe80::247e:fd3c:36d7:68f5/64 scope link
valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether b8:27:eb:98:70:4b brd ff:ff:ff:ff:ff:ff
inet 192.168.100.222/24 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::ba27:ebff:fe98:704b/64 scope link
valid_lft forever preferred_lft forever
5: veth1@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP group default qlen 1000
link/ether e2:bc:58:01:67:92 brd ff:ff:ff:ff:ff:ff link-netns nsben1
inet 169.254.205.121/16 brd 169.254.255.255 scope global noprefixroute veth1
valid_lft forever preferred_lft forever
inet6 fe80::db71:b4e9:c60f:5865/64 scope link
valid_lft forever preferred_lft forever
인터넷은 없지만 nsben1
그것은 아직 나의 주요 관심사는 아닙니다. 나는 먼저 모든 것이 기본 네임스페이스에서 작동하도록 하고 싶었습니다.
root@testpi:~# ip netns exec nsben1 ping 8.8.8.8
connect: Network is unreachable
ip route
다음은 기본값과 네임스페이스에 대한 출력입니다 nsben1
. 인터넷 검색 결과 Network is unreachable
에 따르면 기본 네임스페이스에는 접근할 수 없는 것 같습니다 . nsben1
이것이 반드시 문제가 있다는 것을 의미하지는 않지만 nsben1
, 그것조차도 현재로서는 주요 문제는 아닙니다.
root@testpi:~# ip route
192.168.55.0/24 dev veth2 proto kernel scope link src 192.168.55.101
root@testpi:~# ip route get 8.8.8.8
RTNETLINK answers: Network is unreachable
root@testpi:~# ip netns exec nsben1 ip route
192.168.55.0/24 dev veth2 proto kernel scope link src 192.168.55.101
root@testpi:~# ip netns exec nsben1 ip route get 8.8.8.8
RTNETLINK answers: Network is unreachable
완전성을 ip a
위해 nsben1
:
root@testpi:~# ip netns exec nsben1 ip 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
4: veth2@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 92:31:7e:0f:89:9d brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 192.168.55.101/24 scope global veth2
valid_lft forever preferred_lft forever
inet6 fe80::9031:7eff:fe0f:899d/64 scope link
valid_lft forever preferred_lft forever
@berndbaumch의 접근 방식을 시도했습니다.처음 5개 명령만 실행
brctl addbr br0;
ip addr del 192.168.100.222/24 dev eth0;
ip addr add 192.168.100.222/24 dev br0;
brctl addif br0 eth0;
ip link set dev br0 up;
스크립트에서. 이 작업을 수행하면 다음과 같은 출력이 표시되며 여전히 동일한 IP를 갖고 있는데 br0
이는 eth0
틀릴 수 있습니다.
pi@testpi:~ $ sudo ./add_bridge.sh
pi@testpi:~ $ ip route
192.168.100.0/24 dev br0 proto kernel scope link src 192.168.100.222
pi@testpi:~ $ ip 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether b8:27:eb:98:70:4b brd ff:ff:ff:ff:ff:ff
inet 192.168.100.222/24 brd 192.168.100.255 scope global dynamic noprefixroute eth0
valid_lft 86389sec preferred_lft 75589sec
inet6 fe80::247e:fd3c:36d7:68f5/64 scope link
valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether b8:27:eb:98:70:4b brd ff:ff:ff:ff:ff:ff
inet 192.168.100.222/24 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::ba27:ebff:fe98:704b/64 scope link
valid_lft forever preferred_lft forever
그런 다음 다음과 같이 추가된 스크립트를 실행하려고 합니다 ip link set dev eth0 down;
.up
ip link set dev eth0 down;
brctl addif br0 eth0;
ip link set dev eth up;
당연히 연락이 끊겼어요 ssh
. 어쩌면 연결하려는 IP와 eth0
동일한 IP를 갖는 것이 정상일 수도 있습니다. br0
그렇지 않은 경우 해당 IP를 사용했는데 왜 제거되지 않았나요?ip addr del 192.168.100.222/24 dev eth0;
답변1
macvlan
veth-pair 및 브리지 대신 네트워크 네임스페이스에서 a를 사용하는 것을 고려하십시오 . 효과는 동일하지만 설정이 더 간단하고 효율적입니다.둘 다 같은 다리
192.168.100.*/24
에서 매우 잘못된 모습을 보입니다.192.168.55.*/24
일반적인 네트워크 설정에 대해 아무 것도 알려주지 않았지만 모든 장치를 연결하는 네트워크 세그먼트에는하나의IP 범위. 동일한 물리적 회선에 서로 다른 네트워크 세그먼트를 원하는 경우 VLAN을 사용할 수 있습니다.인터페이스를 종료하거나 강제로 닫지 않고 위에서 수행한 작업을 수행할 수 있는지 잘 기억나지 않으므로
veth1
마지막 단계에서도 및 를 설정하십시오. 내 생각엔 그게 문제의 원인인 것 같아.eth0
up
기본 네트워크 네임스페이스에서 "인터넷 없음"이 발생하는지 아니면 둘 다에서 발생하는지 언급하지 않았습니다
nsben1
. 질문을 편집하고 이 정보를 추가하세요.또한 라우팅을 확인하십시오. 나머지 네트워크 설정을 모르고 기본 경로가 무엇인지, 여전히 올바른지 알 수 없습니다. 두 네임스페이스의 합계를 확인하세요
ip route
.ip route get 8.8.8.8
macvlan의 경우 새 macvlan을 생성하고 eth0
이를 기본으로 설정하고 eth0
기본 네트워크 네임스페이스를 유지한 다음 새 macvlan을 새 네임스페이스로 이동합니다. 새 네임스페이스에서는 DHCP 또는 다른 수단을 사용하여 IP 주소를 얻을 수 있으며, 라우팅이 네임스페이스별로 이루어지기 때문에 기본 경로도 다시 설정해야 합니다.