Điểm:0

Buộc quy trình mới sử dụng giao diện mạng cụ thể (sử dụng không gian tên mạng/netns)

lá cờ cn

Tôi có sẵn một số giao diện trên máy Ubuntu 20.04. Trong số những người khác enx0c5b8f279a64usb0 với cái sau được sử dụng làm cái mặc định. Tôi muốn đảm bảo rằng một quy trình cụ thể được bắt đầu trong thiết bị đầu cuối sẽ chỉ sử dụng một trong các giao diện này (giả sử enx0c5b8f279a64 ngay cả khi giao diện khác là mặc định). Nếu quá trình này được bắt đầu và được chọn enx0c5b8f279a64 giao diện không hoạt động, thậm chí không nên cố gắng sử dụng bất kỳ giao diện nào khác làm dự phòng (như thể các giao diện khác thậm chí sẽ không tồn tại từ quan điểm của quá trình này).

tôi nghĩ vậy mạng ip là cách để đi, nhưng tôi gặp khó khăn khi triển khai bất kỳ giải pháp hiệu quả nào. Tôi đã thử https://superuser.com/a/750412 tuy nhiên tôi đang nhận được Máy chủ đích không thể truy cập nếu tôi cố gắng ping 8.8.8.8 :(

Phần liên quan của ip a s đầu ra:

 9: enx0c5b8f279a64: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc trạng thái fq_codel UP nhóm mặc định qlen 1000
     liên kết/ether 12:12:12:12:12:12 brd ff:ff:ff:ff:ff:ff
     inet 192.168.7.100/24 ​​brd 192.168.7.255 phạm vi toàn cầu động noprefixroute enx0c5b8f279a64
        hợp lệ_lft 84611sec ưa thích_lft 84611sec
     inet6 2323::2323:2323:2323:2323/64 liên kết phạm vi noprefixroute 
        hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
 10: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 trạng thái qdisc fq_codel nhóm UNKNOWN mặc định qlen 1000
     liên kết/ether 34:34:34:34:34:34 brd ff:ff:ff:ff:ff:ff
     inet 192.168.42.**47**/24 brd 192.168.42.255 phạm vi toàn cầu động noprefixroute usb0
        hợp lệ_lft 1858 giây ưa thích_lft 1858 giây
     inet6 4545:454:545:4545:454:5454:5454:5454/64 phạm vi toàn cầu động tạm thời không dùng nữa 
        hợp lệ_lft 2461 giây ưa thích_lft 0 giây
     inet6 5656:565:656:5656:5656:5656:5656:5656/64 phạm vi toàn cầu động mngtmpaddr noprefixroute không dùng nữa 
        hợp lệ_lft 2461 giây ưa thích_lft 0 giây
     inet6 6767::6767:6767:6767:6767/64 liên kết phạm vi noprefixroute 
        hợp lệ_lft mãi mãi ưa thích_lft mãi mãi

và bảng lộ trình:

 tuyến đường -n
 Bảng định tuyến IP hạt nhân
 Cổng đích Genmask Flag Metric Ref Sử dụng Iface
 0.0.0.0 192.168.7.1 0.0.0.0 UG 100 0 0 enx0c5b8f279a64
 0.0.0.0 192.168.42.129 0.0.0.0 UG 101 0 0 usb0
 192.168.7.0 0.0.0.0 255.255.255.0 U 100 0 0 enx0c5b8f279a64
 192.168.42.0 0.0.0.0 255.255.255.0 U 101 0 0 usb0

Cho đến nay, tất cả các giải pháp mà tôi đã thử bắt đầu theo cách tương tự:

# tạo không gian tên
sudo ip netns add nspace0
# tạo đường link
Sudo ip link thêm veth0 gõ veth tên ngang hàng veth1
# di chuyển liên kết
Sudo ip link set veth1 netns nspace0

# LÀM MỘT SỐ PHÉP THUẬT 
# (không có giải pháp nào mà tôi đã cố gắng điều chỉnh ở đây hiệu quả với tôi cho đến nay).
...

# chạy tiến trình trong không gian tên (ở đây tôi sử dụng curl làm ví dụ) 
sudo ip netns exec nspace0 curl ifconfig.me/ip

Nhưng vấn đề là MA THUẬT phần. Tôi đã thấy một số cách tiếp cận với cầu nối và các giải pháp chuyển tiếp ip khác. Thật không may, không có cái nào trong số này hoạt động với tôi cho đến nay và tôi không thành thạo về mạng để có thể chẩn đoán và khắc phục.

Điểm:1
lá cờ cn

It seems to work with the following script. An extra feature that was not present in my original question is how to keep the interface in both main and new namespaces (but I will deal with that later). Following is quite descriptive solution based on the information provided in: here, here, here, here, here and here.

# Save default settings to files for a handy reference
ip addr > log_000.ip_addr.txt
ip link > log_000.ip_link.txt
ip route > log_000.ip_route.txt
route -n > log_000.route_n.txt

# Interfaces
INTERFACE_0="usb0"
INTERFACE_1="enx0c5b8f279a64"

# Collect information on current configuration
PUBL_IP=$(curl --silent ifconfig.me/ip)
INTERFACE_0_PUBL_IP=$(curl --silent --interface ${INTERFACE_0} ifconfig.me/ip)
INTERFACE_1_PUBL_IP=$(curl --silent --interface ${INTERFACE_1} ifconfig.me/ip)

INTERFACE_0_PRIV_IP=$(ip a show ${INTERFACE_0} | awk '/inet / {print $2}')
INTERFACE_1_PRIV_IP=$(ip a show ${INTERFACE_1} | awk '/inet / {print $2}')

INTERFACE_0_GATE=$(ip route show dev ${INTERFACE_0} | awk '/default via/ {print $3}')
INTERFACE_1_GATE=$(ip route show dev ${INTERFACE_1} | awk '/default via/ {print $3}')

echo "" > log_001.IPs.txt
echo "PUBL_IP: ${PUBL_IP}"                          >> log_001.IPs.txt
echo "============================================" >> log_001.IPs.txt
echo "INTERFACE_0_PUBL_IP: ${INTERFACE_0_PUBL_IP}"  >> log_001.IPs.txt
echo "INTERFACE_0_PRIV_IP: ${INTERFACE_0_PRIV_IP}"  >> log_001.IPs.txt
echo "INTERFACE_0_GATE: ${INTERFACE_0_GATE}"        >> log_001.IPs.txt
echo "============================================" >> log_001.IPs.txt
echo "INTERFACE_1_PUBL_IP: ${INTERFACE_1_PUBL_IP}"  >> log_001.IPs.txt
echo "INTERFACE_1_PRIV_IP: ${INTERFACE_1_PRIV_IP}"  >> log_001.IPs.txt
echo "INTERFACE_1_GATE: ${INTERFACE_1_GATE}"        >> log_001.IPs.txt
cat log_001.IPs.txt

NAMESPACE_1="ns1"

# SETUP: Create new namespace.
sudo ip netns add ${NAMESPACE_1}

# CHECKUP: Verify that the namesapce was created.
sudo ip netns list

# CHECKUP: List interfaces in the main and new namespace
ip addr show
sudo ip netns exec ${NAMESPACE_1} ip addr show

# SETUP: Link (move) interface to namespace.
# NB this interface will not be availabie in the main (default) namespace anymoe.
sudo ip link set ${INTERFACE_1} netns ${NAMESPACE_1}

# CHECKUP: verify that the interface was moved from main to new namespace.
ip addr show
sudo ip netns exec ${NAMESPACE_1} ip addr show

# SETUP: Set interface IP address in new namespace and bring it up.
# TODO: Check it the address must be the as it was in the main namespace.
sudo ip netns exec ${NAMESPACE_1} ifconfig ${INTERFACE_1} ${INTERFACE_1_PRIV_IP} up

# SETUP: Bring up the loopback interface (as it may be needed by processes run in new namespace).
sudo ip netns exec ${NAMESPACE_1} ifconfig lo 127.0.0.1/8 up

# CHECKUP: List interfaces (loopback and INTERFACE_1) in the new namespace
sudo ip netns exec ${NAMESPACE_1} ip addr show

# CHECKUP: Verify route table.
sudo ip netns exec ${NAMESPACE_1} route -n

# SETUP: Add default gateway to route in new namespace.
sudo ip netns exec ${NAMESPACE_1} route add default gw 192.168.7.1

# CHECKUP: Verify route table again.
sudo ip netns exec ${NAMESPACE_1} route -n

# DONE: Use new namesapce.
sudo ip netns exec ${NAMESPACE_1} ping 8.8.8.8
sudo ip netns exec ${NAMESPACE_1} traceroute 8.8.8.8

# SETUP: Fix DNS
sudo mkdir -pv /etc/netns/${NAMESPACE_1}
sudo echo "nameserver 8.8.8.8" > /etc/netns/${NAMESPACE_1}/resolv.conf


sudo ip netns exec ${NAMESPACE_1} curl ifconfig.me/ip
sudo ip netns exec ${NAMESPACE_1} curl --silent ifconfig.me/ip

# EXTRA: Undo changes (revert to the original state of IP settings)
sudo ip netns del ${NAMESPACE_1}

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.